CUDA 集成在C++文件中
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
标题中。但是我在使用 cuda 2008 在 Visual Studio 2008 上编译时遇到了问题 5.0,并且错误说
error C3861:'_syncthreads':identifier not found
但是当我编写一个包含main(){}
和我的_host_
函数的单个main.cu
的 projetc 时,它会毫无错误地构建。
我可以保持上述项目结构,并运行我的项目而没有错误吗?请帮忙!
默认情况下,.cpp文件不能包含任何非普通 C/C++ 语法的内容。 cuda 内核调用kernel<<<...>>>()
不能位于.cpp文件中,除非您将特殊开关传递给 nvcc。
因此,通常的建议是以这种方式重命名任何使用 CUDA 的文件,使其具有 .cu 扩展名而不是.cpp扩展名,并使用 nvcc 编译该文件。
这同样适用于任何特定于 CUDA 的语法。 (请注意,这并不意味着调用 CUDA API,例如 cudaMalloc
,如果您包含 cuda_runtime.h 并正确链接,则可以在普通.cpp文件中完成。 因此,如果你实际上在你的 main.cpp 中有 __host__
函数装饰器,那也不起作用(使用默认编译器设置)。
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 如何将内容数组写入文本文件?
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到