GPU Programming in .Net - Microsoft Accelerator VS OpenCL.net [VS Others]

I am developing a program (in .Net) that has a lot of image processing (like 2D Convolutions, ...) and I want to do them with GPGPU (parallel processing) So I have a choice: Microsoft Accelerator, OpenCL.Net, ... which one is best for me?

Some things that are important to me: speed, compatibility (for example, if the GPU does not support this, what happens?), It's easy to learn, work with both Nvidia and ATI, ...

And I heard that I can create my own function in OpenCL and run it for many array cells, but I don't know if I can do this in Microsoft Accelerator, or I need to work with my functions ...

+4
source share
2 answers

Microsoft Accelerator and OpenCL support both CPU and GPU and are vendor-independent (i.e., they work on both ATI and nVidia cards).

In the case of OpenCL, you will have to install OpenCL separately on user computers (included in nVidia (supports nvidia gpus) and ATI (supports ati gpus and any cpus) drivers downloaded for Intel (cpus support) .can just keep AMD OpenCL.dll bundled with OpenCL is more developed (more features, less bugs): it appeared earlier, is cross-platform and based on existing technologies (CUDA, Brook +). OpenCL allows you to precisely control what you actually doing so it would b Stray but a little more complicated.

Microsoft Accelerator, as I understand it, works on any DirectX-enabled GPU (== any modern GPU) and on any 64-bit processor. It integrates more seamlessly into existing code (without additional files and tons of library calls), but this is bad for performance. MS Accelerator allows you to perform your functions faster (it looks pretty simple), so this may be a good start. But if it does not show excellent performance, you should still give OpenCL a try, it can do better.

So, I would advise you to study OpenCL, since: 1) OpenCL is closer to the GPU hardware architecture, therefore: a) it allows you to achieve better performance, b) you could write more complex code, c) you would learn how everything it works; 2) There is more information / tutorials / hacks on the Internet; 3) This is cross-platform (maybe it will not be a big feature in your case, but still); 4) OpenCL is very similar to CUDA, so you will immediately recognize two technologies related to the GPU.

+2
source

One option is C ++ AMP, with which you can easily migrate from .NET. http://www.danielmoth.com/Blog/NET-Access-To-The-GPU-For-Compute-Purposes.aspx

Greetings

Daniel

+1
source

All Articles