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

.net 是否有可能在F sharp下使用CUDA编写GPU应用程序?,.net,f#,cuda,gpu,.net,F#,Cuda,Gpu,我对使用F#进行数值计算感兴趣。如何在F#下使用NVIDIA的CUDA standart访问GPU < P>从MS允许你利用GPU,所以可以做一些类似的事情,虽然你不能使用CUDA。 < P>作为替代,你可以考虑使用直接计算。三大GPU API:CUDA、OpenCL和DirectCompute,都非常相似。DirectCompute可以通过SlimDX从F#轻松访问,SlimDX是DirectX的.NET包装程序。您可以查看CUDA.NET。它可以让你直接从F#开始使用CUDA。可以在这里找到

我对使用F#进行数值计算感兴趣。如何在F#下使用NVIDIA的CUDA standart访问GPU

< P>从MS允许你利用GPU,所以可以做一些类似的事情,虽然你不能使用CUDA。

< P>作为替代,你可以考虑使用直接计算。三大GPU API:CUDA、OpenCL和DirectCompute,都非常相似。DirectCompute可以通过SlimDX从F#轻松访问,SlimDX是DirectX的.NET包装程序。

您可以查看CUDA.NET。它可以让你直接从F#开始使用CUDA。可以在这里找到:


从托管代码中使用CUDA的另一种常见替代方法是将CUDA功能封装在本机DLL中,然后p/调用该DLL或围绕该DLL编写C++/CLI包装,然后从F#程序中使用。

我同意jasper的观点,目前最简单的选择是使用Microsoft Research的加速器。我写了一系列关于使用F#的文章,例如,更多和一个例子。博客也是一个很好的资源,有一些F#demo

当前图形卡的一个问题是它们不支持整数(因此,加速器仅在使用优化的x64并行引擎运行时才支持整数)。此外,当前的图形卡并没有按照IEEE标准实现浮点数——它们试图通过做一些“猜测”来加快运算速度,这在计算三角形位置时并不重要,但在处理财务计算时可能会成为一个问题。(加速器可以使用各种目标,所以如果您使用的是x64并行引擎,那么您是安全的)


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

可能只有像我这样的核心GPU极客听说过它。使基于CIL的语言(如F#、C#、VB.NET等)的GPGPU成为可能。另一方面,您可以对唯一的F#语言做同样的事情,并引用GPU运行时/API(期待有人实现它)。这是代理Smith写过的博客,或者在F#expert 1.0(面向语言编程章节)AFAIK中也提到过


史密斯探员(好的,很抱歉)正在谈论英伟达Cg。但您可以使用HLSL DirectCompute着色器或OpenCL C99执行相同的操作。。PTX(低水平NVIDIA IL)、CAL IL(低级AMD/ATI IL)…

< P>为了文档(这是一个老问题,答案不覆盖当前的技术景观),如果您今天必须编写GPU/CUDA应用程序,那么另一个可选择的选项是AlgEPU。< /P> - 1 DUNCTULT是最新的,三个GPU API中记录最差的。现在不推荐使用。你确定新一代NVDIA费米(GTX 460上)仍然存在浮点问题吗?马丁:我不确定最新一代的GPU是什么。也许他们已经解决了这个问题——有一些明确的保证会很有用。我可以向您保证,所有Dx10和Dx11生成都支持32位整数精度。最新的Dx11代(AMD/ATI和NVIDIA都支持IEEE 754-2008),这意味着融合乘法加法和所有新奇的东西。-1用于错误的信息。最新的GPU完全符合IEEE标准,并且支持整数。谁投了这一票?而且,加速器仍然只是在谈论DX9 GPU。DX10和DX11 GPU为GPU编程提供了更多更好的选项。