【发布时间】:2011-09-15 04:44:48
【问题描述】:
我已经制作了一个简单的 CUDA dll,下面显示的代码。该函数将一些值添加到数组中。
#include<stdio.h>
#include<stdlib.h>
#include<cuda.h>
//Cuda Kernel
__global__ void add_gpu(float *a)
{
int idx=blockIdx.x*blockDim.x+threadIdx.x;
a[idx]=a[idx]*2;
}
int cudasafe( cudaError_t error)
{
if(error!=cudaSuccess)
return 1;
else
return 0;
}
extern "C" int __declspec(dllexport) __stdcall add_gpu_cu(float *a, int size,int nblock, int nthread)
{
float* dev_a;
int flag;
flag=cudasafe(cudaMalloc((void**)&dev_a,size*sizeof(float)));
if(flag==1)
return flag;
flag=cudasafe(cudaMemcpy(dev_a,a,size*sizeof(float),cudaMemcpyHostToDevice));
if(flag==1)
return flag;
add_gpu<<<10,10>>>(dev_a);
flag=cudasafe(cudaMemcpy(a,dev_a,size*sizeof(float),cudaMemcpyDeviceToHost));
if(flag==1)
return flag;
}
问题是我无法将创建的 dll 添加为对我的 c# 项目的引用。它抛出一个异常,说无法添加对该文件的引用。确保该文件是可访问的,并且它是一个有效的程序集或 COM 组件。
我在创建 dll 时做错了吗?
请帮忙
问候
【问题讨论】: