Q & A

使用 SSH X11 forwarding

远程桌面非常笨重。在 Linux 系统上连接到 Linux 服务器时,可以使用 SSH X11 forwarding 代替之:

ssh chn@srv1.chn.moe -X -Y

之后在服务器上运行图形化程序时,就会在本地显示,就像在本地运行那样,只不过有明显的延迟。例如:

ovito POSCAR

RDP 设置连接类型

连接到 Linux 远程桌面时,需要手动设置连接类型为“LAN”,不然会很卡,我也不知道为什么。似乎是 xrdp 的 bug。

混合使用不同型号的节点

不建议这样做,如果你非要这样做再往下看。

计算软件(例如 VASP)在编译时需要针对不同的硬件进行优化得到不同的二进制程序,以此发挥硬件的最大性能。 也就是说,针对不同型号的 CPU 优化的 VASP 其实并不是同一个程序,运行过程中 CPU 收到的指令也不相同。 大多情况下,越新的 CPU 支持的指令集越多, 针对新 CPU 优化的程序在旧 CPU 上不能运行(因为旧 CPU 看不懂这些新指令),针对旧 CPU 优化的程序在新 CPU 上运行效率不高。

以下面提交任务的命令为例:

sbatch --ntasks=64 --cpus-per-task=1 --export=ALL,OMP_NUM_THREADS=1 --wrap="vasp-intel srun --mpi=pmix vasp-std"

任务会在某一个节点上先启动、再与其它节点通信并在其它节点上启动;具体启动哪一个 VASP,取决于最先启动的那个节点1。 例如,你可以使用下面的命令查看当前节点上最终会启动哪一个 VASP:

vasp-intel which vasp-std

要跨不同型号的节点使用 VASP,可以按照以下步骤操作:

  1. 准备一个优化得足够“弱”的 VASP,可以在所有节点上运行。对于 srv1,可以使用 srv1-node1 上的 VASP,使用下面的命令计算它的路径:
    echo $(nix eval --raw nixos#nixosConfigurations.srv1-node1.pkgs.localPackages.vasp.intel)/bin/vasp-intel
    现在的计算结果是 /nix/store/xlxz74mppn76iwk2y2njh7gjncwsx7r8-vasp-intel/bin/vasp-intel。 随着更新,将来的路径会发生变化。
  2. 使用这个 VASP 提交任务,例如:
    sbatch -n64 --cpus-per-task=1 --export=ALL,OMP_NUM_THREADS=1 -pall --wrap="/nix/store/xlxz74mppn76iwk2y2njh7gjncwsx7r8-vasp-intel/bin/vasp-intel srun --mpi=pmix vasp-std"

对于其它的计算软件,不一定能这样做。因为还有别的针对 CPU 优化的方案(例如,编译多个版本的二进制库,在运行时动态检测 CPU 型号并加载最合适的版本)。

并行使用不同型号的 CPU 时,队列系统或 MPI 往往并不会根据型号平衡各个 CPU 的负载,也就是算得快的 CPU 会等着算得慢的 CPU。

BtrFS 是什么

它是一个比较现代的文件系统。相比于常用的其它文件系统(例如 Windows 的 NTFS),它的好处有:

  • 同样的内容只占用一份空间;以及内容会被压缩存储,在读取时自动解压。这样大致可以节省一多半的空间。
  • 每小时自动备份,放置在 /nix/persistent/.snapshots 中,大致上会保留最近一周的备份。如果你误删了什么文件,可以去里面找回。

查看文件或文件夹的大小

Windows 下不用教。Linux 下分两种情况:

  • 对于厦大超算(jykang),使用 du -ah --max-depth=0 文件或目录名
  • 对于其它服务器(使用了 BtrFS):由于压缩和 CoW,实际占用空间会小于大小,因此 du 得到的结果不准确。 使用 compize 文件或目录名 命令。 得到的结果中,TOTALDisk Usage 列为实际占用的空间,TOTALReferenced 列为文件或文件夹的大小。

查看硬盘剩余空间

Windows 下不用教。Linux 下分两种情况:

  • 对于厦大超算(jykang):硬盘空间实际上是比较大的,紧张的是 jykang 这个用户的限额(quota)。 似乎没有 root 权限没法看。按照经验大概是 800 G 多一点。 如果你知道怎样不用 root 用户看,请务必教教我。
  • 对于其它服务器:df -h

自动启动 Pageant 并添加密钥

待补充。


  1. MPI 是按照绝对路径来搜索可执行文件的。 NixOS 的特性导致不同参数编译的 VASP 会被放在不同的目录下,因此会在其它节点上启动与最先启动的节点相同、但不是针对这些节点优化的 VASP。 如果通过一些手段将不同参数编译的 VASP 放在同一个位置,它们是否能正常通信,我觉得应该是可以的。 但我觉得这样做意义不大,因为算得快的 CPU 还是需要等着算得慢的 CPU。 ↩︎