Hello-world for CUDA.Net

女生的网名这么多〃 提交于 2019-12-12 08:46:15

问题


I'm trying to write a childish app with CUDA.Net, but I'm out of luck.

I've figured out to:

using GASS.CUDA;

// ...

var c = new CUDA();

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

myfunc apparently should be of type GASS.CUDA.Types.CUfunction but I didn't find how to define one.


回答1:


First you need a .cu file with your kernel (function to be executed on a GPU). Let's have a file mykernel.cu:

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

This have to be compiled into a .cubin file with the nvcc compiler. In order to let the compiler know of the Visual C++ compiler, you need to call it from within the Visual Studio Command Prompt:

nvcc mykernel.cu --cubin

This creates the mykernel.cubin file in the same directory.

Then in a C# code you can load this binary module and execute the kernel. In the higher-level object API of GASS.CUDA it can look like this:

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);

That's it!

The nvcc compiler should be called as a build action better than calling it by hand. If anyone knows how to accomplish that, please let us know.




回答2:


Unfortunately CUDA.net is very badly documented, but http://www.hoopoe-cloud.com/files/cuda.net/2.0/CUDA.NET_2.0.pdf should help you get started. Furthermore you still need to write your kernel in CUDA C, so http://developer.download.nvidia.com/compute/cuda/3_2_prod/toolkit/docs/CUDA_C_Programming_Guide.pdf will be a good idea to have a look at as well, and perhaps try to start with a start CUDA C application before porting it to CUDA.net.



来源:https://stackoverflow.com/questions/4596122/hello-world-for-cuda-net

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!