买了Sob老师同款服务器,简单记录一下,方便自己,方便他人。

首先主机效果很炫,我的手机有点渣拍不出来,还是用性能说话,打开htop后CPU栏都快显示不全啦。

双路E5-2696v3的htop

安装了lm_sensors后看到了主板和CPU的温度,大概30多度,真是极好的。

超微主板通过IPMI调节风扇速度

https://forums.servethehome.com/index.php?resources/supermicro-x9-x10-x11-fan-speed-control.20/

1
2
3
4
5
6
# Set fan mode to “full”.
sudo ipmitool raw 0x30 0x45 0x01 0x01
# Set fans in “system” zone to 100%.
sudo ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x64
# Set fans in “peripheral” zone to 100%.
sudo ipmitool raw 0x30 0x70 0x66 0x01 0x01 0x64

PCI-E 拆分(bifuraction)

https://zhuanlan.zhihu.com/p/86715968

真香.gif

这里,BIOS的配置非常不清晰,我研究手册加上试错,判断出来了:

接口 速率 拆分选项 备注
SLOT 1 PCI-E 2.0 ×4 走PCH
SLOT 2 PCI-E 3.0 ×8 IIO1 port 1 ×4×4是拆分 走CPU1
SLOT 3 PCI-E 3.0 ×8 IIO1 port 2 ×8×4×4是拆分 走CPU1。很奇怪,试出来的。
SLOT 4 PCI-E 3.0 ×8 IIO2 这个没试过 走CPU2
SLOT 5 PCI-E 3.0 ×16 IIO1 port 3 可拆成×4×4×4×4 走CPU1
SLOT 6 PCI-E 3.0 ×8 IIO1 port 2 ×4×4×8是拆分 走CPU1。很奇怪,试出来的。

具体参考下图,SLOT的顺序在主板上是反着的,最下面是SLOT 1。

装配和Arch Linux安装的注意事项

  1. 我的显示器是Dell U2515H,只有DisplayPort和HDMI接口可用,所以还要额外买一个显卡。联系卖家说有GTX 1050,要800罢,我嫌贵没买,买了个昂达的GTX 750,只要180元不到。

  2. 这个显卡有点大,需要把内存的位置换一下才能装上。安装后需要通过跳线屏蔽主板上的集成显卡,方法如下图

Jumper-for-X10DRL-i

  1. X10DRL-i主板说明书

  2. 我安装的Arch Linux,以下的内容不一定适合你的系统。首先,如果用UEFI不要忘了分ESP

  3. 其次,ESP最好挂在/boot/efi,然后安装的命令是

1
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub
  1. 一些包,比如dosfstoolsarch-install-scripts,需要安装。为啥Wiki没有提醒呢?

  2. 配好SSH后可以远程操作,后面的操作基本都是用SSH进行的。配置SSH就是启动SSH服务和复制SSH Key。

  3. Emacs的Tramp可以让远程操作更方便,比如在Windows下我可以用/sshx:E5internet|sudo::/etc连到服务器上并且用sudo获得root权限。

ORCA

安装ORCA的方法可以参考之前的教程,这里讲一下怎么远程安装ORCA

所谓远程安装,就是把安装包复制到远程服务器上再安装。

复制安装包

一般人可能会选择用优盘,我觉得那样太low啦,而且不是真正的远程安装,这里用scp命令复制到服务器上:

1
scp -c aes128-ctr /k/orca_4_0_1_2_linux_x86-64_shared_openmpi202.tar.xz E5internet:/tmp/

上面的命令把本地K盘的安装包复制到了服务器的/tmp里,服务器已经定义到~/.ssh/config文件里了,类似下面这样:

1
2
3
4
Host E5internet
HostName 222.222.222.222
Port 23333
User kel

选择了加密位数稍微低一些的加密方式aes128-ctr,理论上速度快一点,这里的最终速度是677 K/s,还行。

安装

安装ORCA就是解压,这里的ORCA共享库版本,和之前的教程有所不同,首先是压缩包的格式变了,解压命令也要变:

1
sudo tar -xJvf "orca_4_0_1_2_linux_x86-64_shared_openmpi202.tar.xz" -C /calc/

解压到/calc目录了。

安装openmpi就和原来是一样的,不再详述。话说这里36核并行编译要花好几分钟,我有点怀疑人生,是不是买到了假电脑……

注意:和原来教程不一样的是环境变量的设置方法变了,现在的设法是:

1
2
export PATH=/calc/openmpi-2.0.2/bin:/calc/orca_4_0_1_2_linux_x86-64_shared_openmpi202:${PATH};
export LD_LIBRARY_PATH=/calc/openmpi-2.0.2/lib:/calc/orca_4_0_1_2_linux_x86-64_shared_openmpi202:${LD_LIBRARY_PATH};

性能实测

