无法在Alea GPU(C#)中启动内核

时间:2018-06-09 22:45:28

标签: c# gpu aleagpu

我一直在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#包。

我的安装是否正确?如果是这样,我是否使用过时的文档或者我是如何尝试启动内核的?

2 个答案:

答案 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;