如何创建CUDA dll?

如何创建CUDA dll?,dll,cuda,Dll,Cuda,我需要在我的应用程序中使用cuda。但是我不能创建dll。这里有一些代码 __global__ void calc(float *a, int n) { int idx = blockIdx.x * blockDim.x + threadIdx.x; float val = a[idx]; if (idx < n){ a[idx] = 4.0 /(1.0 + val*val); } } 如果可以,请给我一些使用dll的

我需要在我的应用程序中使用cuda。但是我不能创建dll。这里有一些代码

__global__ void calc(float *a, int n) {  
    int idx = blockIdx.x * blockDim.x + threadIdx.x;  
    float val = a[idx];  
    if (idx < n){  
        a[idx] = 4.0 /(1.0 + val*val);  
    } 
}
如果可以,请给我一些使用dll的源代码。
顺便说一句,很抱歉我的英语不好。

因为我最近在尝试创建和链接CUDA库时遇到了一大堆问题,我建议您改为创建一个.lib,如果您愿意,可以稍后将其包装到dll中

我今天发布了这个问题,因为我在这个问题上遇到了问题,并且得到了回答。这将帮助您创建包含CUDA代码的.lib并将其链接到exe。链接到dll不应该有太大的不同:


由于我最近在尝试创建和链接CUDA库时遇到了一大堆问题,我建议您改为创建一个.lib,如果您愿意,可以稍后将其包装到dll中

我今天发布了这个问题,因为我在这个问题上遇到了问题,并且得到了回答。这将帮助您创建包含CUDA代码的.lib并将其链接到exe。链接到dll不应该有太大的不同:

extern "C" __declspec(dllexport) void GPU_Code ( float *a_h, float *sum ) {
    float *a_d;
    const int numSteps = 10000;
    cudaMalloc((void **) &a_d, sizeof(float)*numSteps);
    int blockSize = 4;  
    int blocks = numSteps / blockSize + (numSteps % blockSize == 0 ? 0:1);  
    cudaMemcpy(a_d, a_h, sizeof(float)*numSteps, cudaMemcpyHostToDevice);

    calc<<< blocks, blockSize >>> (a_d, numSteps);  

    cudaMemcpy(a_h, a_d, sizeof(float)*numSteps, cudaMemcpyDeviceToHost);
        ...
    return; 
}
__declspec(dllimport) void GPU_Code ( float *a_h, float *sum );

int main() {
float*a_h;  
a_h = (float*)malloc(sizeof(double)*10000);  
float sum = 0.0;
GPU_Code(a_h, &sum);

...
return 0;
}