CUDA:一つにしないでください.cppファイルでkernelを宣言する(すなわち_global_と_device_の関数)
1419 ワード
ネット上の材料に由来する.
ヘッダファイルh
テストcu:
問題の分析:
cppはデフォルトでホストコンパイラであるc++のコンパイラで処理されるためです.
そしてtestではcppにはkernelが含まれている.h,kernel.hで宣言しました_global__で行ないます.
NOTE:上記主な参考:
http://blog.csdn.net/lingerlanlan/article/details/25063331?utm_source=tuicool
明日から、研鑽を続けて勉強になります...
ヘッダファイルh
extern __global__ void kernel();
はファイルkernelを実現する.cu #include
#include "kernel.h"
__global__ void kernel()
{
printf("hello world!");
}
テストcu:
#include "kernel.h"
int main(void)
{
kernel<<<1,1>>>();
cudaDeviceSynchronize();
return 0;
}
質問が来ました.test.Cuをtestに変更した.cpp、問題が発生しますmake all
Building file: ../src/test2.cpp
Invoking: NVCC Compiler
/usr/local/cuda-5.5/bin/nvcc -G -g -O0 -gencode arch=compute_35,code=sm_35 -odir "src" -M -o "src/test2.d" "../src/test2.cpp"
/usr/local/cuda-5.5/bin/nvcc -G -g -O0 --compile -x c++ -o "src/test2.o" "../src/test2.cpp"
In file included from ../src/test2.cpp:3:0:
../src/kernel.h:5:8: : ‘__global__’
../src/test2.cpp: ‘int main()’ :
../src/test2.cpp:10:2: : ‘kernel’
../src/test2.cpp:10:10: : expected primary-expression before ‘’ token
../src/test2.cpp:10:18: : expected primary-expression before ‘)’ token
../src/test2.cpp:11:24: : ‘cudaDeviceSynchronize’
make: *** [src/test2.o] 1
問題の分析:
cppはデフォルトでホストコンパイラであるc++のコンパイラで処理されるためです.
そしてtestではcppにはkernelが含まれている.h,kernel.hで宣言しました_global__で行ないます.
NOTE:上記主な参考:
http://blog.csdn.net/lingerlanlan/article/details/25063331?utm_source=tuicool
明日から、研鑽を続けて勉強になります...