中国分布式计算论坛

 找回密码
 新注册用户
搜索
查看: 13320|回复: 27

在原生Linux64环境下进行GPU2/3运算和远程登录管理教程

[复制链接]
发表于 2011-10-19 21:38:30 | 显示全部楼层 |阅读模式
本帖最后由 eai 于 2012-4-26 23:53 编辑

在ubuntu用cuda运行folding@home (注:只有nvidia gf8400  或以上并且显存是256mb以上的显卡才能运行cuda)

1.  安装跟配置ubuntu

     本文使用的是ubuntu12.04 64位desktop版本, 关于ubuntu的安装跟配置方法,请到ubuntu中文论坛http://forum.ubuntu.org.cn或参考 《ubuntu8.04速成手册》,里面有详细说明,这里不再一一叙述。需要注意的是我们使用的是64位系统,它是能兼容32位程序,但需要在系统终端里面执行以下命令来安装相应的32位库文件:
     sudo apt-get install ia32-libs ia32-libs-gtk linux32 lib32asound2
     这些问题在《ubuntu8.04速成手册》里面都有详细说明,ubuntu新手建议先按着手册上的内容从头到尾做一遍,就能很快掌握并熟悉ubuntu系统环境。
    12.04镜像可到  http://releases.ubuntu.com/precise/下载 ,其中ubuntu-12.04-desktop-amd64.iso就是



2. 安装最新的 wine版本
      在终端输入以下命令
      sudo apt-get install wine
      wine notepad
      这样就能安装和配置好wine
      需要下载最新版本的wine可参考此网页:http://www.winehq.org/download/ubuntu

3. 安装nvidia显卡驱程     
     ubuntu12.04 默认的Nvidia驱动是295.40,一般来说可以正常使用,如果有新的驱动程序,可到nvidia官网下载,以下简要介绍在ubuntu12.04手动编译驱程

      首先安装好编译环境
     sudo apt-get install linux-headers-$(uname -r)$  build-essential
      然后到nvidia网站下载驱程
        http://cn.download.nvidia.com/XF ... x-x86_64-295.40.run
      OK,基本工作做好后:
     首先我们按 ctrl+alt+F1退出X,输入用户名跟密码后,进入超级终端:
     然后我们需要停止X服务:
     sudo  stop lightdm
     关闭X服务后,我们就要彻底卸载系统原有的nvidia驱动程序跟内核模块,依顺序执行以下几个命令:
      sudo rmmod nvidia
      然后进入目录:
      cd  /lib/modules/3.2.*-generic/kernel/drivers/video  ,这里要注意的是 3.2.*-generic是我的linux系统内核,你用的系统内核版本可能不一样,请用命令 “uname -r” 来查看自己的内核版本,再进入相应的版本目录,进入video目录后,把相关的nvidia文件删除
     sudo rm nv*  
     到这里,旧有的nvidia驱程就算彻底删除完毕了,接下来我们就安装新驱程,先进入你下载新驱程的目录下,执行以下命令安装驱程:
        sudo sh ./NVIDIA-Linux-x86_64-295.40.run
      然后重启电脑
      sudo reboot
     一切顺利的话,重启系统后就会进入X,判断新驱程是否安装成功有以下三个原则:
     1.  能进入 X
      2.  能启动桌面特效
     3.  打开  “系统--首选项--Nvidia X server Settings”看看驱程版本是否你新安装的版本:


4. 安装cuda toolkit
    先下载toolkit3.0 32位版本(没看错,是9.04的cuda3.0包,因为目前还不支持cuda4.0)
    http://developer.download.nvidia ... x_32_ubuntu9.04.run
    然后安装
    sudo sh ./cudatoolkit_3.0_linux_32_ubuntu9.04.run
    安装过程一直默认就行,如果想删除toolkit ,只需删除 /usr/local/cuda目录即可
    安装完后执行以下命令:
    export LD_LIBRARY_PATH=/usr/local/cuda/lib:$LD_LIBRARY_PATH
    sudo sh -c "echo '/usr/local/cuda/lib' > /etc/ld.so.conf.d/cuda.conf"
    sudo ldconfig       

    修改完毕后,可以重启一下系统让新的系统环境生效 ,到这里cuda toolkit就算安装完成

