capp继承了Class和*.cu设备代码编译
cusp inherited Class and *.cu device code compilation
如果这不是小事,请原谅。我有一个小课堂,围绕着cusp::csr_matrix<int,float,cusp::device_memory>
,就像这样:
class CuspMatrix
: public cusp::csr_matrix<int,float,cusp::device_memory>
{
...
}
到目前为止,我还没有做任何我认为需要为设备编译的事情。然而,作为一个成员/函数,我确实计划在这个特定的类中编写应该在设备上执行的代码,但如果我理解正确,cusp
已经为我提供了这个功能了吗?例如:
ValueType v_nrm2 = cusp::blas::nrm2(V);
cusp::transpose(M,M_t);
理想情况下,计算范数或换位应该编译用于设备执行。如果这是类方法的一部分,在这种情况下我该怎么办?
我是否将类的整个*.hpp
头文件作为*.cu
,并将其添加到nvcc
编译中?我是否只标记*.cu
中的实际代码(而不是标头声明),并将其添加到nvcc
编译中?或者这些都没有必要吗?
您必须记住的是,尖端是一个建立在thrust之上的模板库,它也是一个模板库。尖点类和推力类方法都包含大量的设备代码,所以如果从它们继承,也会继承大量的设备编码。
这意味着,无论您选择如何构建代码,在"经典"CUDA编译中,类的实例化点和所有包含的尖点和推力模板代码都必须在同一个翻译单元中,并且必须以它认为需要设备代码编译的形式(即在.cu文件中或使用适当的编译器开关)呈现给nvcc。
因此,定义派生类并实例化它的顺序是:
class CuspMatrix
: public cusp::csr_matrix<int,float,cusp::device_memory>
{
...
}
...
{
CuspMatrix A;
...
}
必须使用nvcc进行编译。
相关文章:
- 如何修复sfml c++代码编译错误
- 尝试用java代码编译和运行c++代码
- 此代码编译良好,但文件未创建?请指出错误
- 为什么我的 BaseClass:Method 代码编译(带有单冒号)?
- 代码编译没有任何输出,入门程序
- 通过Python Distutils(用于Python C扩展)使用可重定位的设备代码编译CUDA代码
- 代码编译但不起作用!cmd窗口只是理想和理想,但什么也没发生
- 无法使用 g++ 使用C++代码编译 C 库
- 如何在Ubuntu中使用Visual Studio代码编译C++代码
- 推力+提升代码编译错误
- C++代码编译,但在 Zorin OS 上运行时显示错误
- 如何在使用模板时将 CPP 代码编译到库文件中
- 是否可以将Visual Studio 2017将C 代码编译到EXE以外的文件类型中
- 使用 Visual Studio for C++ 代码编译错误
- 使用 Android Studio 使用本机代码编译 apk 时,如何在链接处删除 libgnustl_static.
- 使用 Emscripten 将 OpenCV 代码编译C++ Javascript
- 将C 代码编译到独立应用程序.App
- 为什么此代码编译 (C++11) 而没有类型不匹配错误
- 重用编译器前端的结果,以加快多个配置/平台的C++代码编译
- 如何将C++11代码编译为网络汇编