我希望利用GPU来完成一些方程式的计算,但不知道如何从C#中访问它。我知道XNA和DirectX框架允许使用着色器来访问GPU,但如果没有这些框架,该怎么访问呢?
我希望利用GPU来完成一些方程式的计算,但不知道如何从C#中访问它。我知道XNA和DirectX框架允许使用着色器来访问GPU,但如果没有这些框架,该怎么访问呢?
我还没有用C#完成这个任务,但基本上你需要使用CUDA(假设你正在使用nVidia卡)SDK和CUDA工具包来完成它。
nVidia已经为可在CUDA设备上使用的BLAS实现进行了移植(或编写?)。他们提供了大量如何进行数字计算的示例,尽管您将不得不想办法从C#中完成它。我敢打赌,你将不得不编写一些非托管的C或C++代码并链接它。
如果您不介意使用C#以外的语言,请查看Theano。对于您的需求来说,它可能有点过头了,因为它们正在使用Python构建一个在GPU上进行机器学习的框架,但是...它可以工作,并且工作得非常好。
如何看待 Brahma (LINQ to GPU)?
必须得爱 LINQ!
如果您不想处理P/Invoke和非托管代码,有两个选择:
我担心我的GPU使用知识仅限于编写DirectX / XNA着色器和稍微涉猎一下CUDA(NVidia特定)。然而,我听说过很多关于OpenCL(开放式计算语言)的东西,它允许您运行算法,OpenCL会智能地将其推送到您的图形卡上,或者在没有兼容GPU的情况下在CPU上运行。
您在GPU上运行的代码必须专门使用OpenCL的C99子集编写(如果这不符合您的要求,因为您已经询问了如何从C#中使用它,我深表歉意),但除了您的数字计算算法之外,您可以编写应用程序的其余部分,并通过使用The Open Toolkit使其全部协同工作。