Я пытаюсь разработать гибридную программу с использованием Intel Cilk++ и Nvidia CUDA. Я создал общую библиотеку из кода Cuda (libtest.so). И я хочу связать его с программой Cilk++, чтобы я мог переложить часть работы на GPU. Но когда я компилирую программу cilk++, я не могу связать ее с этой библиотекой cuda и получаю следующую ошибку:
nvcc -arch=compute_20 -L. -code=sm_20 -L. -o libtest.so --shared -Xcompiler -fPIC test.cu;
cilk++ -o main -L. -ltest main.cilk;
/tmp/ccwDvzCG.o: In function `int cilk_main(int, char**)':
main.cilk:(.text+0x26): undefined reference to `void entry()'
collect2: ld returned 1 exit status
Файл: test.cu
#include <stdio.h>
__global__ void myk(void){
printf("Hello from thread %d block %d\n", threadIdx.x, blockIdx.x);
}
extern "C++"
void entry(void){
myk<<<1,1>>>();
printf("CUDA status: %d\n", cudaDeviceSynchronize());
}
Файл: main.cilk
#include <cilk.h>
void entry(void);
int cilk_main(void){
entry();
}
Раньше я связывал библиотеку Cilk с кодом CUDA, но теперь я хочу наоборот. Можно ли связать CUDA с Cilk? Если да, то что мне не хватает?