中国分布式计算论坛

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

[原创] 在ubuntu用cuda运行folding@home

[复制链接]
发表于 2009-6-29 15:59:33 | 显示全部楼层 |阅读模式
文章欢迎转载,转载请注明出处:嘉骏苑 http://luckiss.blogcn.com

     今天终于成功在ubuntu9.04下用cuda运行folding@home了,少说废话,以下是详细安装过程,部分安装过程对于已经接触过 ubuntu的朋友已经比较熟悉,可以直接跳过阅读重要的部分,另外要注意的是只有nvidia gf8400  并且显存是256mb以上的显卡才能运行cuda。

1.  安装跟配置ubuntu

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

2. 安装最新的 wine版本
      首先加入最新wine的源地址,目前wine的最新版本是 1.1.24
      在终端输入:sudo gedit /etc/apt/sources.list
      在文件的最后加入:
      deb http://wine.budgetdedicated.com/apt jaunty main
      保存退出
      然后执行以下命令:
      sudo  apt-get update
      sudo apt-get install  wine
      这样就安装了wine,配置wine,则在终端运行 winecfg命令,更详细的wine配置问题,请参考ubuntu中文官网论坛相关文章:http://forum.ubuntu.org.cn /viewtopic.php?f=121&t=174310

3. 安装nvidia显卡驱程  (关键步骤)
      首先说明一下,我一共测试了180.51,180.60,185.18.04,185.18.14 四个版本的驱程,只有前两个180版本搭配任何版本的cudatoolkit都能运行成功,但185版本驱程均告测试失败。所以我以180.60版本来进行说明:
      首先到nvidia网站下载显卡驱程:ftp://download.nvidia.com/XFree86/Linux-x86_64/ ,这里进入180.60目录,里面有3个驱程文件,只有第三个 pkg2的驱程才是支持cuda的驱动文件,所以我们下载:ftp://download.nvidia.com/XFree86/Linux- x86_64/180.60/NVIDIA-Linux-x86_64-180.60-pkg2.run
       然后备份xorg.conf文件,以防驱程安装失败后的恢复(严格遵询此安装过程,出错几率很低)
     sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
     然后修改 /etc/default/linux-restricted-modules-common文件
    sudo gedit  /etc/default/linux-restricted-modules-common
    将最后那行 DISABLED_MODULES="" 改为:DISABLED_MODULES="nv nvidia_new"也就是在双引号里面加入nv nvidia_new  子句,保存退出。
       然后就需要安装编译环境
     sudo apt-get install linux-headers-$(uname -r)$  build-essential
     OK,基本工作做好后,戏玉开始了:
     首先我们按 ctrl+alt+F1退出X,输入用户名跟密码后,进入超级终端:
     然后我们需要停止X服务:
     sudo  /etc/init.d/gdm stop
     如果运行这个命令后听到显卡风扇声音加大,代表X服务已经停止了,如果没什么动静,可能需要重启系统,再重新进入超级终端再运行这个命令
     关闭X服务,我们就要彻底卸载系统原有的nvidia驱动程序跟内核模块,依顺序执行以下几个命令:
      sudo apt-get --prege remove nvidia-glx-*
      sudo apt-get autoremove
      sudo rmmod nvidia
      然后进入目录:
     cd  /lib/modules/2.6.28-13-generic/kernel/drivers/video  ,这里要注意的是2.6.28-13-generic是我的linux系统内核,你用的系统内核版本可能不一样,请用命令 “uname -r” 来查看自己的内核版本,再进入相应的版本目录,进入video目录后,把相关的nvidia文件删除
     sudo rm nv*  
     到这里,旧有的nvidia驱程就算彻底删除完毕了,接下来我们就安装新驱程,先进入你下载新驱程的目录下,执行以下命令安装驱程:
     sudo sh ./NVIDIA-Linux-x86_64-180.60-pkg2.run
     安装的过程中除了在询问 是否要联网下载内核那一步选择 NO以外,其余步骤一直选择yes或accept就可以顺利安装,驱程安装完毕后,需要重启系统:
     sudo reboot
     一切顺利的话,重启系统后就会进入X,判断新驱程是否安装成功有以下三个原则:
     1.  能进入 X
      2.  能启动3D桌面
     3.  打开  “系统--首选项--Nvidia X server Settings”看看驱程版本是否你新安装的版本:
   luckiss,20090629130217461.png   

      看,新显卡驱动安装成功了!