我之前算过两个单核铜配合物的相互作用能,用的是BLYP-gCP-D3/def2-TZVP。具体的结构就不放了,计算体系的分子式是Cu2C26N8H28O10,之前在i7-3630QM (全核睿频大概3.17 GHz),8 G内存的笔记本上4线程并行,单点用时38′50′′ (2330′′),用这个数据作为参考(表中i7),评价一下双路E5 (表中E5):

CPU PAL Time Speed (s/cycle)
i7 4 2330′′ (73 cycles) 32
E5 4 1039′′ (61 cycles) 17
E5 8 458′′ (32 cycles) 14
E5 12 420′′ (38 cycles) 11

也就是说,性能大约是笔记本i7平台的20倍,当然这里还涉及了操作系统等原因,不过比笔记本提升一个数量级的结果是可以肯定的。

两个让运行ORCA变得容易的bash函数:

1
2
3
4
5
6
7
8
9
10
function set_orca() {
export PATH=/calc/openmpi-2.0.2/bin:/calc/orca_4_0_1_2_linux_x86-64_shared_openmpi202:${PATH};
export LD_LIBRARY_PATH=/calc/openmpi-2.0.2/lib:/calc/orca_4_0_1_2_linux_x86-64_shared_openmpi202:${LD_LIBRARY_PATH};
orca="/calc/orca_4_0_1_2_linux_x86-64_shared_openmpi202/orca"
}

function run_orca() {
[[ -z "$1" ]] && { [[ -e "a.inp" ]] && nohup ${orca} "$(realpath "a.inp")" &>> a.out & }
[[ -z "$1" ]] || { [[ -e "$1" ]] && nohup ${orca} "$(realpath "$1")" &>> a.out & }
}

把它们放在~/.bashrc后,输入set_orca设置ORCA运行环境,输入run_orca当前目录运行ORCA,要么后根输入文件,否则默认的输入文件是“a.inp”。

1
2
3
4
5
6
7
8
9
set_multiwfn() {
export KMP_STACKSIZE=200M
ulimit -s unlimited
export Multiwfnpath="/calc/Multiwfn_3.8_dev_bin_Linux"
export PATH=${PATH}:"/calc/Multiwfn_3.8_dev_bin_Linux"
export multiwfn="/calc/Multiwfn_3.8_dev_bin_Linux/Multiwfn"
}

(${multiwfn} a.chk <<< $'12\n0\nq') > anal.txt

Gromacs

Arch Linux的包不是非常多,但很多软件可以在AUR里找到。下面是安装Gromacs的记录:

1
2
3
4
5
6
cd /tmp
git clone https://aur.archlinux.org/gromacs.git
sudo pacman -S cuda opencl-nvidia
cd gromacs
makepkg -s
sudo pacman -U gromacs-2016.4-2-x86_64.pkg.tar.xz

这里安装了Gromacs 2016.4。但上面的命令要想正确执行还需要做如下操作:

  1. 不仅要安装CUDA,还要设置环境变量:
1
2
3
export CUDA_HOME="/opt/cuda"
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${CUDA_HOME}/lib64/stubs:${CUDA_HOME}/lib:${LD_LIBRARY_PATH}
export PATH=${PATH}:${CUDA_HOME}/bin
  1. 就算设置了上述环境变量还会出现找不到libnvidia-ml.so.1的问题,在/opt/cuda/lib64/stubs里是有libnvidia-ml.so的,所以链接一下就可以
1
sudo ln -s /opt/cuda/lib64/stubs/libnvidia-ml.so /opt/cuda/lib64/stubs/libnvidia-ml.so.1
  1. 下载regressiontests-2016.4.tar.gz特别慢,几乎下不动,索性取消这个检查,在PKGBUILD文件里把-DREGRESSIONTEST_DOWNLOAD=ON改成-DREGRESSIONTEST_DOWNLOAD=OFF就可以了。

多灾多难的Gromacs安装过程,断断续续用了一天时间。

MOPAC2016

和Groamcs一样,我是第一次在Linux上装MOPAC。除了要按照帮助文件,还需要做如下的链接才能在比较新的CUDA环境中运行MOPAC。

1
sudo ln -s /opt/cuda/lib64/stubs/libcuda.so /opt/cuda/lib64/stubs/libcuda.so.1

我写了一个小的bash函数自动配置mopac的运行环境

1
2
3
4
5
6
function set_mopac() {
export MOPAC_LICENSE="/calc/mopac"
export CUDA_HOME="/opt/cuda"
export LD_LIBRARY_PATH=${MOPAC_LICENSE}:${CUDA_HOME}/lib64:${CUDA_HOME}/lib64/stubs
export mopac="/calc/mopac/MOPAC2016.exe"
}

随便找一个跑过的任务丢上去跑一下,比在本地快不了多少,在服务器上跑主要是方便,再就是可以批量处理。

还安了一些软件,比如Multiwfn,很平滑没有什么好记录的。因为服务器自己用,也没有搞什么队列系统,用起来很随意。最后感谢Sob老师对计算化学软硬件发展做出的贡献😊