【发布时间】:2020-05-06 18:24:45
【问题描述】:
我有一个包含几个变量的类,这些变量仅在使用nvcc 编译时可用,例如thrust::device_vector<>。类声明本身在头文件中,它的实现在 .cu 文件中。该类将包含在使用g++ 编译的主项目中,这意味着cuda 变量的编译也将使用g++ 完成。这显然失败了。因此,我想知道是否有解决方案,即我的类包含诸如thrust::device_vector<> 之类的变量,但仍然可以包含在整个项目中?
我可以以某种方式仅在 .cu 文件中声明类变量,而不是在头文件中声明吗?
【问题讨论】:
-
"这个类将被包含在使用 g++ 编译的主项目中"。你不能那样做。如果它包含推力,它必须用 nvcc 编译。如果你有我必须用 g++ 编译的代码,那么重构
-
这里我想避免两点,其中之一是我不能将 C++17 与 nvcc 一起使用,另一点是我通过一些包含包含 mpi。这也意味着我必须重新编译我包含的每个包含 mpi 的库,这是我想避免的……
-
所以重构。你别无选择