Folding@Home

       对于一个从事理论化学或者计算化学“研究”工作的人来说,Folding@Home的确是一个不错的玩具。
      最早接触FAH是在高中时候写一篇关于分布式计算的乌七八糟的文章。那个时候算的叫一个慢啊。。。
      对于FAH就不做介绍了,大家可以到http://folding.stanford.edu/Chinese/Main进行更详细的了解,以及http://fahwiki.net/,更为详细深入的介绍。
      严格来说,FAH并不是一个理论化学或者计算化学软件包,更确切地说,FAH是一个分布式计算平台,类似于BOINC;真正的算法部分则采用了GROMACS分子动力学软件包和AMBER分子力场。之前还有基于Tinker和QMD量子化学的计算程序,但是现在都不采用了。不妨从整个计算过程来探讨这个问题。主程序fah6本身并不负责计算,准确来说fah6只是一个调度程序,负责收发数据、平衡负载以及进程管理。fah6有一个重要的功能,就是根据当前运行的平台下载相应的计算内核。举例来说,如果是系统采用多核心处理器或者多处理器,fah6就会自动下载FahCore_a2作为计算核心。FahCore_a2是一个采用了MPI实现并行的计算内核,以GROMACS作为计算方法。类似的内核还有很多,在http://fahwiki.net/index.php/Cores可以看到一份完整的列表,例如FahCore_11是采用Nvidia CUDA技术使用GPU运行的内核。
      我们可以看一眼FAH网站上的统计数据(http://fah-web.stanford.edu/cgi-bin/main.py?qtype=osstats),截止当地时间2008年12月24日05:08:54。

OS Type

Current TFLOPS*

Active CPUs

Total CPUs

Windows

243

255033

2349894

Mac OS X/PowerPC

5

6582

123083

Mac OS X/Intel

28

8872

72696

Linux

45

26181

350540

ATI GPU

993

9031

23771

NVIDIA GPU

1753

15932

57854

PLAYSTATION®3

1553

55076

707720

Total

4620

376707

3685558

    

我们可以计算一下X86处理器(我们假设几乎所有Windows系统都是基于X86构架的处理器)和GPU在进行这样的分子动力学计算时的平均效率:
      X86平台计算效率:0.00102688 TFLOPS/CPU (其中Mac OS X/Intel平台达到了0.0031560 TFLOPS)
      GPU平台计算效率:0.110003 TFLOPS(NVIDIA:0.110030 TFLOPS;ATI:0.109955 TFLOPS)
      二者相差:107倍

      这个数据是软件的计算核心反馈的真实数据,而非峰值或理论值。因此NVIDIA官方所声称的250倍性能应该并非虚言。根据个人经验,分子力学以及分子动力学中大量的矢量运算很可能是造成这种性能差异的主要原因。

     最后说说Macintosh平台上的安装吧。推荐去http://www.stanford.edu/group/pandegroup/folding/release/FAH6.02-OSX-Intel-Console.tgz下载Console版本(http://www.stanford.edu/group/pandegroup/folding/console-userguide.html 有一份比较详细的参数说明),手动建立~/Library/Folding@home目录,将fah6和mpiexec解压缩至该目录下,然后:

Armadillo:Folding@home Armadillo$ cd ~/Library/Folding@home/
Armadillo:Folding@home Armadillo$ ./fah6 -configonly -smp

      接下来根据自己需要进行一些设置。为了使fah6能够自动运行,我们需要将启动脚本加入launchd中:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>EnvironmentVariables</key>
    <dict>
        <key>HOME</key>
        <string>/Users/Armadillo</string>
    </dict>
    <key>Label</key>
    <string>edu.stanford.folding.client</string>
    <key>OnDemand</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/Armadillo/Library/Folding@home/fah6</string>
        <string>-smp</string>
        <string>-verbosity</string>
        <string>9</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>ServiceDescription</key>
    <string>Folding@home client</string>
    <key>Umask</key>
    <integer>22</integer>
    <key>UserName</key>
    <string>Armadillo</string>
</dict>
</plist>

      将上面这些文本保存为/Library/LaunchDaemons/Folding@home.plist,你也可以在ProgramArguments中加入更多参数,但是注意不得包含空格,分成两个string即可。接下来就可以启动FAH了:

launchctl load -w /Library/LaunchDaemons/Folding@home.plist

      如果执行ps -ef|grep fh6以及ps -ef|grep FahCore能看到相应的进程就证明已经开始计算了。可以通过执行fah6 -queueinfo查看队列情况,在unitinfo.txt中查看计算进度,在FAHlog.txt中查看输出信息。相应的计算log在work文件夹下。

221的花猫终于生啦

标  题: 221楼的新生命!

发信站: 瀚海星云 (2008年12月22日10:11:15 星期一), 站内信件 WWWPOST
221楼的童鞋们,这只猫猫大家都不陌生吧。听说昨天从4点半生到8点多,一共产下了5只可爱的小猫猫。可惜我没有亲眼目睹全过程,昨晚跟室友拍了些图片,技术不行,大家凑合看,还有段视频放在202.38.64.22上了,有兴趣可以去下。
PS:我们是不是该考虑这些小猫的去向了呢?

传说中的Mplayer。。。

    很久很久以前,当我开始学习使用Linux的时候,有人说,当你能在没有任何提示的情况下编译Mplayer,就算基本水平到家了。
    因此这么多年来,我从来没有尝试自己编译过Mplayer,也从来没有看过任何文章。
    今天闲来无事,小试一把,轻松成功(当然,这不是因为我水平如何如何,而是因为经过这么多年的开发,编译难度降低了)。分享下过程。
  
    0.编译环境:Darwin Kernel Version 9.5.0,gcc version 4.0.1 (Apple Inc. build 5480)
    1.准备。总地来说Mplayer的依赖关系很单纯,freetype和libdvdcss是必须解决的依赖关系,其他比如libpng,jpeg,xvid,x264等可选的用macports装好就行了,很快。
    2.获取源代码:svn checkout svn://svn.mplayerhq.hu/mplayer/trunk ~/Mplayer,具体路径自己调整。
    3.打PATCH:从SVN中获得的代码有几处需要打补丁。首先是x264解码器(libavcodec/libx264.c)中有一处BUG,不打patch编译无法通过。具体patch参见这里。另外就是Mplayer在解析路径中含有GB2312编码汉字时存在的BUG,patch参见这里。但是由于xhacker给出的patch是针对MPlayer-1.0-rc2的,因此大家只能对照patch文件手动对configure和stream/asf_mmst_streaming.c这两个文件进行修改了……如果你很懒,可以到这里下载我patch过后的这三个文件(我只能保证针对撰写本文时的revision 27812有效),复制到相应目录覆盖原文件。
    4.生成Make文件:我的编译选项:./configure –with-freetype-config=/opt/local/bin/freetype-config –with-extralibdir=/opt/local/lib –with-extraincdir=/opt/local/include:/opt/local/include/libpng12:/opt/local/include/freetype2:/opt/local/include/fontconfig:/opt/local/include/dvdcss:/usr/local/include –enable-apple-remote –language=zh_CN –enable-ssse3
    5.编译:make
    以上就编译完成了。用./mplayer -vo macosx -ao macosx video_filename 打开一段视频看看是否播放正常。以下是观看科大影视时的情形,证明文件名的patch起作用了。
__________________
再附赠一个科大影视的播放脚本:
#!/bin/bash
mplayer -vo xv -ao alsa `iconv -f GB18030 -t utf8 /tmp/playlist`