4. 安装cuda toolkit (关键步骤)
    在这里需要说明,我在测试过程用不同版本的显卡驱程搭配不同版本的cuda toolkit,185系列均告失败,而 180.51跟180.60驱程搭配 2.0, 2.1 2.2的cuda toolkit均成功运行,并且关键的是必须使用32位的cudatoolkit ,如果使用64位的cudatoolkit,在后面的配置时会报某些文件找不到的错误。
     首先我们到nvidia的官网下载cuda toolkit:
     http://www.nvidia.cn/object/cuda_get_cn.html
     这里我选择了32位2.2版本的 cuda toolkit, 最新的版本不一定是最好最稳定的,我建议你熟悉以后可以自己多尝试不同版本的运行效果会否更好些,里面说是for  ubuntu8.10的,这个并不重要,我们就下载cudatoolkit_2.2_linux_32_ubuntu8.10.run
     安装toolkit :
    sudo  sh ./cudatoolkit_2.2_linux_32_ubuntu8.10.run
     把它安装到默认目录,默认安装路径是   /usr/local/cuda ,以后想删除的话,只要把这个cuda目录直接删除就可以了
     安装完后需要把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  (关键步骤)
     首先我们下载cuda wrapper:
     http://www.gpu2.twomurs.com/wrapper2ndgen/2.1/cudart.dll.so
   如果下载不了,那是因为天朝起了长城阻碍我们访问外国网站,在这里我们先严重鄙视一下天朝,大家自己找代理服务器去下载这个文件吧,下载之后把它放到以下wine目录:
   /home/用户名/.wine/drive_c/windows/system32目录下,注意wine目录是隐藏目录,前面有一个.代表隐藏,然后把文件的名称改为 cudart.dll
   然后在终端输入以下命令建一个链接:
   ln -s ~/.wine/drive_c/windows/system32/cudart.dll ~/.wine/drive_c/windows/system32/nvcuda.dll
   然后我们进入以下目录:
   /usr/local/lib/,在这里我们新建一个wine目录
      sudo mkdir wine
      然后把cudart.dll.so复制到这里,然后再复制多一次cudart.dll.so,并改名为nvcuda.dll.so
     OK,我们来检验一下以上的配置是否已经成功了,执行命令:
     ldd /usr/local/lib/wine/cudart.dll.so
     应该会看到显示类似如下的提示:
     linux-gate.so.1 =>  (0xf7f43000)
    libcudart.so.2 => /usr/local/cuda/lib/libcudart.so.2 (0xf7ee6000)
    libwine.so.1 => /usr/lib32/libwine.so.1 (0xf7d87000)
    libm.so.6 => /lib32/libm.so.6 (0xf7d61000)
    libc.so.6 => /lib32/libc.so.6 (0xf7bfe000)
    libdl.so.2 => /lib32/libdl.so.2 (0xf7bfa000)
    libpthread.so.0 => /lib32/libpthread.so.0 (0xf7be1000)
    librt.so.1 => /lib32/librt.so.1 (0xf7bd8000)
    libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf7ae9000)
    libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf7ad9000)
    /lib/ld-linux.so.2 (0xf7f44000)
     这里细心观察有没有提示哪个文件是 not found的,例如像报称libcudart.so.2 => 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  cuda并运行!
     紧张的时刻到了,我们先下载支持cuda的FAH客户端:
    http://www.stanford.edu/group/pa ... in32-GPU_XP-623.zip
   解压后,进入该目录,执行以下命令:
   nice wine Folding@home-Win32-GPU.exe -verbosity 9 -forcegpu nvidia_g80
   程序会问你在FAH注册的用户名跟团队号码(例如可以填FAH中国团队号码 3213),然后其余的都可以用默认选项,如果你以上的配置都正确无误的话,你就会看到FAH cuda运行成功了!恭喜你!

