gpt4 book ai didi

cuda.net - CUDA.Net 的 Hello-world

转载 作者:行者123 更新时间:2023-12-04 11:15:38 29 4
gpt4 key购买 nike

我正在尝试使用 CUDA.Net 编写一个幼稚的应用程序,但我不走运。

我想通了:

using GASS.CUDA;

// ...

var c = new CUDA();

// c.Launch(myfunc); // ???? how ???
myfunc显然应该是 GASS.CUDA.Types.CUfunction 类型但我没有找到如何定义一个。

最佳答案

首先,您需要一个带有内核的 .cu 文件(要在 GPU 上执行的函数)。让我们有一个文件 mykernel.cu:

extern "C" 
__global__ void fooFunction(float4* data) {
// there can be some CUDA code ...
}

这必须使用 nvcc 编译器编译成 .cubin 文件。为了让编译器知道 Visual C++ 编译器,您需要从 Visual Studio 命令提示符中调用它:
nvcc mykernel.cu --cubin

这将在同一目录中创建 mykernel.cubin 文件。

然后在 C# 代码中,您可以加载此二进制模块并执行内核。在 GASS.CUDA 的高级对象 API 中,它看起来像这样:
using GASS.CUDA;

// ...

CUDA cuda = new CUDA(true);
// select first available device (GPU)
cuda.CreateContext(0);
// load binary kernel module (eg. relative to from bin/Debug/)
CUmodule module = cuda.LoadModule("../../mykernel.cubin");
// select function from the module
CUfunction function = cuda.GetModuleFunction(module, "fooFunction");
// execute the function fooFunction() on a GPU
cuda.Launch(function);

就是这样!

应该将 nvcc 编译器作为构建操作调用,而不是手动调用它。如果有人知道如何做到这一点,请告诉我们。

关于cuda.net - CUDA.Net 的 Hello-world,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4596122/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com