用nvcc(CUDA)编译特征库

Geo*_*rgT 5 c++ cuda eigen

我尝试使用nvcc(CUDA 5.0 RC)编译以下程序(main.cu):

#include <Eigen/Core>
#include <iostream>

int main( int argc, char** argv )
{
    std::cout << "Pure CUDA" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我得到了一堆警告和错误,我只能使用nvcc而不是Microsoft编译来解释.

这个假设是对的吗?有没有办法用nvcc编译Eigen?(我实际上不想将Eigen矩阵转移到GPU,只是访问他们的成员)?

如果用nvcc编译Eigen不起作用,是否有一个很好的指南/教程,关于分离主机和设备代码的聪明方法?

我正在使用CUDA 5.0 RC,Visual Studio 2008,Eigen 3.0.5.要编译我同时使用的.cu文件,CUDA中包含的规则文件,以及CMake生成的自定义构建步骤.使用CUDA规则文件,我以build capability 3.0为目标.

谢谢你的建议.

PS:如果我使用主机编译器编译相同的代码,它可以很好地工作.

Tom*_*Tom 3

NVCC 调用普通的主机编译器,但在完成一些预处理之前不会调用,因此 NVCC 很可能正在努力正确解析 Eigen 代码(特别是如果它使用 C++11 功能,但这不太可能,因为你说 VS2008 可以工作)。

我通常建议将设备代码和包装器分离到文件中.cu,并将应用程序的其余部分保留在普通.c/.cpp文件中,由主机编译器直接处理。有关使用 VS2008 设置此功能的一些提示,请参阅此答案。