本文介绍了编译Cuda时出错-预期的主要表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这个程序似乎很好,但是我仍然会犯错,有些建议吗?
this program seems be fine but I still getting an erro, some suggestion?
程序:
#include "dot.h" #include <cuda.h> #include <cuda_runtime.h> #include <stdio.h> int main(int argc, char** argv) { int *a, *b, *c; int *dev_a, *dev_b, *dev_c; int size = N * sizeof(int); cudaMalloc((void**)&dev_a, size); cudaMalloc((void**)&dev_b, size); cudaMalloc((void**)&dev_c, sizeof(int)); a = (int *)malloc (size); b = (int *)malloc (size); c = (int *)malloc (sizeof(int)); random_ints(a, N); random_ints(b, N); cudaMemcpy(dev_a, a, size, cudaMemcpyHostToDevice); cudaMemcpy(dev_b, b, size, cudaMemcpyHostToDevice); int res = N/THREADS_PER_BLOCK; dot<<< res, THREADS_PER_BLOCK >>> (dev_a, dev_b, dev_c); //helloWorld<<< dimGrid, dimBlock >>>(d_str); cudaMemcpy (c, dev_c, sizeof(int), cudaMemcpyDeviceToHost); free(a); free(b); free(c); cudaFree(dev_a); cudaFree(dev_b); cudaFree(dev_c); return 0; }
错误:
DotProductCuda.cpp:27:错误:'<'令牌
DotProductCuda.cpp之前的预期主表达式:27:错误:'>'令牌
推荐答案
<<< >>> 用于调用内核的语法不是标准的C或C ++。这些调用必须在NVCC编译器编译的文件中。这些文件通常以.cu扩展名命名。其他对CUDA的API调用,例如 cudaMalloc 可以在常规.c或.cpp文件中。
The <<< >>> syntax for calling a kernel is not standard C or C++. Those calls must be in a file compiled by the NVCC compiler. Those files are normally named with a .cu extension. Other API calls to CUDA such as cudaMalloc can be in regular .c or .cpp files.
这篇关于编译Cuda时出错-预期的主要表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!