當我嘗試編譯簡單代碼時,出現了一個問題,那就是C++和Cuda代碼以分離的方式編譯。Dynamic Parallelism - 在編譯時鏈接錯誤時引用__cudaRegisterLinkedBinary的未定義引用 - 單獨編譯
這裏是我的代碼
main.cpp中:
#include "file.cuh"
int main(void)
{
test();
return 0;
}
file.cuh:
void test(void);
file.cu:
#include <cuda.h>
#include <cuda_runtime.h>
#include <cstdio>
#include "file.cuh"
__global__ void printId(void)
{
printf("Hello from block %d \n", blockIdx.x);
}
__global__ void DynPara(void)
{
dim3 grid(2, 1, 1);
dim3 block(1, 1, 1);
printId<<< grid, block >>>();
}
void test(void)
{
dim3 grid(1, 1, 1);
dim3 block(1, 1, 1);
dynPara<<< grid, block >>>();
}
我編譯:
nvcc -arch=sm_35 -lcudadevrt -rdc=true -c file.cu
g++ file.o main.cpp -L<path> -lcudart
而這裏的錯誤,而編譯:
file.o: In function `__sti____cudaRegisterAll_39_tmpxft_00005b2f_00000000_6_file_cpp1_ii_99181f96()':
tmpxft_00005b2f_00000000-3_file.cudafe1.cpp:(.text+0x1cd): undefined reference to `__cudaRegisterLinkedBinary_39_tmpxft_00005b2f_00000000_6_file_cpp1_ii_99181f96'
操作系統:紅帽 卡:K20x
任何想法?
感謝
由於它的工作原理 – user3018144