0

我一直在参考 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 社区)抱怨:“Gpu”不包含“Launch”的定义,并且找不到接受“Gpu”类型的第一个参数的扩展方法“Launch”(您是否缺少 using 指令或程序集引用?)

我相信我已经正确设置了 Alea GPU。我使用 nuget 按照其网站( http://www.aleagpu.com/release/3_0_3/doc/installation.html)上的说明安装它和 Fody 。我还安装了 Alea GPU 所需的 F# 包。

我的安装正确吗?如果是这样,我是在使用过时的文档还是我尝试启动内核的方式有什么问题?

4

2 回答 2

0

正确的语法是

var gpu = Gpu.Default;
gpu.Launch(...);

或者

Gpu.Default.Launch(...);

是的,你需要

using Alea;
using Alea.CSharp;
于 2018-06-25T13:09:47.477 回答
0

在我寻找替代解决方案时解决了它。除了 Alea,我还需要导入 Alea.CSharp。

using Alea;
using Alea.CSharp;

有趣的是,Visual Studio 没有提示我导入 Alea.CSharp,直到我编写了其他需要它的东西,一旦我导入它,我注意到 gpu.Launch 的错误消失了。

于 2018-06-10T17:20:05.407 回答