我有功能
__global__ void Function(int *A, int *B, int N) {
calculations...
}
void Function_Wrapper(int* a_h, int* b_h) {
dimGrid, dimBlock;
Function<<<dimGrid, dimBlock>>>(a_d,b_d,n);
}
在.cu文件和函数
中int main() {
Create data and other crap...
Function_Wrapper (a_h, b_h);
}
但是当我尝试编译所有我得到的是:
cmain.cpp:39:错误:未在此范围内声明'Function_Wrapper'
我正在编译它:
all: program
program: cudacode.o
g++ -o ctp -L /usr/local/cuda/lib64 -lcuda -lcudart cmain.cpp cudacode.o
cudacode.o:
nvcc -c -arch=sm_20 cmain.cu
clean: rm -rf *.o
我做错了什么?
编辑: 我用主文件中的外部函数声明修复了缺失的函数问题,但我仍然遇到了一些问题。 新的makefile:
all: program
program: cudacode.o
g++ -o ctp -L /Developer/NVIDIA/CUDA-5.0/lib -lcudart cmain.cpp cudacode.o
cudacode.o:
nvcc -c -arch=sm_20 cmain.cu -o cudacode.o
clean: rm -rf *.o
新错误消息:
g ++ -o ctp -L /Developer/NVIDIA/CUDA-5.0/lib -lcudart cmain.cpp cudacode.o
ld:警告:忽略文件cudacode.o,文件是为i386构建的,它不是被链接的体系结构(x86_64):cudacode.o
架构x86_64的未定义符号:
“Function_Wrapper(int *,int *)”,引自:
_main in ccjLlw82.o
ld:找不到架构x86_64的符号
collect2:ld返回1退出状态
make:*** [program]错误1
PS:使用macosx