在C文件中调用CUDA
最近在写一些CUDA的kernel,想要给C项目中的一些逻辑加入并行结构进行加速,但是尽量维持嵌入的形势,也就是最终还是进行.c文件的执行,也就需要在.cu中写kernel和执行function,之后再在.c文件中调用。
但是看了几个blogs在编译的时候都会出现问题,花了我一些时间来解决,现在记录下来避免以后走弯路。
先上代码和编译指令
main.c
#include <stdio.h>
extern int func(void);
void main() {
printf("Running Demo \n");
func();
}
kernel.c
#include <stdio.h>
__global__ void vector_add(int *a, int *b, int *c)
{
/* insert code to calculate the index properly using blockIdx.x, blockDim.x, threadIdx.x */
int index = blockIdx.x * blockDim.x + threadIdx.x;
c[index] = a[index] + b[index];
}
/* experiment with N */
/* how large can it be? */
#define N (2048*2048)
#define THREADS_PER_BLOCK 512
extern "C" int func()
{
int *a, *b, *c;
int *d_a, *d_b, *d_c