5.  下载,安装,配置 cuda wrapper  
    当你已经完成上面的wine安装后,执行以下命令就能完成wrapper3.0的安装和配置
    cd ~/.wine/drive_c/windows/system32
    wget http://www.linuxfah.info/wrapper-3.0/cudart/cudart.dll.so
    wget http://www.linuxfah.info/wrapper-3.0/cufft/cufft.dll.so
    ln -s cudart.dll.so cudart32_30_14.dll
    ln -s cudart.dll.so cudart.dll
    ln -s cudart.dll.so nvcuda.dll
    ln -s cufft.dll.so cufft32_30_14.dll
    ln -s cufft.dll.so cufft.dll
    然后测试wrapper:
    ldd ~/.wine/drive_c/windows/system32/cudart.dll
    如果正常显示以下所有提示,则表示wrapper已经配置正确:
    linux-gate.so.1 =>  (0xf7706000)
        libcudart.so.3 => /usr/local/cuda/lib/libcudart.so.3 (0xf7697000)
        libwine.so.1 => /usr/lib32/libwine.so.1 (0xf7556000)
        libm.so.6 => /lib32/libm.so.6 (0xf752f000)
        libc.so.6 => /lib32/libc.so.6 (0xf73cc000)
        libdl.so.2 => /lib32/libdl.so.2 (0xf73c8000)
        libpthread.so.0 => /lib32/libpthread.so.0 (0xf73af000)
        librt.so.1 => /lib32/librt.so.1 (0xf73a6000)
        libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf72b7000)
        libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf72a7000)
        /lib/ld-linux.so.2 (0xf7707000)
       这里细心观察有没有提示哪个文件是 not found的,这个可能是你装了64位版本的cuda toolkit造成的,只要装32位版本就能解决。
     如果没有报文件 not found,那就代表wrapper安装并且配置成功!

6. 安装虚拟cuda设备
     首先我们先编写一个代码文件,文件名称就cudainit,文件代码如下:
#!/bin/bash

PATH=$PATH:/usr/local/cuda/bin

modprobe nvidia

if [ "$?" -eq 0 ]; then

# Count the number of NVIDIA controllers found.
N3D=`/usr/bin/lspci | grep -i NVIDIA | grep "3D controller" | wc -l`
NVGA=`/usr/bin/lspci | grep -i NVIDIA | grep "VGA compatible controller" | wc -l`

N=`expr $N3D + $NVGA - 1`
for i in `seq 0 $N`; do
mknod -m 666 /dev/nvidia$i c 195 $i;
done

mknod -m 666 /dev/nvidiactl c 195 255

else
exit 1
fi
    保存后,然后依顺序执行以下命令:
    chmod u+x cudainit
    sudo ./cudainit
    这样就会在 /dev目录下生成两个名称为nvidia0和nvidiactl的虚拟设备文件

7.  下载 FAH 并运行
     首先安装一个解压工具:
      sudo apt-get install unzip
     然后下载最新的gpu2或gpu3客户端
     gpu2:
     http://www.stanford.edu/~friedri ... in32-GPU_XP-631.zip
     gpu3:
     http://www.stanford.edu/~friedri ... in32-GPU_XP-641.zip
     解压缩后进入目录,删除里面所有的dll文件:
      rm *.dll
     然后就可运行fah
     gpu2执行:
     nice wine Folding@home-Win32-GPU.exe -verbosity 9 -forcegpu nvidia_g80
     gpu3执行:
     nice wine Folding@home-Win32-GPU.exe -verbosity 9 -forcegpu nvidia_fermi
     如果有多张显卡的朋友可尝试添加参数  -gpu x ,其中x为0~9数字以对应多卡 ,高端的显卡还可以在 -verbosity参数前 加 -advmethods参数以获得更高级的运算包*_*

    程序执行后会问你在FAH注册的用户名跟团队号码(例如可以填FAH中国团队号码 3213),然后其余的都可以用默认选项,如果你以上的配置都正确无误的话,你就会看到FAH cuda运行成功了!恭喜你!


关于如何在原生linux上运行SMP2/BIGADV请参考ONLY兄弟的文章:http://www.equn.com/forum/thread-31678-1-1.html

关于安装以外的一些题外话:
1.  关于 fahmon linux版本的安装
fahmon 是一个检测fah客户端运行情况的软件,有兴趣的可以到fahmon.net去下载最新版本的源代码,然后自己编译安装,安装过程若出现库文件找不到的情况,可以到新立德搜索相关关键字,下载其dev版本,编译安装完毕后,若提示找不到文件libwxcurl.so.1,则需要在终端运行一次命令:
  sudo ldconfig
一般就能解决。

2. wine需要再安装nvidia的windows驱程跟directx吗?
   均不需要安装windows驱程跟directx,一切均使用原生的linux驱程

3.  如何让fah 在进入系统时自动运行
     首先建立启动文件,执行以下程序:
     sudo gedit /etc/init.d/fahautorun
     在里面添加以下内容:
#!/bin/bash

pushd /home/用户名/Folding@home-Win32-GPU_XP-631/
su 用户名 -c "nice wine Folding@home-Win32-GPU.exe -verbosity 9 -forcegpu nvidia_g80"
popd
      保存,退出。这里说明的是第三行是你的FAH目录路径。
      然后修改文件属性为可执行:
     sudo chmod +x /etc/init.d/fahautorun
     执行以下命令,建立链接到启动目录(注意大小写):
     sudo ln -s /etc/init.d/fahautorun /etc/rc2.d/S99fahautorun
     这样每次进入系统都会自动运行fah

4. 如何终止程序的运行
如果在X下只要打开“系统--系统管理--系统监视器”,在里面查看 Fahcore_15.exe 跟Folding@home-Win32-Gpu.exe两个进程,然后关闭这两个进程就行
如果在终端下就要用 ps -auxw命令查看这两个进程的PID号码 ,然后用kill把相应PID进程杀掉。

