首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hello- CUDA.Net的世界

Hello- CUDA.Net的世界
EN

Stack Overflow用户
提问于 2011-01-05 00:49:38
回答 2查看 7.7K关注 0票数 7

我正试着用CUDA.Net写一个幼稚的应用程序,但我运气不佳。

我已经想好了:

代码语言:javascript
复制
using GASS.CUDA;

// ...

var c = new CUDA();

// c.Launch(myfunc); // ???? how ???

myfunc显然应该是GASS.CUDA.Types.CUfunction类型,但我不知道如何定义它。

EN

回答 2

Stack Overflow用户

发布于 2011-04-21 04:13:55

首先,你需要一个带有内核的.cu文件(函数将在图形处理器上执行)。让我们有一个文件mykernel.cu

代码语言:javascript
复制
extern "C" 
__global__ void fooFunction(float4* data) {
    // there can be some CUDA code ...
}

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

代码语言:javascript
复制
nvcc mykernel.cu --cubin

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

然后,在C#代码中,您可以加载这个二进制模块并执行内核。在GASS.CUDA的高级对象应用程序接口中,它可能如下所示:

代码语言:javascript
复制
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编译器应该作为构建操作调用,而不是手动调用。如果有人知道如何做到这一点,请让我们知道。

票数 8
EN

Stack Overflow用户

发布于 2011-03-17 15:54:13

不幸的是,CUDA.net的文档非常糟糕,但http://www.hoopoe-cloud.com/files/cuda.net/2.0/CUDA.NET_2.0.pdf应该可以帮助您入门。此外,您仍然需要用CUDA编写内核,因此http://developer.download.nvidia.com/compute/cuda/3_2_prod/toolkit/docs/CUDA_C_Programming_Guide.pdf也是一个好主意,在将其移植到CUDA.net之前,也许可以尝试从启动CUDA应用程序开始。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4596122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档