OSX上的CUDA-NVCC找不到STL数组头

OSX上的CUDA-NVCC找不到STL数组头,cuda,osx-mavericks,nvcc,Cuda,Osx Mavericks,Nvcc,我正在将一个CUDA应用程序从Windows移植到OSX,但无法编译任何东西。最终,我试图让Xcode使用自定义的构建规则来构建我的.cu源代码,但那是另一回事[除非有人有一个使用Xcode 5的更新CUDA插件] 以下是终端发生的情况: $ nvcc -ccbin /usr/bin/clang -gencode=arch=compute_30,code=\"sm_30,compute_30\" --compile -cudart static -o Visualizer.cu.obj Visu

我正在将一个CUDA应用程序从Windows移植到OSX,但无法编译任何东西。最终,我试图让Xcode使用自定义的构建规则来构建我的.cu源代码,但那是另一回事[除非有人有一个使用Xcode 5的更新CUDA插件]

以下是终端发生的情况:

$ nvcc -ccbin /usr/bin/clang -gencode=arch=compute_30,code=\"sm_30,compute_30\" --compile -cudart static -o Visualizer.cu.obj Visualizer.cu
Visualizer.cu:4:10: fatal error: 'array' file not found
#include <array>
         ^
1 error generated.
$
我突然想到STL头/lib根本没有被任何环境变量引用,但我不确定这些头/lib的确切位置,或者不确定环境变量的最佳方式是什么?nvcc.profile-我命令行选项?提供这些信息

救命啊

更新

所有CUDA示例都通过make正确构建。但是,如果我添加一行

#include <array>

这是C++11标头,在Mac上可用的libstdc++版本中不可用。请注意,不建议将CUDA运行时库与libc++链接,因此应避免在CUDA代码中使用这些功能

关于令人困惑的术语的一些细节:

LISSTDC++-GNU C++标准库。出于兼容性目的,苹果提供了相当旧的版本。 它是在LLVM伞下开发的C++标准库。苹果积极参与其开发并默认与之链接,因为,AFAIK、10.9和XCode 5。 更新


请注意,在输出标志中-stdlib=libstdc++传递给了clang。这就是选择标准库的原因。

我不知道问题出在哪里。你能用数组编译一个普通的clang/xcode项目吗?即使您解决了定位问题,nvcc也可能对阵列不满意。一个典型的建议是将您的c++11代码和cuda代码分离成单独的模块,并使用标准的clang工具链编译非cuda模块。这不是nvcc问题,而是clang问题。尝试将-Xcompiler=-std=c++11添加到编译中statement@talonmies正确的标志应该是-stdlib=libc++-但我不确定它是否适用于NVCC,我知道在CUDA toolkit 5.5和可能的6.0版本中,它肯定不被推荐使用。@Eugene:根据-std选项,在clang中激活C++11语言功能是必需的。@RobertCrovella事实上,我不能编译任何包含的带有叮当声的东西。嗯,我包括了-std=c++11参数,它似乎没有任何效果。我将用更多信息更新我的问题。
-Xcompiler="--stdlib=libstdc++"
#include <array>
#$ _SPACE_=
#$ _CUDART_=cudart
#$ _HERE_=/usr/local/cuda/bin
#$ _THERE_=/usr/local/cuda/bin
#$ _TARGET_SIZE_=
#$ _TARGET_DIR_=
#$ _TARGET_SIZE_=64
#$ TOP=/usr/local/cuda/bin/..
#$ NVVMIR_LIBRARY_DIR=/usr/local/cuda/bin/../nvvm/libdevice
#$ PATH=/usr/local/cuda/bin/../open64/bin:/usr/local/cuda/bin/../nvvm/bin:/usr/local/cuda/bin:/usr/local/cuda/bin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
#$ INCLUDES="-I/usr/local/cuda/bin/../include" "-I/usr/local/include/" "-I/usr/local/include/**"
#$ LIBRARIES=  "-L/usr/local/cuda/bin/../lib"
#$ CUDAFE_FLAGS=
#$ OPENCC_FLAGS=
#$ PTXAS_FLAGS=
#$ "/usr/bin"/clang -stdlib=libstdc++ -D__CUDA_ARCH__=300 -E -x c++    -DCUDA_DOUBLE_MATH_FUNCTIONS  -D__CUDACC__ -D__NVCC__  -std=c++11 "-I/usr/local/cuda/bin/../include" "-I/usr/local/include/" "-I/usr/local/include/**"    -D"_MBCS" -include "cuda_runtime.h" -m64 -o "/var/folders/sw/7xhtxxnd39x8r5zy9tkq94780000gn/T//tmpxft_00001010_00000000-6_Visualizer.cpp1.ii" "Visualizer.cu"
Visualizer.cu:4:10: fatal error: 'array' file not found
#include <array>
         ^
1 error generated.
# --error 0x1 --
-Xcompiler="--stdlib=libstdc++"