Вопрос или проблема
Я пытаюсь настроить инструмент, который требует nvcc, но не могу этого сделать. Вот что у меня есть на данный момент:
- Установлен инструментальный комплект CUDA
- Проверил с помощью nvcc -V
вывод:
nvcc: NVIDIA (R) Cuda compiler driver
Авторское право (c) 2005-2013 NVIDIA Corporation
Собрано в Fri_Mar_14_19:30:01_PDT_2014
Инструменты компиляции Cuda, выпуск 6.0, V6.0.1
- Инструментальный комплект CUDA установлен по адресу /usr/local/cuda-7.0
- Ссылка на /usr/local/cuda (инструмент смотрит в этот каталог)
Когда я запускаю setup.py
я получаю несколько сообщений об ошибках, наиболее важные сообщения об ошибках:
/bin/sh: /usr/local/cuda/bin/nvcc: невозможно выполнить бинарный файл: Ошибка формата Exec
none
не удалось выполнить команду '/usr/local/cuda/bin/nvcc -V'
~пропуская много строк
SystemError: Компилятор CUDA Nvida 'nvcc' не может быть найден.
В то время как…
user@workgroup:~$ cd /usr/local/cuda
user@workgroup:~/usr/local/cuda$ ls
bin2c
computeprof
crt
cudafe
cudafe++
cuda-gdb
cuda-gdbserver
cuda-install-samples-7.0.sh
cuda-memcheck
cuobjdump
fatbinary
filehash
nsight
nvcc << да, он там!
nvcc.profile
nvdisasm
nvlink
nvprof
nvprune
nvvp
ptxas
test
uninstall_cuda_7.0.pl
Что здесь не так? Очевидно, что он установлен, и я (почти) уверен, что расположение каталога правильное :\
PS: я пытался добавить $PATH в файл .bashrc, но безуспешно:
PATH=/usr/local/cuda-7.0/bin:$PATH
PATH=/usr/local/cuda/bin:$PATH
Буду признателен за любой ответ
Всё уже спасибо!
PPS: я использую cygwin…
редактировать
вывод типа (#1):
user@workgroup~/usr/local/cuda/bin
type nvcc
nvcc закеширован (/cygdrive/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v6.0/bin/nvcc)
вывод типа (#2 – (несколько минут спустя) я не знаю, что я сделал):
user@workgroup~/usr/local/cuda/bin
type nvcc
nvcc находится по адресу /usr/local/cuda/bin/nvcc (то же самое, что и каталог cuda-7.0, но начало вывода немного отличается (nvcc закеширован))
Основная ошибка, вызывающая проблему, заключается в том, что nvcc не может быть выполнен, что может вызвать это?
bash: /usr/local/cuda/bin/nvcc: невозможно выполнить бинарный файл: Ошибка формата Exec
Похоже, это было вызвано попыткой использовать инструментальный комплект CUDA для Linux под CYGWIN. Единственная конфигурация, которая будет работать на платформе Windows, – это использование инструментального комплекта Windows с поддерживаемой версией Visual Studio.
Ответ или решение
Ошибка "nvcc can’t be found", с которой вы столкнулись, является распространенной проблемой, особенно в средах, где используется Cygwin для работы с CUDA. Давайте разберем вашу ситуацию и выясним основные моменты, которые могут привести к возникновению данной ошибки, а также способы ее устранения.
Описание проблемы
Из ваших данных видно, что вы установили CUDA Toolkit, проверили версию nvcc и убедились, что файл nvcc действительно существует в соответствующей директории. Однако, при выполнении setup.py
возникает ошибка:
/bin/sh: /usr/local/cuda/bin/nvcc: cannot execute binary file: Exec format error
Это указывает на то, что система не может выполнить бинарный файл nvcc, и причина, скорее всего, связана с несовместимостью форматов.
Анализ
-
Использование Cygwin:
Cygwin предоставляет среду, в которой можно использовать некоторые утилиты и команды Linux, но не является полным воспроизведением Linux. CUDA Toolkit, который вы пытаетесь использовать, был предназначен для операционных систем на базе Linux. Это может привести к проблемам, так как бинарные файлы, такие как nvcc, не совместимы с Cygwin или Windows. -
Формат исполняемого файла:
Ошибка "Exec format error" возникает, когда вы пытаетесь запустить исполняемый файл, который не соответствует архитектуре вашей операционной системы. Например, вы можете пытаться выполнить 64-битный Linux бинарник на 32-битной системе или на системе, не поддерживающей Linux бинарные файлы.
Рекомендации по устранению
Чтобы решить эту проблему, следуйте следующим шагам:
-
Используйте Windows-версию CUDA Toolkit:
Убедитесь, что вы установили версию CUDA Toolkit, предназначенную для Windows. Это даст вам возможность работать с nvcc и другими инструментами CUDA напрямую в среде Windows без необходимости использования Cygwin. -
Убедитесь, что nvcc доступен в PATH:
После установки Windows-версии CUDA Toolkit убедитесь, что пути к бинарным файлам CUDA добавлены в системный PATH. Обычно это будет что-то вроде:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y\bin
где X.Y – это номер версии.
-
Перезапустите терминал или компьютер:
После внесения изменений в переменные среды (PATH) иногда требуется перезапустить терминал или даже компьютер, чтобы изменения вступили в силу. -
Проверка работоспособности nvcc:
Откройте командную строку (CMD) и выполните командуnvcc -V
. Это должно вернуть информацию о версии компилятора. -
Используйте Visual Studio:
Для разработки с использованием CUDA на Windows рекомендуется использовать Visual Studio, так как она предоставляет соответствующую поддержку и интеграцию с CUDA Toolkit.
Заключение
Использование Cygwin с CUDA Toolkit для Linux – это основной источник вашей проблемы. Переход на Windows-версию CUDA Toolkit позволит вам избежать проблем с несовместимостью и обеспечит правильную работу nvcc в вашей среде разработки. Если будут дополнительные вопросы или понадобится дальнейшая помощь, не стесняйтесь обращаться.
SEO элементы
Чтобы помочь другим пользователям в поиске решения данной проблемы, убедитесь, что в заголовках и тексте содержатся ключевые фразы, такие как "nvcc can’t be found", "Cygwin CUDA Toolkit", "использование Windows-версии CUDA", "Exec format error", и так далее. Это поможет улучшить видимость вашего поста в поисковых системах.