是否有可能在F sharp下使用CUDA编写GPU应用程序?

Mar*_*tin 9 .net f# cuda gpu-programming

我有兴趣使用F#进行数值计算.如何在F#下使用NVIDIA的CUDA标准访问GPU?

Tom*_*cek 7

我同意jasper的观点,目前最简单的选择是使用Microsoft Research的Accelerator.我写了一系列关于使用F#的文章.一个简单而直接的介绍,生命游戏示例,使用引文的高级示例使用高级报价功能的示例.Satnam Singh的博客也是一个很好的资源,有一些F#演示.

当前显卡的一个问题是它们不支持整数(因此,只有在使用优化的x64并行引擎运行时,Accelerator才支持它们).此外,目前的显卡并没有根据IEEE标准来改变浮点数 - 它们试图通过做一些"猜测"来加快速度,这在计算三角形位置时无关紧要,但如果你有问题可能会成为问题正在处理财务计算.(加速器可以使用各种目标,因此如果您使用的是x64并行引擎,那么您将是安全的).

据我所知,DirectCompute将需要精确实现浮点算术以及对整数的直接支持,因此这可能是未来的一个很好的选择(或者如果Accelerator最终开始使用DirectCompute作为它们的引擎).

  • 我可以向您保证,所有Dx10和Dx11代都支持32位整数精度.最新的Dx11 gen(AMD/ATI和NVIDIA都支持IEEE 754-2008)意味着融合乘法和所有奇特的东西. (4认同)

Str*_*ger 6

可能只有像我这样的硬核GPU极客才听说过它.Tidepowerd - 死链接使GPGPU成为基于CIL的语言(例如F#,C#,VB.NET等).另一方面,您可以使用Quotation-to-GPU运行时/ API(期待有人实现该功能)来为单一F#语言执行相同的操作.这是特工史密斯所喋喋不休的事情,或者在F#expert 1.0 book(Language Oriented Programming chapter)AFAIK中也提到过.

特工史密斯(好的,对不起)正在谈论NVIDIA Cg.但是你可以使用HLSL DirectCompute着色器或OpenCL C99 .. PTX(低级别NVIDIA IL),CAL-IL(低级别AMD/ATI IL)......


Joh*_*han 5

作为替代方案,您可以考虑使用DirectCompute.三大GPU API:CUDA,OpenCL和DirectCompute都非常相似.可以通过SlimDX轻松地从F#访问DirectCompute,SlimDX是DirectX的.NET包装器.


jas*_*per 3

MS 的加速器允许您利用 GPU,因此可以执行类似的操作,尽管您不能使用 CUDA。