Я потратил почти целый день, пытаясь добиться этого, и, наконец, решил прийти к SO, потому что здесь будут люди, которые пробовали это =)
Я хотел бы получить машину GPU Amazon-EC2, работающую с rpud (или другим пакетом R GPU), либо cg1.4xlarge, либо g2.2xlarge, поскольку это единственные две машины с графическим процессором Amazon (AWS).
Этот пост Как запустить экземпляр GPU с помощью панели Amazon EC2? помог мне понять, что я не мог просто изменить мою машину rstudio-server на машину gpu, как Я использовал неправильный AMI.
Начал работу с этим AMI от Amazon CentOS 6 (x86_64) - с обновлениями
Поэтому я решил, что должен построить свой собственный, и начал следовать указаниям здесь http://www.r-tutor.com/gpu-computing/rpud-installation. Как и http://www.louisaslett.com/Talks/GPU_Programming_Basics_Getting_Started/Handout.pdf (Луис Аслетт - тот же парень, у которого есть потрясающая демонстрация использования rstudio-сервера на ec2 (http://www.louisaslett.com/RStudio_AMI/).
Оба из них приводят вас сюда: http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/index.html#package-manager-installation, поэтому вы можете получить набор инструментов CUDA (который, кажется, необходимость для GPU-вычислений). На некоторых машинах AWS уже установлен набор инструментов Cuda, однако я решил, что буду следовать указаниям с первой попытки (даже если они установлены, иногда управление версиями не было таким же, как некоторые из обучающих программ, которые я использую найденный). Поэтому я следую этим указаниям в T, и в итоге получаю несколько ошибок, например nvidia-settings-319.37-30.fc18.x86_64 (cuda) Requires: libgdk-x11-2.0.so.0()(64bit)
, когда я пытаюсь запустить примеры с помощью $ cuda-install-samples-5.5.sh <dir>
. Поэтому я загружаю все необходимые пакеты. Я попробую еще раз и закончил с ошибками rpud (подробно расскажет об этом позже).
Эта машина Ubuntu-12.04
Поэтому, конечно, я думаю, кто-то должен был создать AMI для этого и найти того, кто сделал это с помощью python. В любом случае, я могу использовать python из-за более высоких бонусов, но на этом этапе я хочу, чтобы он работал с R. Здесь: http://vasir.net/blog/opencl/installing-cuda-opencl-pyopencl-on-aws-ec2 является ссылкой на AMI/инструкции о том, как создать его с нуля, если хотите. Конечно, тогда вам нужно установить R, который по умолчанию соответствует R2.14, поэтому следуя этому замечательному сообщению Как установить R версии 3, чтобы запустить R.3.1.0 потому что rpud требует R >= R.2.8.
Следуя указаниям сайта r-tutor, перечисленным выше (либо просто используя install.packages('rpud')
, либо $ R CMD INSTALL rpud_<version>.tar.gz
, либо используя направления http://cran.r-project.org/web/packages/rpud/INSTALL, я получаю это сообщение:
* installing *source* package ‘rpud’ ...
checking "environment variable CUDA_HOME"... "CUDA_HOME not set; using default /usr/local/cuda"
checking for /usr/local/cuda/bin/nvcc... yes
"nvcc found"
checking "whether this is the 64 bit linux version of CUDA"... checking for /usr/local/cuda/lib64/libcublas.so... yes
"yes -- using /usr/local/cuda/lib64 for CUDA libs"
"using -I/usr/share/R/include for R header files"
"using -Wl,--export-dynamic -fopenmp -L/usr/lib/R/lib -lR -lpcre -llzma -lbz2 -lrt -ldl -lm for R shared libraries"
configure: creating ./config.status
config.status: creating src/Makefile
** libs
** arch -
/usr/local/cuda/bin/nvcc -c -I/usr/local/cuda/include -Xcompiler "-I/usr/share/R/include -fpic" rpud.cu -o rpud.o
/usr/local/cuda/bin/nvcc -c -I/usr/local/cuda/include -Xcompiler "-I/usr/share/R/include -fpic" rpudist.cu -o rpudist.o
rpudist.cu(159): warning: use of "=" where "==" may have been intended
rpudist.cu(159): warning: use of "=" where "==" may have been intended
ptxas /tmp/tmpxft_000006af_00000000-5_rpudist.ptx, line 904; warning : Double is not supported. Demoting to float
/usr/local/cuda/bin/nvcc -shared -Xlinker "-Wl,--export-dynamic -fopenmp -L/usr/lib/R/lib -lR -lpcre -llzma -lbz2 -lrt -ldl -lm -Wl,-rpath,/usr/local/cuda/lib64" -L/usr/local/cuda/lib64 -lcublas -lcuda rpud.o rpudist.o -o rpud.so
/usr/bin/ld: unrecognized option '-Wl'
/usr/bin/ld: use the --help option for usage information
collect2: ld returned 1 exit status
make: *** [rpud.so] Error 1
ERROR: compilation failed for package ‘rpud’
* removing ‘/home/ubuntu/R/x86_64-pc-linux-gnu-library/3.1’/rpud’
Итак, я пытаюсь выяснить, что делает -Wl, что приводит меня в другой тупик здесь http://www.talkstats.com/showthread.php/43438-installing-rpud-got-unrecognized-option-Wl. Мой друг указал мне на http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html для получения дополнительной информации о -Wl
, но с изменением исходного кода rpud или поиска/установки правильный линкер может быть просто вне моих возможностей.
Что касается комментария:
[email protected]:~$ dpkg -l | grep nvidia
ii nvidia-current 319.37-0ubuntu1 NVIDIA binary Xorg driver, kernel module and VDPAU library
ii nvidia-current-dev 319.37-0ubuntu1 NVIDIA binary Xorg driver development files
ii nvidia-modprobe 319.37-0ubuntu1 Load the NVIDIA kernel driver and create device files
ii nvidia-settings 319.37-0ubuntu1 Tool for configuring the NVIDIA graphics driver
Я надеюсь, что кто-то использует rpud на ubuntu и может предоставить любые дальнейшие указания о том, как заставить работать rpud. Спасибо заранее за ваше время. Если вам нужна дополнительная информация, не стесняйтесь комментировать.
EDIT 4/8/2014
Следуя пошаговому руководству python, http://enja.org/category/tutorial/advcl/, я могу получить простую программу, запущенную на графическом процессоре, пример python/part1 работает отлично. Поэтому я знаю, что драйверы NVIDIA работают нормально, по крайней мере для python. Однако мне еще предстоит найти прохождение R, которое даже правильно загрузит пакеты.
Дальнейшие результаты исследования Python: у меня есть 2 устройства на моей текущей машине, которые работают.
Choose device(s):
[0] <pyopencl.Device 'Tesla M2050' on 'NVIDIA CUDA' at 0x2806460>
[1] <pyopencl.Device 'Tesla M2050' on 'NVIDIA CUDA' at 0x28064b0>
* Это можно увидеть, запустив любой скрипт python из учебника по графическому процессору python
Редактировать 4/9/2014
Зная, что Python взаимодействует с OpenCL, заставило меня думать, не мог ли R сделать то же самое? Очевидно, кто-то другой подумал о том же и построил пакет "OpenCL"
Итак, я запустил install.packages('OpenCL')
и IT WORKED. Затем запускаем некоторый пример кода из http://cran.r-project.org/web/packages/OpenCL/OpenCL.pdf ТАКЖЕ РАБОТАЕТ.
В этот момент у меня остается только один вопрос: кому-то еще удалось связать GPU с R, и если да, то как они это сделали?
Я отправлю поэтапный шаг в качестве ответа, но мне хотелось бы увидеть другие способы.