我正在开发一个程序(用.Net),它有很多图像处理(比如2D卷积,...)我想用GPGPU (并行处理)来实现它们,所以,我有几个选择:微软加速器,OpenCL.Net,...哪一个对我更好?
一些对我来说很重要的事情:速度,兼容性(例如,如果GPU不支持,会发生什么?),易学,同时使用Nvidia和ATI,...
我听说我可以在OpenCL中创建自己的函数,并为许多数组单元运行它,但我不知道我是否可以在微软加速器中做到这一点,或者我必须使用它的函数……
发布于 2011-09-13 23:37:49
微软加速器和OpenCL同时支持中央处理器和图形处理器,并且独立于供应商(即在ATI卡和nVidia卡上运行)。
对于OpenCL,您必须将OpenCL单独安装到用户计算机(包含在nVidia (支持nvidia的gpus)和ATI (支持ati gpus和任何cpus)驱动程序中,可从英特尔(支持cpus)下载)。然而,你可以将AMD的OpenCL.dll与你的软件捆绑在一起,作为CPU- just使用。OpenCL更成熟(功能更多,错误更少):它出现得更早,是跨平台的,基于现有的技术(CUDA,Brook+)。OpenCL允许你很好地控制你实际做了什么,所以它更快,但有一点困难。
据我所知,微软加速器可以在任何支持DirectX的图形处理器(==任何现代图形处理器)和任何64位处理器上运行。它可以更顺利地集成到现有代码中(没有额外的文件和大量的库调用),但这对性能并不好。MS Accelerator将允许您更快地实现您的功能(它看起来非常简单),因此这可能是一个好的开始。但如果它没有表现出很好的性能,你仍然应该尝试一下OpenCL,它可以做得更好。
因此,我建议你学习OpenCL,因为: 1) OpenCL更接近图形处理器的硬件架构,所以a)它可以让你实现更好的性能,b)你可以写更复杂的代码,c)你会了解到它是如何工作的;2)互联网上有更多的信息/教程/技巧;3)它是跨平台的(在你的情况下可能不是很好的功能,但仍然);4) OpenCL非常类似于CUDA,所以你可以同时学习两种与图形处理器相关的技术。
发布于 2011-12-03 07:11:41
一个选项是C++ AMP,您可以轻松地从.NET http://www.danielmoth.com/Blog/NET-Access-To-The-GPU-For-Compute-Purposes.aspx与其进行互操作
干杯
丹尼尔
https://stackoverflow.com/questions/7402983
复制相似问题