Mar*_*tin 9 .net f# cuda gpu-programming
我有兴趣使用F#进行数值计算.如何在F#下使用NVIDIA的CUDA标准访问GPU?
我同意jasper的观点,目前最简单的选择是使用Microsoft Research的Accelerator.我写了一系列关于使用F#的文章.一个简单而直接的介绍,生命游戏示例,使用引文的更高级示例和使用高级报价功能的示例.Satnam Singh的博客也是一个很好的资源,有一些F#演示.
当前显卡的一个问题是它们不支持整数(因此,只有在使用优化的x64并行引擎运行时,Accelerator才支持它们).此外,目前的显卡并没有根据IEEE标准来改变浮点数 - 它们试图通过做一些"猜测"来加快速度,这在计算三角形位置时无关紧要,但如果你有问题可能会成为问题正在处理财务计算.(加速器可以使用各种目标,因此如果您使用的是x64并行引擎,那么您将是安全的).
据我所知,DirectCompute将需要精确实现浮点算术以及对整数的直接支持,因此这可能是未来的一个很好的选择(或者如果Accelerator最终开始使用DirectCompute作为它们的引擎).
可能只有像我这样的硬核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)......
作为替代方案,您可以考虑使用DirectCompute.三大GPU API:CUDA,OpenCL和DirectCompute都非常相似.可以通过SlimDX轻松地从F#访问DirectCompute,SlimDX是DirectX的.NET包装器.