基本上,我有编译器在编译我的.CU文件,我已(我认为).CU那些文件中的全部操作,但是当我尝试打电话给他们( kernel<<<1,1>>>(void)
)中,编译器寄存器由于CUDA句法语法错误。 此外,呼吁像cudaMalloc C文件中失败。
这里有三个非常短的文件,所以我可以告诉你在那里示数。
//kernel.cu
#include "kernel.h"
#include <cuda.h>
#include <cuda_runtime_api.h>
__global__ int kernel(void){
return 5;
}
和
//kernel.h
#ifndef _KERNEL_h_
#define _KERNEL_h_
extern "C" int kernel(void);
#endif
和
//main.c
#include "kernel.h"
#include <cuda.h>
#include <cuda_runtime_api.h>
int main() {
int* device_a;
cudaMalloc( (void**)&device_a, sizeof(int) );
kernel<<<1,1>>>();
}
我从一些SDK例子拿到了头文件。 另外,我有我的构建配置设置与CUDA 4.2,所以为什么.CU文件编译。 如果我做了任何意外的语法错误,那是因为我简化它张贴,不,它实际上是在源,但请注明以防万一。
kernel.cu编译罚款。
kernel.h当有一个错误:在“外部...”行“‘串’错误C2059:语法错误”。 (难道这是因为我把从C ++的例子吗?)
main.c中有一个错误:“错误C2065:内核:未声明的标识符”
和: “错误C2059:语法错误: '<'”
但是当我注释掉内核调用,所以它只是cudaMalloc,我得到:“错误LNK2019:解析外部符号_cudaMalloc @ 8函数_main中引用”
和:“致命错误LNK1120:1周无法解析的外部”
它说的是使用Visual Studio 2010,或者是什么我不包括? 从SDK的例子,我不知道我做错了什么,其他然后他们找到了一种方法,我认为,不使用三架(CTRL + F没有发现任何)。 任何帮助表示赞赏。 先感谢您!
编辑:在看一些例子后,他们用三重括号语法就好了。
编辑: 对于使用此作为参考的 , __global__
函数只能返回void。 如果您尝试其他任何回报,像我一样,你会收到编译器错误。