5. 关于ubuntu下fah cuda 跟win下 fah cuda的性能对比
win下的效率会更高一点,毕竟在ubuntu下是经过wine层跟cuda wrapper,但性能相差的并不明显,因为使用的是64位系统,而且也是原生的64位显卡驱程,有兴趣的朋友可以对比一下,但对于我这个已经习惯用ubuntu的人来说,这些性能上的微小差距意义并不大。同时也希望FAH能早日推出64位linux系统支持cuda的客户端,这样性能应该会有更明显的提高。
值得高兴的是stanford的开发人员已经着手新客户端的开发,有兴趣的网友可参考以下网页:
https://fah-web.stanford.edu/projects/FAHClient/wiki/BetaRelease
目前v7仍不支持在linux直接运行gpu运算
6.关于远程管理
在linux下用wine跑gpu的有一个很重要的好处,如果在windows用cuda跑,你只要用mstsc远程登录进行管理的话,CUDA的运行就会挂掉(目前还没解决方法?),而在 linux下用wine跑,远程登录完全没问题一切运行正常,因此更适合多机远程管理,虽然用wine时会多消耗一点cpu资源,但对于多核的现代cpu 是小菜一碟。

要远程登录ubuntu服务器,首先必需在ubuntu上打开“系统-首选项-远程桌面”,把“允许其他人查看您的桌面”和“允许其他人控制您的桌面”勾上。
screenshot4.png
从windows远程管理ubuntu,只需使用windows自带的远程登录工具mstsc,输入服务器的ip地址,管理员ID和密码即可进入服务器进行管理操作
如果从ubuntu远程登录ubuntu,则可用10.10自带的终端服务客户端登录 “应用程序--互联网--终端服务客户端”
screenshot3.png
screenshot5.png

评分

参与人数 1基本分 +80 收起 理由
金鹏 + 80 精品文章

查看全部评分

发表于 2011-10-19 22:29:38 | 显示全部楼层
wine应该可以
发表于 2011-10-19 22:37:37 | 显示全部楼层
发表于 2011-10-19 22:56:44 | 显示全部楼层
回复 3# 金鹏


我记得上次看的时候V7还不支持linux的GPU运算……
发表于 2011-10-19 23:41:01 | 显示全部楼层
回复 4# Shadowmourne


    V7不行,不然国庆也不会少张卡……
发表于 2011-10-20 00:44:29 | 显示全部楼层
回复 5# nekoko


求助……
linux下的V7客户端要求必须python 2.6和libGLEW 1.5
但是本机安装的是python2.7和libGLEW 1.6……而且不能回滚
只能下源码自己编译吗?印象中python貌似不可以同时安装多个版本……
 楼主| 发表于 2011-10-20 01:05:19 | 显示全部楼层
向下兼容的吧
发表于 2011-10-20 01:19:37 | 显示全部楼层
回复 7# eai


    正常情况下是向下兼容的……但是V7要求的是版本python版本=2.6而不是>2.6……
发表于 2011-10-20 07:05:51 | 显示全部楼层
回复 8# Shadowmourne


没事儿更新python干什么……
 楼主| 发表于 2011-10-20 08:46:43 | 显示全部楼层
v7貌似只支持windows的gpu运算?在linux跑却是用了cpu运行
 楼主| 发表于 2011-10-20 09:15:00 | 显示全部楼层
看了一下外国论坛的讨论,的确目前V7不能在linux下跑gpu,只能在win上跑,而且研发员对何时推出linux的gpu功能时间还不确定,看了目前在native linux下只能继续用wine跑gpu了,郁闷
发表于 2011-10-20 09:54:35 | 显示全部楼层
回复 9# nekoko


    从装上系统,python版本就是2.7了……
 楼主| 发表于 2011-10-20 20:37:12 | 显示全部楼层
已经重新整理了在原生linux利用wine跑gpu的资料放到一楼,以前曾经写过一篇,现在重新整理精简后并新添了一点资料,

   以前的帖子在这里:http://www.equn.com/forum/thread-22220-1-1.html以供参考
发表于 2011-10-20 20:42:55 | 显示全部楼层
本帖最后由 金鹏 于 2011-10-20 20:50 编辑

回复 13# eai

感谢兄弟再出精品,兄弟们又多了个好教程

兄弟不必谦虚,标题改成   在native linux下进行GPU3的显卡运算教程  吧
 楼主| 发表于 2011-10-20 20:54:20 | 显示全部楼层
听金版指示改了标题, 其实用wine运行实属无奈,还是要希望stanford的开发者们继续努力才行
您需要登录后才可以回帖 登录 | 新注册用户

本版积分规则

论坛官方淘宝店开业啦~
欢迎大家多多支持基金会~

小黑屋|手机版|Archiver|中国分布式计算总站 ( 沪ICP备05042587号 )

GMT+8, 2019-10-23 05:00

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表