2013-07-19 3 views
0

Посмотрев на установку CUDA 5.0 в моей новой системе Fedora19, я обнаружил, что CUDA 5.5 был лучшим кандидатом, так как он пришел в формате rpm. Я следил за инструкциями по установке, найденной here, и все было здорово, пока я не попытаюсь скомпилировать образцы. Во-первых, он устанавливает образцы в/usr/local/cuda/samples, и я должен был убедиться, что мой LD_LIBRARY_PATH включен/usr/local/cuda/lib (а не только версия 5.5), но затем я получаю следующие два когда я пытаюсь запустить команду «сделать все».CUDA при сбое компиляции Fedora

../../common/inc/exception.h: In constructor ‘Exception<Std_Exception>::Exception()’: 
../../common/inc/exception.h:129:94: warning: delegating constructors only available with -std=c++11 or -std=gnu++11 [enabled by default] 
Exception<Std_Exception>::Exception() : 

Я думал, что C++ 11 является стандартной версией? А потом, когда я получаю пытаясь скомпилировать matrixMulDrv, я получаю следующее сообщение об ошибке, что на самом деле не имеет никакого смысла:

/usr/local/cuda-5.5/bin/nvcc -ccbin g++ -m64  -o matrixMulDrv matrixMulDrv.o -L/usr/lib64/nvidia -lcuda 
/bin/ld: cannot find -lcuda 
collect2: error: ld returned 1 exit status 

мне было интересно, если кто-то еще не было никаких проблем такого характера. Я переместился в 5.5, чтобы использовать текущие компиляторы gcc (4.8.1). Когда я смотрю в/usr/lib64/nvidia, я вижу все файлы, которые мне нужны, в том числе libcuda.so.1. Кто-нибудь еще видел это?

+0

Попробуйте «-std = C++ 11», если он сообщит вам об – doctorlove

+0

. Мне нужно найти, где он контролирует общие флаги и перезаписывать этот конкретный флаг. – NuclearAlchemist

ответ

1

Fedora 18 с GCC 4.7.2/GLIBC 2.16 является officially supported distro для CUDA 5.5 RC. Fedora 19 нет, и нет никаких указаний на поддержку GCC 4.8.x. Я не удивлен, что у тебя проблемы. libcuda.so, который вы видите в /usr/lib64/nvidia, был связан с другой версией GLIBC (2.16), отличной от most likely on your machine (2.17).

Единственный способ продвижения Fedora 19, который я могу себе представить, - это понизить ваш (т.е. установить альтернативный) GCC/GLIBC на тот, который поставляется с Fedora 18. Возможно, проще просто переключиться на Fedora 18.

+0

Хорошо, это то, чего я боялся.Я также сильно испортил свою среду, поэтому я собираюсь переустановить Fedora19 и оттуда. – NuclearAlchemist

+0

Вам не повезет, если вы переустановите F19, если вы также не планируете устанавливать (добавлять) другой GCC/GLIBC. Рискуя повторить себя, у вас может быть лучший опыт, если вы начнете с F18 вместо этого. –

+0

Извините, я должен был быть более ясным. Я собираюсь установить Fedora 19, а затем загружать разные gcc/glibc (что я и делал на моем mac), или просто ждать и видеть, что происходит. Сейчас мне не нужно мое развитие, это было бы просто потрясающе, так как кластер, на котором я собираюсь работать, имеет пару узлов tesla. – NuclearAlchemist

2

Что касается первого вопроса:

../../common/inc/exception.h: In constructor ‘Exception<Std_Exception>::Exception()’: 
../../common/inc/exception.h:129:94: warning: delegating constructors only available with -std=c++11 or -std=gnu++11 [enabled by default] 
Exception<Std_Exception>::Exception() : 

Эти сообщения только предупреждения, поэтому компиляция должна по-прежнему продолжают без проблем.

Что касается второго вопроса:.

/bin/ld: cannot find -lcuda 
collect2: error: ld returned 1 exit status 

загляните в/USR/lib64/NVIDIA и гарантировать, что libcuda.so и libcuda.so.1 Symlinks оба существуют и указывают на libcuda.so [ваш версия драйвера].

В моей установке символическая ссылка /usr/lib64/nvidia/libcuda.so не была создана по какой-либо причине. Если у вас также отсутствует, то тип (как корень):

ln -s /usr/lib64/nvidia/libcuda.so.VERSION /usr/lib64/nvidia/libcuda.so 

замена VERSION с номером версии вашего NVidia драйвера (например, libcuda.so.319.32).

Это решение проблемы?

+0

Спасибо за советы! Я дам вам знать, как это работает. Я думаю, что я просто испортил часть установки или получил несогласованные драйверы, установленные в той же области. – NuclearAlchemist

+0

Если вы хотите обойти ошибки, которые видите, я должен был бы указать, что если вы * только * включаете '/ usr/local/cuda/lib' в свой LD_LIBRARY_PATH и * не также *'/usr/local/cuda/lib64', у вас также будут проблемы, создавая 64-разрядные приложения. Возможно, это единственная проблема, основанная на вашем описании. Но я до сих пор не знаю, достаточно ли этого, чтобы он работал, или если вы столкнетесь с проблемами совместимости с F19 с помощью cuda 5.5. –

0

CUDA is highly specific to the Linux kernel version. Например, CUDA 6.5 гарантированно работает только с Fedora 20 kernel 3.12.

# Install kernel 3.16.2 
sudo yum -y install https://kojipkgs.fedoraproject.org/packages/kernel/3.16.2/201.fc20/x86_64/kernel-3.16.2-201.fc20.x86_64.rpm 
sudo yum -y install https://kojipkgs.fedoraproject.org/packages/kernel/3.16.2/201.fc20/x86_64/kernel-devel-3.16.2-201.fc20.x86_64.rpm 
sudo yum -y install libvdpau-devel 
sudo reboot 

# Install cuda 6.5 
wget http://developer.download.nvidia.com/compute/cuda/6_5/rel/installers/cuda_6.5.14_linux_64.run 
sudo bash cuda_6.5.14_linux_64.run --override 

Это может быть полезно, чтобы понизить ядро, чтобы соответствовать версии, указанной в CUDA System Requirements.

Смежные вопросы