gpt4 book ai didi

c++ - 使用 nvcc (CUDA) 编译 Eigen 库

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:48 24 4
gpt4 key购买 nike

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

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

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

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

这个假设对吗?有什么办法可以用 nvcc 编译 Eigen 吗? (我实际上不想将特征矩阵传输到 GPU,只是访问它们的成员)?

如果使用 nvcc 编译 Eigen 不可行,是否有关于分离主机和设备代码的巧妙方法的很好的指南/教程?

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

感谢您的建议。

PS:如果我使用主机编译器编译相同的代码,它会完美运行。

最佳答案

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

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

关于c++ - 使用 nvcc (CUDA) 编译 Eigen 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12802560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com