Это аргумент quit()
. См. ?quit
.
Аргументы :
status: the (numerical) error status to be returned to the operating
system, where relevant. Conventionally ‘0’ indicates
successful completion.
Подробности :
Some error statuses are used by R itself. The default error
handler for non-interactive use effectively calls ‘q("no", 1,
FALSE)’ and returns error code 1. Error status 2 is used for R
‘suicide’, that is a catastrophic failure, and other small numbers
are used by specific ports for initialization failures. It is
recommended that users choose statuses of 10 or more.
Как уже указывалось, nvcc зависит от gcc 4.4. Можно настроить nvcc на использование правильной версии gcc без передачи каких-либо параметров компилятора, добавив программные ссылки в каталог bin, созданный с помощью установки nvcc.
. Бинарный каталог cuda по умолчанию (установка по умолчанию) usr / local / cuda / bin, добавление softlink к правильной версии gcc из этого каталога достаточно:
sudo ln -s /usr/bin/gcc-4.4 /usr/local/cuda/bin/gcc
CUDA после некоторых изменений заголовков, совместимых с gcc4.7 и, возможно, более высокой версией: https://www.udacity.com/wiki/cs344/troubleshoot_gcc47
Решение Gearoid Murphy работает как шарм. Для меня у меня было два каталога для cuda -
/usr/local/cuda
/usr/local/cuda-5.0
. Мгновенные ссылки должны были добавляться только в каталог, упомянутый ниже -
/usr/local/cuda
Кроме того, как g ++, так и gcc soft ссылки требовались, как упоминалось SchighSchagh.
Обновление:
Для CUDA 9:
sudo ln -s /usr/bin/gcc-6 /usr/local/cuda/bin/gcc
sudo ln -s /usr/bin/g++-6 /usr/local/cuda/bin/g++
Сначала необходимо установить gcc и g ++ 6:
sudo apt install gcc-6 g++-6
Старый ответ:
Для CUDA 8:
sudo ln -s /usr/bin/gcc-5 /usr/local/cuda/bin/gcc
sudo ln -s /usr/bin/g++-5 /usr/local/cuda/bin/g++
Сначала необходимо установить gcc и g ++ 5:
sudo apt install gcc-5 g++-5
Для таких людей, как я, которые запутываются при использовании cmake
, сценарий FindCUDA.cmake
переопределяет некоторые вещи из nvcc.profile
. Вы можете указать компилятор хоста nvcc
, установив CUDA_HOST_COMPILER
в соответствии с http://public.kitware.com/Bug/view.php?id=13674 .
Это работает для fedora 23. Репозитории compat gcc будут немного отличаться в зависимости от вашей версии fedora.
Если вы устанавливаете следующие репозитории:
sudo yum install compat-gcc-34-c++-3.4.6-37.fc23.x86_64 compat-gcc-34-3.4.6-37.fc23.x86_64
Теперь сделайте как упоминалось выше, предполагается, что ваша папка cuda bin находится в /usr/local/cuda/
sudo ln -s /usr/bin/gcc-34 /usr/local/cuda/bin/gcc
sudo ln -s /usr/bin/g++-34 /usr/local/cuda/bin/g++
Теперь вы можете скомпилировать с nvcc
без ошибки версии gcc.
Чтобы скомпилировать примеры CUDA 8.0 на Ubuntu 16.10, я сделал:
sudo apt-get install gcc-5 g++-5
cd /path/to/NVIDIA_CUDA-8.0_Samples
# Find the path to the library (this should be in NVIDIA's Makefiles)
LIBLOC=`find /usr/lib -name "libnvcuvid.so.*" | head -n1 | perl -pe 's[/usr/lib/(nvidia-\d+)/.*][$1]'`
# Substitute that path into the makefiles for the hard-coded, incorrect one
find . -name "*.mk" | xargs perl -pi -e "s/nvidia-\d+/$LIBLOC/g"
# Make using the supported compiler
HOST_COMPILER=g++-5 make
Это имеет то преимущество, что не изменяйте всю систему или не создавайте символические ссылки только для двоичных файлов (что может вызвать проблемы с связыванием библиотек .)
Другим способом настройки nvcc для использования конкретной версии gcc (например, gcc-4.4) является редактирование nvcc.profile и изменение PATH для включения путь к gcc, который вы хотите использовать первым.
Например (gcc-4.4.6 установлен в / opt):
PATH += /opt/gcc-4.4.6/lib/gcc/x86_64-unknown-linux-gnu/4.4.6:/opt/gcc-4.4.6/bin:$(TOP)/open64/bin:$(TOP)/share/cuda/nvvm:$(_HERE_):
Местоположение nvcc.profile меняется, но он должен находиться в том же каталоге, что и исполняемый файл nvcc .
Это немного взломать, поскольку nvcc.profile не предназначен для настройки пользователя в соответствии с руководством по nvcc, но это решение было наилучшим для меня.
mkdir /usr/local/bin/cuda-hack && ln -s /usr/bin/g++-5 /usr/local/bin/cuda-hack
– Sami Liedes
9 June 2017 в 21:00
В $CUDA_HOME/include/host_config.h
найдите такие строки (они могут незначительно меняться между разными версиями CUDA):
//...
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 9)
#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!
#endif [> __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 9) <]
//...
Удалите или измените их, соответствующие вашему условию.
Обратите внимание на этот метод является потенциально опасным и может нарушить вашу сборку. Например, gcc 5 использует C ++ 11 по умолчанию, однако это не относится к nvcc с CUDA 7.5. Обходным путем является добавление
--Xcompiler="--std=c++98"
для CUDA & lt; = 6.5
или
--std=c++11
для CUDA> = 7.0.
Проверьте , как использовать «update-alternatives» , чтобы обойти эту проблему:
... Если вы установите gcc 4.6, вы также можете использовать обновление -alternatives, чтобы легко переключаться между версиями. Это можно настроить с помощью:
blockquote>sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7 sudo update-alternatives --config gcc
При использовании cmake
для меня ни один из файлов редактирования файлов и ссылки не работал, поэтому я скомпилирован с использованием флагов, которые указывают версию gcc / g ++. cmake -DCMAKE_C_COMPILER=gcc-6 -DCMAKE_CXX_COMPILER=g++-6 ..
Работал как шарм.
В большинстве дистрибутивов у вас есть возможность установить еще одну версию gcc и g ++ у самого последнего компилятора, такого как gcc-4.7. Кроме того, большинство систем сборки знают о переменных среды CC
и CXX
, которые позволяют указать другие компиляторы C и C ++ соответственно. Я предлагаю что-то вроде:
CC=gcc-4.4 CXX=g++-4.4 cmake path/to/your/CMakeLists.txt
Для Make-файлов должен быть аналогичный способ. Я не рекомендую устанавливать настраиваемые символические ссылки в / usr / local, если вы не знаете, что делаете.
Для CUDA7.5 эти линии работают:
sudo ln -s /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc
sudo ln -s /usr/bin/g++-4.9 /usr/local/cuda/bin/g++
Решение Gearoid Murphy работает лучше для меня, так как на моем дистрибутиве (Ubuntu 11.10) gcc-4.4 и gcc-4.6 находятся в одном каталоге, поэтому -compiler-bindir не помогает. Единственное предостережение - мне также пришлось установить g ++ - 4.4 и symlink также:
sudo ln -s /usr/bin/gcc-4.4 /usr/local/cuda/bin/gcc
sudo ln -s /usr/bin/g++-4.4 /usr/local/cuda/bin/g++
gcc 4.5 и 4.6 не поддерживаются с CUDA - код не будет компилироваться, а остальная часть инструментальной цепочки, включая cuda-gdb, не будет работать должным образом. Вы не можете использовать их, и ограничение не подлежит обсуждению.
Единственное решение - установить версию gcc 4.4 в качестве второго компилятора (это позволит большинство дистрибутивов). Существует опция nvcc --compiler-bindir
, которая может использоваться для указания на альтернативный компилятор. Создайте локальный каталог, а затем создайте символические ссылки на поддерживаемые исполняемые файлы версии gcc. Передайте этот локальный каталог в nvcc через опцию --compiler-bindir
, и вы сможете скомпилировать код CUDA, не затрагивая остальную часть вашей системы.
EDIT:
Примечание. что этот вопрос и ответ относятся к CUDA 4. Так как это было написано, NVIDIA продолжала расширять поддержку более поздних версий gcc в новой версии CUDA toolchain
В настоящее время (с CUDA 9) отсутствует поддержка gcc 8 в CUDA.
Обратите внимание, что недавно NVIDIA добавила очень полезную таблицу здесь , который содержит поддерживаемый компилятор и матрицу ОС для текущего выпуска CUDA.
gcc 4.9.3
на SLES 11 SP3 без каких-либо проблем.
– Al Bundy
6 February 2016 в 14:26
Мне пришлось установить более старые версии gcc, g ++.
sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4
Убедитесь, что gcc-4.4 находится в / usr / bin /, а также для g ++. Тогда я мог бы использовать вышеприведенное решение:
sudo ln -s /usr/bin/gcc-4.4 /opt/cuda/bin/gcc
sudo ln -s /usr/bin/g++-4.4 /opt/cuda/bin/g++
nvcc
вызовы работают, но скажем, применяяmake
к CUDA Samples, вскоре приводят вызовы, начинающиеся с:nvcc -ccbin g++
. Для меня я использовалsudo ln -s /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc
иsudo ln -s /usr/bin/g++-4.9 /usr/local/cuda/bin/g++
. – user2023370 21 December 2015 в 13:32cmake .. && make
, вы можете попробоватьcmake -D CUDA_NVCC_FLAGS="-ccbin gcc-4.4" .. && make
. Если вы используете plainMakefile
, вы можете попробоватьmake CXX=g++-4.4 CC=gcc-4.4
. – patryk.beza 4 April 2016 в 18:54