Я сделал Simple 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?
Пожалуйста, помогите
С уважением