Hello,
I am trying to write a geophysical algorithm in CUDA. The problem is that I have to stick with C# only. Now C# does not have native support for CUDA so I have to write a .dll file in CUDA C to use in a C# project. I have no experience in creating .dll files and would be very grateful if someone can outline the process for me and describing what each line does.
I am attaching a small CUDA C code that adds a float value to a float array in the GPU. Please tell me how to make a CUDA dll for the device function that I have supplied.
Thanks.
#include<stdio.h>
int main()
{
float* a=(float*)malloc(100*sizeof(float));
float b=0.5;
float* c=(float*)malloc(100*sizeof(float));
float* dev_a;
float* dev_b
float* dev_c;
//Allocate memory in device
cudaMalloc((void**)&dev_a,100*sizeof(float));
cudaMalloc((void**)&dev_b,sizeof(float));
cudaMalloc((void**)&dev_c,100*sizeof(float));
//Copy variables
cudaMemcpy(dev_a,grid,100*sizeof(float),cudaMemcpyHostToDevice);
cudaMemcpy(dev_b,grid,sizeof(float),cudaMemcpyHostToDevice);
add_gpu<<<10,10>>>(dev_a,dev_b,dev_c);
cudaMemcpy(c,dev_c,100*sizeof(float),cudaMemcpyDeviceToHost);
return 0;
}
__global__ void add_gpu(float *a,float *b, float *c)
{
int ind=blockIdx.x*blockDim.x+threadIdx.x;
c[ind]=a[ind]+b[ind];
}