我一直在Alea GPU的网站(http://www.aleagpu.com/release/3_0_3/doc/gpu_programming_csharp.html)上引用这些示例,但我无法启动内核。我相信我已经正确设置了所有内容,但即使他们的示例也会出现编译问题。
鉴于内核:
private static void Kernel(int[] result, int[] arg1, int[] arg2)
{
var start = blockIdx.x*blockDim.x + threadIdx.x;
var stride = gridDim.x*blockDim.x;
for (var i = start; i < result.Length; i += stride)
{
result[i] = arg1[i] + arg2[i];
}
}
运行它的代码:
gpu.Launch(Kernel, lp, result, arg1, arg2);
Visual Studio(2017社区)抱怨:&#39; Gpu&#39;不包含&#39;发布&#39;的定义没有扩展方法&#39;发布&#39;接受第一个类型&#39; Gpu&#39;可以找到(你错过了使用指令或程序集引用吗?)
我相信我已经正确设置了Alea GPU。我使用nuget按照其网站上的说明(http://www.aleagpu.com/release/3_0_3/doc/installation.html)安装它和Fody。我还安装了Alea GPU所需的F#包。
我的安装是否正确?如果是这样,我是否使用过时的文档或者我是如何尝试启动内核的?
答案 0 :(得分:0)
在我寻找替代解决方案时解决了这个问题。除了Alea,我还需要导入Alea.CSharp。
using Alea;
using Alea.CSharp;
有趣的是,Visual Studio没有提示我导入Alea.CSharp,直到我写了一些需要它的东西,一旦我导入它,我注意到gpu.Launch的错误消失了。
答案 1 :(得分:0)
正确的语法是
var gpu = Gpu.Default;
gpu.Launch(...);
或
Gpu.Default.Launch(...);
是的,您需要
using Alea;
using Alea.CSharp;