我对使用F#进行数值计算很感兴趣。如何在F#下使用英伟达的CUDA standart访问图形处理器?
发布于 2010-10-29 00:13:43
我同意jasper的观点,目前最简单的选择是使用微软研究院的Accelerator。我写了一系列关于在F#中使用的文章。A simple and direct introduction,Game of Life example,more advanced example using quotations和一个using advanced quotation features示例。Satnam Singh's博客也是一个很好的资源,里面有一些F#演示。
当前显卡的一个问题是它们不支持整数(因此,加速器仅在使用优化的x64并行引擎运行时才支持它们)。此外,目前的显卡不能实现符合IEEE标准的浮点数-他们试图通过进行一些“猜测”来提高速度,这在计算三角形位置时并不重要,但如果您正在处理财务计算,这可能是一个问题。(Accelerator可以使用不同的目标,所以如果您使用x64并行引擎是安全的)。
据我所知,DirectCompute将需要浮点运算的精确实现以及对整数的直接支持,因此这可能是未来的一个很好的选择(或者如果加速器最终开始使用DirectCompute作为他们的引擎)。
发布于 2010-10-29 08:07:01
可能只有像我这样的GPU狂热分子才听说过它。Tidepowerd -- dead link使基于CIL的语言(如F#、C#、VB.NET等)的GPGPU成为可能。另一方面,你也可以通过引用到F#运行时/应用程序接口对唯一的GPU语言做同样的事情(期待看到有人实现它)。这是代理史密斯在博客上写给about的,或者在F# Expert1.0的书(面向语言的编程章节) AFAIK中也提到了。
Smith特工(好的,对此表示抱歉)正在谈论NVIDIA Cg。但是您可以使用HLSL DirectCompute着色器或OpenCL C99执行相同的操作。PTX (低水平NVIDIA IL),CAL-IL (低水平AMD/ATI IL)...
发布于 2010-10-28 21:37:37
作为替代方案,您可以考虑使用DirectCompute。三大图形处理器API: CUDA、OpenCL和DirectCompute都非常相似。可以通过SlimDX从F#轻松访问DirectCompute,这是DirectX的一个.NET包装器。
https://stackoverflow.com/questions/4042209
复制相似问题