如何用nvcc编译gcc并行模式STL代码?

时间:2014-07-05 09:17:15

标签: gcc stl cuda openmp nvcc

我正在尝试使用nvcc 5.5.0在我的GPU上编译第三方库,但我在STL中不断收到编译错误。我已将其跟踪到库使用GCC并行标头。具体来说,这是导致编译问题的最小示例:

#include <parallel/algorithm>

这与gcc -c编译良好,但当我nvcc -c时,我得到编译错误,如:

/usr/include/c++/4.8/tr1/cmath(318): error: expected an identifier

我是否正在隐藏任何尝试获取引用OpenMP以使用nvcc编译的代码?请原谅我,如果这是显而易见的,但我是CUDA的新手。我正在使用gcc 4.8.2。

1 个答案:

答案 0 :(得分:1)

新的CUDA 6.5 RC工具包offers experimental support用于某些c ++ 11功能。

在Fedora20 / gcc 4.8.2,CUDA 6.5RC上,我能够成功编译以下代码。

t1.cu:

#include <math.h>
#include <parallel/algorithm>

int main(){
}
使用

nvcc -std=c++11 -arch=sm_20 t1.cu -o t1

如果仅包含math.h修复此问题,您可以检入自己的设置。如果没有,继续前进到CUDA 6.5可能是值得的。