luckiss,20090629135806834.png




关于安装外的一些题外话:
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-623/
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_11.exe 跟Folding@home-Win32-Gpu.exe两个进程,然后关闭这两个进程就行
如果在终端下就要用 ps -auxw命令查看这两个进程的PID号码 ,然后用kill把相应PID进程杀掉。

5. 关于ubuntu下fah cuda 跟xp下 fah cuda的性能对比
这个理论上可能是xp下的效率会略高一点,毕竟在ubuntu下是经过wine层跟cuda wrapper,但性能相差的并不明显,因为使用的是64位系统,而且也是原生的64位显卡驱程,有兴趣的朋友可以对比一下,但对于我这个已经习惯用 ubuntu的人来说,这些性能上的微小差距意义并不大。同时也希望FAH能早日推出64位linux系统支持cuda的客户端,这样性能应该会有更明显的提高。

[ 本帖最后由 eai 于 2009-10-17 18:37 编辑 ]

评分

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

查看全部评分

发表于 2009-6-29 16:19:26 | 显示全部楼层
很详尽,支持。
发表于 2009-6-29 16:36:06 | 显示全部楼层

回复 #1 eai 的帖子

感谢兄弟的全新尝试,你的帖子也许就是以后的经典教程
发表于 2009-7-11 23:05:42 | 显示全部楼层
楼主这个教程为解决N卡不同SHADER数量显卡混插跑FAH时从卡效能下降40%以上的问题提供了一个不错的解决办法,期待有人能尝试
 楼主| 发表于 2009-7-12 06:29:03 | 显示全部楼层
金版尝试过了?这几天的天气实在太热,每天平均温度都超过33度,白天不敢跑了,害怕显卡又牺牲掉

[ 本帖最后由 eai 于 2009-7-12 06:31 编辑 ]
发表于 2009-7-12 08:49:49 | 显示全部楼层
以前在二奶机上试过98GT+96GSO从卡效能下降40%,
260+ +96GSO出现EUE,

其他人试过GTS250+96GSO也是出现40%效能下降

这天气不开空调下午没法跑,散热问题大
发表于 2009-7-12 23:20:51 | 显示全部楼层
我对LINUX只限于图形界面,上面教程很晕菜。这两天腾出一个120G硬盘,尝试着第一次不是在虚拟机上安装LINUX。也第一次有机会尝试这个教程所教的内容。

不过在开始以前有以下几个问题:

1. X是不是一个WINDOWS仿真图形终端?我们现在用UBUNTU进入的图形界面叫做什么?为什么不能用现在这个图形界面?还是说X是在UBUNTU本身这个图形终端上进一步运行的一个图形终端?也就是说,安装X不会影响我现在已经初步熟悉的启动的这个图形界面(如果没有这个图形界面,LINUX基本就是一个噩梦)。如果X是替代我现在使用的这个图形界面的,安装X后如何切换会我现在这个图形界面?哪里有教程教教就好。

2. 我已经安装了180的驱动程序(安装UBUNTU后自动提示激活的两个驱动程序版本之一,另外一个是173版本)。是否还需要严格的按照你的步骤执行下去?
发表于 2009-7-12 23:36:22 | 显示全部楼层
看来X是在UBUNTU的界面之中运行的。而且看起来是一个仿真器。似乎可以仿真XP。看来我的第一个问题是解决了。不过楼主的教程中X的配置教程的链接有误。似乎进不去。总是进入GOOGLE搜索这个链接的界面。

可惜我是用客厅的电脑上安装LINUX。2.5米的距离看着实在是难受。也就是FIREFOX有字体放大功能(还真真好用,智能拼音感觉也很不错),要不真的坚持不下去了。
发表于 2009-7-13 03:43:09 | 显示全部楼层
http://foldingforum.org/viewtopic.php?f=54&t=8659


