C++ 文件中的 cuda 集成
cuda integration in a C++ file
我已经阅读了所有有关将 .cu
文件包含到其他人之前编写的 .cpp
文件中的相关主题,但对我没有任何帮助。
我在项目的 C++ 文件中包含文件时遇到问题。
我的项目结构如下:main.cpp
compute.h
compute.cpp
kernel.cu
。
main.cpp
已经超过了我项目的入口 main() 点。几个 _host_
cuda 函数,它包括 compute.h
因为它调用了 compute.h.
中定义的一些函数
compute.cpp
只有C++
函数,使用了一个sum<<<1,numbloc>>>(list of parameters)
函数,引用了kernel.cu
设备代码。然后我将 kernel.cu
包含在 compute.cpp
headers 中。但是我在使用 cuda 5.0 在 visual studio 2008 上编译时遇到问题,错误显示
error C3861:'_syncthreads':identifier not found
但是当我使用包含 main(){}
和我的 _host_
函数的单个 main.cu
编写项目时,它构建时没有错误。
我可以保持我的项目结构如上所述,并且 运行 我的项目没有错误吗?请帮忙!
默认情况下,.cpp 文件不能包含任何非普通 C/C++ 语法的内容。 cuda 内核调用 kernel<<<...>>>()
不能在 .cpp 文件中,除非您将特殊开关传递给 nvcc。
因此通常的建议是重命名以这种方式使用 CUDA 的任何文件,使其具有 .cu 扩展名而不是 .cpp 扩展名,并使用 nvcc 编译该文件。
这同样适用于任何特定于 CUDA 的语法。 (请注意,这并不意味着调用 CUDA API,例如 cudaMalloc
,如果正确包含 cuda_runtime.h 和 link,这可以在普通的 .cpp 文件中完成.) 因此,如果你的 main.cpp 中确实有 __host__
函数装饰器,那也不会起作用(使用默认编译器设置)。
我已经阅读了所有有关将 .cu
文件包含到其他人之前编写的 .cpp
文件中的相关主题,但对我没有任何帮助。
我在项目的 C++ 文件中包含文件时遇到问题。
我的项目结构如下:main.cpp
compute.h
compute.cpp
kernel.cu
。
main.cpp
已经超过了我项目的入口 main() 点。几个 _host_
cuda 函数,它包括 compute.h
因为它调用了 compute.h.
compute.cpp
只有C++
函数,使用了一个sum<<<1,numbloc>>>(list of parameters)
函数,引用了kernel.cu
设备代码。然后我将 kernel.cu
包含在 compute.cpp
headers 中。但是我在使用 cuda 5.0 在 visual studio 2008 上编译时遇到问题,错误显示
error C3861:'_syncthreads':identifier not found
但是当我使用包含 main(){}
和我的 _host_
函数的单个 main.cu
编写项目时,它构建时没有错误。
我可以保持我的项目结构如上所述,并且 运行 我的项目没有错误吗?请帮忙!
默认情况下,.cpp 文件不能包含任何非普通 C/C++ 语法的内容。 cuda 内核调用 kernel<<<...>>>()
不能在 .cpp 文件中,除非您将特殊开关传递给 nvcc。
因此通常的建议是重命名以这种方式使用 CUDA 的任何文件,使其具有 .cu 扩展名而不是 .cpp 扩展名,并使用 nvcc 编译该文件。
这同样适用于任何特定于 CUDA 的语法。 (请注意,这并不意味着调用 CUDA API,例如 cudaMalloc
,如果正确包含 cuda_runtime.h 和 link,这可以在普通的 .cpp 文件中完成.) 因此,如果你的 main.cpp 中确实有 __host__
函数装饰器,那也不会起作用(使用默认编译器设置)。