我正在使用MacOS Sierra 10.12.4并尝试使用兼容CUDA的NVIDIA GeForce GT 750M在我的MacBook Pro(2013年末)上运行CUDA 8.0。
我按照NVIDIA installation guide安装了Xcode 8.2和相应的命令行工具,但是当我尝试编译样本时,我收到以下错误:
$ make -C 1_Utilities / deviceQuery
/Developer/NVIDIA/CUDA-8.0/bin/nvcc-ccbin clang ++ -I ../../ common / inc -m64 -Xcompiler -arch -Xcompiler x86_64 -gencode arch = compute_20,code = sm_20 -gencode arch = compute_30,code = sm_30 -gencode arch = compute_35,code = sm_35 -gencode arch = compute_37,code = sm_37 -gencode arch = compute_50,code = sm_50 -gencode arch = compute_52,code = sm_52 -gencode arch = compute_60,code = sm_60 -gencode arch = compute_60,code = compute_60 -o deviceQuery.o -c deviceQuery.cpp
nvcc警告:'compute_20','sm_20'和'sm_21'体系结构已弃用,可能会在将来的版本中删除(使用-Wno-deprecated-gpu-targets来禁止警告)。
nvcc致命:不支持主编译器('clang')的版本('30900')
make:*** [deviceQuery.o]错误1
以下是我认为问题所在:
“make”命令使用了错误的clang,但我不知道如何更改/修复此问题。
在这里你可以看到我的机器上的两个版本的clang:
$ clang --version
clang version 3.9.0(tags / RELEASE_390 / final)
目标:x86_64-apple-darwin16.5.0 螺纹型号:posix
InstalledDir:/opt/local/libexec/llvm-3.9/bin$ / usr / bin / clang --version
Apple LLVM 8.0.0版(clang-800.0.42.1)
目标:x86_64-apple-darwin16.5.0
线程模型:posix InstalledDir:/Applications/Xcode_8.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
默认情况下如何让“make”命令在/ usr / bin / clang文件夹中使用正确的clang版本?
或者有没有办法告诉“make”命令通过添加一些参数/标签明确地在文件夹/ usr / bin / clang中使用clang版本?
如果有帮助的话,这里也是我的〜/ .bash_profile的样子:
# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
# MacPorts Installer addition on 2016-09-26_at_12:06:30: adding an appropriate PATH variable for use with MacPorts.
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
# Finished adapting your PATH environment variable for use with MacPorts.
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
# colorful terminal
export PS1="\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ "
export CLICOLOR=1
export LSCOLORS=ExFxBxDxCxegedabagacad
alias ls='ls -GFh'
# CUDA
export PATH=/Developer/NVIDIA/CUDA-8.0.61/bin${PATH:+:${PATH}}
export DYLD_LIBRARY_PATH=/Developer/NVIDIA/CUDA-8.0.61/lib\
${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
答案 0 :(得分:3)
通过make -n
作为干运行,您可以看到make
背后的真实命令。由于我没有基于nvidia的mac,我将向您展示linux版本作为示例:
"/usr/local/cuda-8.0"/bin/nvcc -ccbin g++ -I../../common/inc -m64 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_60,code=compute_60 -o deviceQuery.o -c deviceQuery.cpp
"/usr/local/cuda-8.0"/bin/nvcc -ccbin g++ -m64 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_60,code=compute_60 -o deviceQuery deviceQuery.o
mkdir -p ../../bin/x86_64/linux/release
cp deviceQuery ../../bin/x86_64/linux/release
您可以看到-ccbin
(或--compiler-bindir
)是设置主机编译器的实际参数。同样nvcc --help
会告诉你这个论点。
然后,您可以手动运行nvcc
或尝试在Makefile
中进行一些更改。
如果更改Makefile
,您可以轻松找到要设置的HOST_COMPILER
变量。 darwin版本的部分是这样的:
ifeq ($(TARGET_OS),darwin)
ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1)
HOST_COMPILER ?= clang++
endif
我猜你可以把它改成你自己的clang路径。