Re: New nVidia CUDA WINE Wrapper (v2.1) Imminent
by Hyperlife » Tue Mar 03, 2009 6:01 am

Here it is. Sorry for the delay in getting this up.

If you use the second-generation wrapper with the delay:

http://www.hyperchronos.org/cudart.dll.so

If you use the first-generation wrapper without the delay:

http://www.hyperchronos.org/nodelay/cudart.dll.so

We now recommend that you install the wrapper directly in your WINE windows/system32 directory. Rename cudart.dll.so to cudart.dll and create a symlink to nvcuda.dll in the same directory.

I don't have the source here in front of me at the moment -- we should be able to post a link to it soon.

Remember to delete all previous wrappers and their symlinks from your system; they may be hiding in /usr/local/lib/wine if you followed the installation instructions on the GPU2 WINE wiki.

Edit: Source is now in the first post.
发表于 2009-7-13 04:27:06 | 显示全部楼层
成功了!

楼上的是cudart.dll.so的下载地址。
发表于 2009-7-13 04:32:31 | 显示全部楼层
突然发现一个很大的问题:显卡不能象在XP下那样可以通过RIVETUNER来设置风扇的转速。这样风扇转速很低,而核心温度很高。敞口,开空调,环境温度居然有64度,核心温度83度(8800GTS512)。这样看来只有改显卡的BIOS了。这可真是一个麻烦事情。
 楼主| 发表于 2009-7-13 06:08:38 | 显示全部楼层
1. X是linux系统的图形显示层,而你看到的应该是基于X的gnome桌面,也是ubuntu的默认桌面,除了gnome桌面以外,还有像KDE,xfce等桌面,这个可根据个人喜好选择安装,另外不要把windows的习惯搬到linux,当你熟悉了linux环境之后,你会发现它比windows更方便。

2. 对于刚接触ubuntu的朋友,建议先下载《ubuntu8.04速成手册》看看,把里面的内容从头到尾做一遍,一两天的功夫也就能熟悉整个ubuntu桌面环境了,尤其里面的软件安装方法应该要多留意,速成手册下载地址:http://file.pfan.cn/upfile/200804241606177.rar

3. 调风扇转速我还没试过,不过有个叫nvclock的工具可以调节显卡频率之类的。
发表于 2009-7-13 12:08:47 | 显示全部楼层
X和LINUX内核的关系是不是有点象WIN3.1和DOSS?

另外我发现似乎UBUNTU的屏幕特效(最高级特效,最大、最小化窗口时窗口会“抖”)非常吃GPU。刚才试着玩了一会对对碰。结果GPU的PPD一下子掉下来好几百。

[ 本帖最后由 shouldbe 于 2009-7-13 12:11 编辑 ]
 楼主| 发表于 2009-7-13 16:17:22 | 显示全部楼层
呵呵,老实说我不知道win 3.1跟dos是什么关系,貌似是两个操作系统。 但X并不是操作系统,它与linux的关系更像是应用软件跟操作系统的关系,只是X并不像windows那样,把GUI跟系统内核联系得那么紧密。

ubuntu的桌面特效是需要消耗显卡运算能力的,应该是基于opengl的运算,“抖”并不是最高特效,还有更多高级特效等着你去挖掘呢 ,有兴趣可以到forum.ubuntu.org.cn相关版面看看。
发表于 2009-7-13 17:41:29 | 显示全部楼层
呵呵DOS和WIN3.1正是你说的这种关系——“并不是操作系统,它与linux的关系更像是应用软件跟操作系统的关系,只是X并不像windows那样,把GUI跟系统内核联系得那么紧密”。

有空一定研究一下。目前正在研究如何改写显卡BIOS。然后准备对比LINUX和XP的性能差异。
您需要登录后才可以回帖 登录 | 新注册用户

本版积分规则

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

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

GMT+8, 2019-10-21 15:20

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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