Ошибка связывания CUDA в OS X El Capitan

Я пытался установить CUDA и cuDNN для TensorFlow в соответствии с инструкциями на странице TensorFlow . Все работает, пока не сделаю следующее:

$ cp -r /usr/local/cuda/samples ~/cuda-samples
$ pushd ~/cuda-samples
$ make

Затем я получаю следующую ошибку:

clang++  -rpath /Developer/NVIDIA/CUDA-7.5/lib -L/Developer/NVIDIA/CUDA-7.5/lib -framework CUDA -o clock_nvrtc clock.o  -lnvrtc
ld: framework not found CUDA
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [clock_nvrtc] Error 1
make: *** [0_Simple/clock_nvrtc/Makefile.ph_build] Error 2

Мой вопрос, конечно, в том, что вызывает ошибку и как ее исправить. Я ранее установил CUDA 7.5, а затем установил 8.0. Вся CUDA (и ее установка) для меня просто черный ящик; Я просто пытаюсь заставить его работать с TensorFlow.

Спасибо!


person Jeremy Kahn    schedule 25.01.2017    source источник


Ответы (2)


Запустите в своем терминале следующее -

xcode-select --install

Затем попробуйте снова запустить make.

Видел ответ на форуме NVidia - https://devtalk.nvidia.com/default/topic/628298/cuda-samples-on-mac-os-x-mavericks-10-9-matrixmuldrv/

Это также задокументировано в этом кратком руководстве - http://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html#axzz4YvZYOZc0

person Pedro Jiménez    schedule 17.02.2017

Добавьте папку, содержащую папку CUDA.framework, в командную строку как таковую:

-F<folder>

Похоже, компоновщик не может найти фреймворк, и вам нужно указать его, где он находится.

person Top Sekret    schedule 25.01.2017
comment
Ошибка возникает, когда я запускаю make, а опция -F не ​​подходит для make. - person Jeremy Kahn; 26.01.2017
comment
Потому что это флаг компилятора - person Top Sekret; 26.01.2017
comment
Вам нужно добавить его в CFLAGS или аналогичный - person Top Sekret; 26.01.2017
comment
Когда я добавляю -F / Library / Frameworks, ошибка меняется на ld: library not found for -lnvrtc. - person Jeremy Kahn; 31.01.2017
comment
Так что добавьте также флаг с -L<somewhere>, где <somewhere> - это место, содержащее libnvrtc.dylib или libnvrtc.a - person Top Sekret; 31.01.2017