我花了差不多一整天试图让这个运行起来,最后决定来到SO,因为这里有人会尝试这个=)
我想得到一台运行rpud(或其他R GPU包)的Amazon-EC2 GPU机器,cg1.4xlarge或g2.2xlarge,因为它们是亚马逊(AWS)唯一的两台GPU机器.
这篇文章如何使用Amazon EC2 Panel运行GPU实例?帮助我意识到我不能只是将我的rstudio-server机器更改为gpu机器,因为我使用了错误的AMI.
从Amazon CentOS 6(x86_64)开始使用此AMI - 使用更新
因此我决定自己构建并开始遵循http://www.r-tutor.com/gpu-computing/rpud-installation中的说明.和http://www.louisaslett.com/Talks/GPU_Programming_Basics_Getting_Started/Handout.pdf一样(路易斯·阿斯莱特也是一个在ec2上使用rstudio-server的惊人演示的人(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
.所以我下载了所有必需的软件包.我再次尝试并最终得到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_
使用指示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的源代码或查找/安装正确的链接器可能就在外面我的能力.
关于评论:
ubuntu@ip-xx-xx-xx:~$ 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
我希望有人在ubuntu上使用rpud,并可以提供有关如何使rpud工作的任何进一步指导.在此先感谢您的时间.如果您需要更多信息,请随时发表评论.
编辑2014年4月8日
在python演练http://enja.org/category/tutorial/advcl/之后,我能够在GPU上运行一个简单的程序,python/part1示例运行完美.所以我知道NVIDIA驱动程序工作正常,至少对于python而言.但是,我还没有找到一个R walk-through,甚至可以正确加载包.
Python探索的进一步发现:我当前的机器上有2台设备都可以工作.
Choose device(s): [0][1]
*可以通过运行python GPU教程中的任何python脚本来看到这些
编辑2014年4月9日
知道Python正在与OpenCL接口让我觉得,R不能做同样的事吗?显然,其他人已经想到了同样的事情,并构建了包'OpenCL'
所以我跑了install.packages('OpenCL')
,IT工作.然后从http://cran.r-project.org/web/packages/OpenCL/OpenCL.pdf运行一些示例代码.
在这一点上,我唯一的问题是,是否有其他人成功地将GPU与R接口,如果是这样,他们是如何做到的?
我将逐步发布作为答案,但我希望看到其他方式.