Prerequisites
Accept offer、拿到学号、激活邮箱,可登录 myStudentAdmin 验证。登录服务器用的帐号是要另外申请、邮件告知的,但密码跟登 myStudentAdmin 是同一个。
国内/校外访问要连 UTS 的 vpn client。有两个:[3] 是 FortiClient,而 [4] 是 F5 Edge Client。[3] 那个好像连不了超算(不知道有没有记错,没有重新测试过),用 [4] 的可以,所以跟 [4] 步骤装软件、连 vpn 就好(UTS vpn 的页面 firefox 好像刷不出内容,可以试下用 chrome)。后续步骤都要连着操作,连申请帐号都要。
script error
2025.4.30
在墨尔本公寓用 [4] 的 F5 BIG-IP 连 iHPC 时,vpn 一直卡在 Initializing 或 Connecting:
用去年学到的 Student VPN Tunnel 大法也不行,直接闪退。经 Service Connect 某老哥远程调试,需要卸载一个网络驱动(可能要管理员权限)再试。具体在 Device Manager -> Network adaptors -> WAN Miniport (IP):
右键 Uninstall device,再点上面菜单栏的 Scan for hardware changes 刷新。现在再试 BIG-IP Edge Client,就能连上了。
2024.2.5
在国内用 [4] 的 F5 BIG-IP 连 iHPC 时,可能会遇到一个报错:
然而半年前出国前(2023.7)没有这个报错,去到澳洲也不会。今次回国发现 F5 BIG-IP 软件更新了,不过无论新、旧 F5 BIG-IP 软件都报此错。发 ticket 问,说可能是 F5 BIG-IP 软件问题,让去 F5 Dynamic Webtop 点 na_vpn_student(图标是 Student VPN Tunnel)-> 点 Start,也会连 vpn(桌面菜单栏一个红圆形图标),然后就能连上 iHPC 了。
Request an iHPC Account
参照 [4],在 iHPC 主页[6] -> Account Request,填资料,submit,然后等他们创号(我等了几分钟,挺快),好了会发到 UTS 邮箱,有几封,其中一封 iHPC Admin 发来的邮件底部会告诉超算的用户名:
Username 是登 iHPC 主页[6]、shell 连服务器的用户名;Password 那「standard UTS password」就是登 myStudentAdmin 那个密码。
Usage
在 [6] -> Login 登录,就会跳到 iHPC Overview[7],可以看到当前各集群的使用状态。集群是用行星命名的,如 Jupiter、Mars 等。点 Documentation 有介绍。
connecting
Access And Connectivity 介绍连集群的方法,其中命令行连看 Connecting via SSH Command Line[8]。几条基本信息:
- IP / host name:
access.ihpc.uts.edu.au
,是登录节点/堡垒机 - 用户名:前文邮件发那个
- 密码:登 myStudentAdmin 那个
连进登录机后,参考 [8],可用 cnode
命令看集群信息(其实可以直接在 iHPC Overview 看?);选好要连的集群之后用 ssh <集群名>
连去相应集群,集群名在 iHPC Overview 有列出,如 mars1
。
有两个集群好像要另外申请才能连:Jupiter、Saturn,详见 [8]。
可以配 ssh 免密登录,然后用 VS Code 连。当用 xshell 连时,不知为何一但进入 screen 就会卡,而用 windows 自带的命令行、vs code 内的 terminal 连就不会。可简单写个连接脚本,方便用自带命令行连:
@echo off
set USER=用户名
set IP=access.ihpc.uts.edu.au
ssh %USER%@%IP%
如果有多个服务器连,可参考 [30] 写个脚本当简易 ssh client 用。
known_hosts
如发现 ssh、vs code 突然不能连上 ihpc,有可能是 known_hosts 文件内容太旧。Windows 中此文件在:%USERPROFILE%\.ssh\known_hosts
。只要删掉它,再用 ssh 连一次即可。
file stores
Getting Started[9] -> File Stores、File Systems[10] 有介绍存储空间,应该都是指连去特定集群后的空间,而不是登录机的。主要关注几点:
- [10] 有讲各位置是否持久化目录(Survive Reboots? ),即重启之后数据保不保留;也讲是网盘还是本地盘(影响 IO 时间)。
- home 目录(
~
):是各集群同步的,见 [9],所以 ssh 只在一个集群上配一次就好,会自动同步。只有 32G。 - /data/<username>:也会同步,大很多,[9] 说限 1024G,可用来放数据和结果。
- /share:也会同步,所有人可读写。
- /scratch:所有人可读写的目录,[9] 说是说本地盘,所以 IO 会比 /data 快,但空间小一些,不用时要及时删东西省位。
environment
- 有 screen(复用终端)
- 有网,连进集群之后可以直接连 github、gitee,也可以直接 wget 下 conda、用 pip、conda 装包。
- cuda、cudnn 等 gpu 基础软件齐全,见 GPU Computations,在集群里
ls /usr/local
得:AnsysEM Cytoscape-3.9.1 nccl-2.15-11.8 apptainer-1.1.9 DassaultSystemes2022 nccl-2.16-11.0 arb-6.0.6 dock6 nccl-2.16-11.8 bin eclipse nccl-2.16-12.0 blender-3.3.2 eeglab2022.1 nccl-2.6-10.0 chimera-1.16 ESI_Software_2019.5 nccl-2.8-10.1 cluster_reporter ESI_Software_2021.5 nccl-2.8-11.1 CodeBlocks-Fortran-1.7 etc nccl-2.8-11.2 comsol61 FastQC nccl-2.9-11.3 containers feko NetLogo-6.3 CST_STUDIO_SUITE_2022 Fiji.app openblas-0.3.21 cuda-10.0 fragpipe openmpi-intel-4.1.1 cuda-10.1 fragpipe16 ParaView-5.11.0 cuda-10.2 FreeCAD Perseus cuda-11.0 games protobuf-3.19.6 cuda-11.1 gephi-0.10.1 pycharm-community-2022 cuda-11.2 gsl-2.7 quantlib-1.27.1 cuda-11.3 hyperworks R-3.6 cuda-11.4 IGV-2.15.4 R-4.1 cuda-11.5 ImageJ R-4.2 cuda-11.6 include R-4.3 cuda-11.7 lib rstudio-2022 cuda-11.8 lib64 rstudio-2023 cuda-12.0 libexec SAS-9.4 cudnn7.6-10.0 matlab2020b sbin cudnn8.0-10.1 matlab2021a share cudnn8.2-10.2 matlab2021b singularity-3.8.7 cudnn8.2-11.4 matlab2022a singularityce-3.10.5 cudnn8.3-10.2 matlab2022b Slicer-5.2.1 cudnn8.3-11.5 matlab2023a SPSS cudnn8.4-10.2 MaxQuant src cudnn8.4-11.6 MeshLab stata17 cudnn8.5-10.2 NAG stata18 cudnn8.5-11.7 ncbi-blast-2.13.0+ tecplot cudnn8.6-10.2 ncbi-blast-ihpc-2.13.0+ TensorRT-8.5-10.2 cudnn8.6-11.8 nccl-2.11-11.4 TensorRT-8.5-11.8 cudnn8.7-10.2 nccl-2.11-11.5 vmd-1.9.3 cudnn8.7-11.8 nccl-2.12-11.6 VSCode-linux-x64 cudnn8.8-11.8 nccl-2.14-11.7 weka-3.8.6 cudnn8.8-12.0 nccl-2.15-10.2 Wolfram
- singularity 镜像,在 /share/singularity_containers/。
singularity
如果服务器已有的镜像不好用,如有包装不了(如 pytorch 1.2.0),可以自创 singularity 容器,基本用法、创建文件 recipe 写法、build 方法见 [17-21]。
在 UTS 的机器上写 recipe、build 都有些要另外注意的。recipe 示例,[21] 说 %post
中要加两句:
export DEBIAN_FRONTEND=noninteractive
:当创建基于 ubuntu / debian 的容器时要;mkdir -p /data /projects /scratch
:这 3 个路径都是 UTS iHPC 的机器中有的,在 iHPC 机器上跑的 singularity 都会自动尝试挂载它们,要保证镜像中有这几个文件夹。
# py36_pt120
Bootstrap: docker
From: pytorch/pytorch:1.2-cuda10.0-cudnn7-runtime
%labels
Python 3.6.9
CUDA 10.0
cuDNN 7
PyTorch 1.2.0
torchvision 0.4.0
%post
# required by UTS iHPC
export DEBIAN_FRONTEND=noninteractive
mkdir -p /data /projects /scratch
# python packages
pip install --upgrade pip setuptools wheel
pip install --no-cache-dir \
"scikit-learn>=0.23.2" "munkres>=1.1.4" "opencv-python==4.3.0.38" "numpy>=1.19.1" \
click Cython easydict fire graphviz h5py matplotlib \
ninja pandas PyYAML scipy tensorboard xlwt
build 的时候,[20] 说因为没有 root,[19] 的普通 build 命令可能不行,要用 [21] 的 builder,而 recipe、创建的镜像文件都要在 /scratch 下。步骤:
- 连去某个集群,如
ssh mars1
。后面创建要用singularity_build
脚本,集群中才有,登录节点没有; - 将 recipe 复制去 /scratch/ 下的某个路径,如 /scratch/<username>/,
cd
过去; - 执行
singularity_build
,提示、步骤参考 [21]:- Select the process you wish to perform,选
1
(Build from Recipe File); - Enter the full path of recipe file,按提示输入 recipe 的绝对路径,如
/scratch/<username>/py36_pt120
; - Do you wish to edit this recipe file using Vim? [y…n],问你要不要编辑 recipe,
y
改n
跳过; - Select Container Type,一般选
1
(Image),如果要编译 cuda 代码(可能指 StyleGAN 那种有自写 cuda 文件的?)就选2
(Image-nv)。其实感觉可以无脑选2
? - Enter the name of the output container,创建的镜像像文件名,不用写后缀名。如写
py36_pt120
则输出的文件就是 py36_pt120.sif; - 等,创建完又会回到第一步,可以
10
(To exit)退出; - 将创建的镜像文件移去 /share/ 下,因为会同步,方便各结点调用。
- Select the process you wish to perform,选
用容器跑程序:singularity exec --nv /share/$(whoami)/py36_pt120.sif python main.py
;或写一个驱动脚本(singu-run.sh),套娃执行真正的实验脚本(my_experiment.sh):
- 参考 [35],支持串行执行多个 scripts。
#!/bin/bash
# singu-run.sh
IMAGE_F=/share/`whoami`/py36_pt120.sif
for s in ${@:1}; do
if [ ! -f $s ]; then
echo No such file: $s
else
singularity exec --nv $IMAGE_F bash `realpath $s`
fi
done
然后:bash singu-run.sh my_experiment_1.sh my_experiment_2.sh
。
当在容器内用 pip 装包时,要注意用的是不是容器内的 pip,似乎默认的 pip 是宿主的(自己装的 miniconda 中的 pip),考虑用绝对路径调用容器内的 pip。
一些 singularity recipe 可见 iTomxy/ml-template/containers/singularity。
jupyter notebook
命令行连去某 gpu 节点(如 mars28)后,开 jupyter notebook,想在本地浏览器打开,直接用 mars28 的 ip 连不上,可用 ssh 隧道转发,参考 [24,25],在本地(windows)运行:
- (2023.11.8)参考 [32],可以同时转发多个 ports。
@REM tunnel.bat
@echo off
@REM 登录 gpu 节点的用户名、IP(登入 gpu 节点后 ifconfig 查)
set USER=itom
set IP=1.2.3.4
@REM 6006 是 tensorboard
@REM set REMOTE_PORT=6006
set TB_PORT=6006
@REM 8888 是 jupyter notebook
@REM set REMOTE_PORT=8888
set JN_PORT=8888
@REM 转发来本地 18888 端口(避免与本地开的 jupyter notebook 端口冲突)
@REM set LOCAL_PORT=1%REMOTE_PORT%
@REM ssh -L %LOCAL_PORT%:127.0.0.1:%REMOTE_PORT% %USER%@%IP%
ssh -L 1%TB_PORT%:127.0.0.1:%TB_PORT% ^
-L 1%JN_PORT%:127.0.0.1:%JN_PORT% ^
%USER%@%IP%
然后在本地浏览器打开网址:localhost:18888
。遇到过报错:
Bad local forwarding specification '18888'
参考 [26],当时注释是写在端口号后的,即:
...
@REM set REMOTE_PORT=6006 @REM 6006 是 tensorboard
set REMOTE_PORT=8888 @REM 8888 是 jupyter notebook
...
后将注释放在上面一行,就行了。
同样,也要注意用的是不是容器内的 jupyter,如进了一个 tensorflow 的容器,用容器内的 pip 装了一个 jupyter,但默认的 jupyter 却是宿主机的 jupyter。考虑用 whereis jupyter
找有哪些 jupyter,似乎 ~/.local/bin/jupyter 就是在容器内装的(因为这样开出的 notebook 能 import tensorflow 成功),而如果是用 recipe build singularity 镜像时装的 jupyter,则在 /usr/local/bin/jupyter。
hosts
前一节用 tunneling 每次都要登上相应 gpu 结点用 ifconfig
查 IP,麻烦,想直接用 mercury4
等别名连,可以把登录结点的 hosts 文件内容复制一份在本地。登录结点的 hosts 文件在 /etc/hosts,Windows 本地的 hosts 文件在 C:\Windows\System32\drivers\etc\hosts。先将本地的 hosts 重命名备份(如 hosts.bak),再将重登录结点下载来的 hosts 文件复制过去,本地 windows 电脑就也可以直接 ssh mercury4
连接了。
Sieving Clusters
想像 [11] 一样,用脚本筛选能用的集群。首先 cnode all
的输出形如:
*******************************************************
* Welcome to the iHPC *
* *
* To connect to a node use the ssh command *
* (eg. ssh mars6). *
* *
*******************************************************
Node Index Connect %CPU %Mem %GPU %GPU Mem User(s)
jupiter1 3 no 100.0 11.4 edehghan,dmartins
mars1 3 no 0.5 4.9 0.0% 0.1% xwang12,mfeizi
mars24 2 yes 1.6 5.3 0.0% 0.1% aetminan
mercury8 0 yes 0.5 7.7 0.0% 0.3%
(...更多...)
Node
是 host name,用ssh <node>
连;Connect
表明能不能连,因为每个集群最多同时连两个人,User(s)
是正在连的用户;%GPU
是 gpu load、%GPU Mem
是显存占比,如果集群无 gpu 则此两列为空,如jupiter1
。
command
#!/bin/bash
# find-nodes.sh
cnode all | \
awk 'NR > 10 && NF > 6 {print $1" "$3" "$4" "$6" "$7}' | \
grep -v 'jupiter' | \
grep yes | \
awk '{print $1" "$3" "$4" "$5}' | \
sort -n -k 3 -k 2 -k 4 | \
awk '{if (length($1) > 7) print $1"\t"$2"\t"$3"\t"$4; else print $1"\t\t"$2"\t"$3"\t"$4;}'
其中:
awk 'NR > 10 && NF > 6 {print $1" "$3" "$4" "$6" "$7}'
,虑掉前面一些 welcome 输出和元信息(NR > 10)、无 gpu 的行(NF > 6),只输出Node
、Connect
、%CPU
、%GPU
、%GPU Mem
4 列(NR 是当前行数;NF 是当前行的列数,默认空格分隔。都从 1 开始);grep -v 'jupiter'
筛掉 jupiter和 saturn的集群,因为要另外申请,还没申jupyter 没有 gpu;grep yes
选能连的;awk '{print $1" "$3" "$4" "$5}'
去掉Connect
一列;sort -n -k 3 -k 2 -k 4
升序排序,优先级:%GPU
>%CPU
>%GPU Mem
;awk '{if (length($1) > 7) print $1"\t"$2"\t"$3"\t"$4; else print $1"\t\t"$2"\t"$3"\t"$4;}'
制表符美化输出,可以合并到第二条 awk 命令中。
可以写入一个 shell 文件(如 find-nodes.sh),chmod u+x find-nodes.sh
辅权之后,放在 $PATH
内的某个目录内(如 ~/.local/bin/,可以 echo $PATH
看有哪些)方便调用。如果只想找一个可用服务器连入去,而不关心是哪个,可以:ssh $(find-nodes.sh | head -n 1 | awk '{print $1}')
。
greedy picking
想用命令自动(贪心地)按 cpu、gpu、gpu men 三项之和升序排列,然后选第一个节点连,而不是用 find-nodes.sh 打印之后,再手动 ssh 连。由 find-nodes.sh 改一个辅助脚本 gpu.sh:
#!/bin/bash
cnode all | \
awk 'NR > 10 && NF > 6 {print $1" "$3" "$4" "$6" "$7}' | \
grep yes | \
awk '{print $1" "$3" "$4" "$5}' | \
sed "s/\([a-z]\+[0-9]\+\) \([0-9\.]\+\) \([0-9\.]\+\)% \([0-9\.]\+\)%/\1 \2 \3 \4/" | \
awk '{print $1" "$2+$3+$4}' | \
sort -n -k 2 | \
awk '{print $1}' | \
head -n 1
放入 ~/.local/bin/、chmod u+x gpu.sh
加执行权限。再加一个命令入 ~/.bashrc(如 pick
):
alias pick='ssh $(gpu.sh)'
source ~/.bashrc
刷新后就可以敲 pick
连去一个 gpu 结点。
auto exiting
占住计算节点 2 天不跑会收到邮件,3 天就有另一封警告邮件,说再发生就销 iHPC 号……如果想脚本跑完程序自动推出计算节点,参考 [29],可以用 hostname
命令判断当前在不在计算节点上:
- 登录节点叫
janus0
# run.sh
# 跑实验
python main.py
# 自动断连
host=`hostname` # mars18.ihpc.uts.edu
host=${host%%\.*} # mars18
if [ $host != "janus0" ]; then exit; fi
然后,在命令行里用 .
运行:. run.sh
,而不是用 bash
,因为 bash run.sh
会创建一个子 shell(子进程),子 shell 退出而主 shell 还连着。
可以用 cnode all | grep $(whoami)
找到现在正连着的计算结点。为方便,可在 ~/.bashrc 中自定义一个命令(如 whereami
),用 vim ~/.bashrc
编辑,加一句:
alias whereami='cnode all | grep `whoami`'
然后 source ~/.bashrc
刷新。
monitoring job
参考 [34],用 jmon
命令监视 cpu 占用,当一个核的 cpu 降到 25% 以下,会发邮件通知。不过如果另一个人在连、或自己同时跑多个实验时可能不准。
jmon
其实是调用 mail
命令,服务器应该配置过,可以发邮件给 uts 的邮箱,但发不了给 163 之类的其它邮箱。示例:
# run.sh
# 跑程序
python main.py
# 跑完,发邮件通知
echo \[`date`\] `whoami` @ `hostname` : `realpath $0` | mail -s "cmd done" <UTS邮箱>
NoMachine
iHPC 用一个叫 NoMachine 的软件提供图形界面连接。然而改 ~/.bashrc 可能会导致图形界面连不了,即在登录界面输入帐号、密码之后,一直卡在 Creating a new virtual desktop 的转圈界面。但命令行连不受影响。
- 2024.7.16,经测试,原因是 ~/.bashrc 内一条我自己加的
conda activate cu116_pt1131
命令激活了一个虚拟环境,可能有些包有冲突?删掉就行。而装 conda 时自动写入 ~/.bashrc 的那段命令不影响,形如:
这段可以留着。# >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/data/itom/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/data/itom/miniconda3/etc/profile.d/conda.sh" ]; then . "/data/itom/miniconda3/etc/profile.d/conda.sh" else export PATH="/data/itom/miniconda3/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<<
- 2023.12.21 初步怀疑是在 ~/.bashrc 中改
LD_LIBRARY_PATH
会引起此结果,但不确定,待测试。 - 2024.1.3,经测试,~/.bashrc 中加
alias
、改LD_LIBRARY_PATH
、改PS1
、加 conda 的初始化命令、用 /usr/bin/python 执行一个自己写的 python 脚本,并不影响图形界面登录。不过通过在 .bashrc 中加打 log 命令:
并用图形界面登录结点可知,用图形界面登录确实会调用(且是两次).bashrc,问题很可能是出在改 .bashrc,但仍不确定具体是哪出问题。# 在 ~/.bashrc 加一句 logging,测试图形界面登录会否调用 .bashrc echo $(date) GUI >> gui-login.log
Something Else
某自习室是升降台,型号是 ICF motion rectangular,发现一开始高度只能升到 780mm 就卡住,不能站着工作。在网页右下角客服聊天那要了一份说明书(instructions),其实高度可调最大范围是 [670, 1320] mm,但它可能根据使用习惯自动定死在一个更小的范围,要重调这个范围。分 set highest / lowest height limit,方法类似:
- 同时按 ↑ \uparrow ↑、 ↓ \downarrow ↓ 两秒;
- 按住 ↑ \uparrow ↑ 同时连按 3 次 ↓ \downarrow ↓(如重置上界),或按住 ↓ \downarrow ↓ 同时连按 3 次 ↑ \uparrow ↑(如重置下界);
- 然后按 ↑ \uparrow ↑(或 ↓ \downarrow ↓)就可以调到更高(或低)了。
assigned laptop
Research student 学校会发一台电脑,同时送电脑包、键鼠套装。键鼠套装是 Dell KM7120W Multi-Device Wirreless Keyboard and Mouse Combo,键盘有 Fn 键,F1 ~ F12 默认不是 F1 ~ F12,而是功能键。想改回默认 F1 ~ F12 的话,参考 [22],按 Fn + Esc,就可以了。 这电脑时不时要更新,更完之后 Rime 就会挂(2023.10.4),暂不知原因,需要再重启一次 手动启动 rime 服务,参照《rime打不了字》。
此手提有限制,如一些网页会被 block,另收到警告邮件说探测到 a critical matter regarding the security of our devices,让拿电脑去 cb11.05.204 检查电脑。他们那有具体引发问题的文件路径,如:
- C:\Users<学号>\AppData\Local\Temp\OnlineInstall\11.4.8.2122\SDK\DownloadSDKServer.exe
- C:\Users<学号>\AppData\Local\Programs\Thunder\Program\Win7AppId.exe
两个都跟迅雷有关。他们会要求:
- 删软件和相关文件;
- 用 Windows Security 做 full scan,如果扫出甚么有风险的东西也删掉,最后将结果截图发给他们。
用破解版 IDM 会被发现并禁网,他们叫 isolation,禁了之后 UTS 的手提能连上 UTS-WiFi,但上不了网,连自己屋的 wifi、手机热点也上不了网,说是一旦连上了,学校就能监测到,并封锁。须要他们解除 isolation。
不知道下次要装什么是不是要在虚拟机里搞才比较稳……UTS 有软件列表,见 [27,28],里面有 VMware。
此手提会用 onedrive 同步文件,在资源管理器左侧的 OneDrive - UTS 可以看到有哪些目录会被同步,桌面在其中,就连软链接[31]文件夹内的文件都会同步,如数据放在 *%USERPROFILE%\data* 下,这里不会同步,但为了打开方便,参照 [31] 在桌面创了个它的软链接:mklink /d "%USERPROFILE%\OneDrive - UTS\Desktop\data" %USERPROFILE%\data
,这样的话,data\ 下的文件也会被 onedrive 同步。想避免同步,不创软链接,改过在桌面用 bat 文件用命令打开文件夹:
@REM data.bat
@start %USERPROFILE%\data
这样 onedrive 就只会同步这个 data.bat 而不会同步整个 data\。另,TIM、微信有文件在 OneDrive - UTS\Documents\ 下,即 Tencent Files\、WeChat Files\,挺大,又时不时会变,onedrive 好像一直在处理它们里面的文件,又取消不掉,要在软件内改掉放文件的位置。
latex template
- SEDE(School of Electrical and Data Engineering)的 thesis latex 模板见 [23]。
- Robotics Institute 的模板:UTS-RI/UTS_thesis_template_2022、UTS-RI/UTS-RI_thesis_template。
wifi
可以连 UTS-WiFi 或 eduroam,连接设定分别见 UTS-WiFi、Eduroam。
其中 eduroam 不限 uts,也可以连其它学校提供的,且账户、密码还是用 uts 的。同学说甚至在国内激活过的帐号也能在澳洲用,不过我未试过。
References
- UTS访学参考
- 如何在UTS iHPC集群上配置conda环境
- UTS VPN Guide
- iHPC - Creating an account
- High Performance Computing,超算介绍,「Access to all UTS Systems」一节有导向 [4] 的链接。
- UTS iHPC
- iHPC Overview
- Connecting via SSH Command Line
- Getting Started
- File Systems
- shell监视gpu使用情况
- awk打印列数
- awk 'NR==1 {print $1} 这句shell语句是什么意思
- awk 的内置变量 NF、NR、FNR、FS、OFS、RS、ORS
- 在linux系统如何grep过滤中,不包含某些字符串的命令
- Linux Shell sort排序常用命令
- singularity基本用法
- Container Recipes
- Build a Container
- iHPC Singularity
- iHPC Singularity Builder
- How to do Fn Lock on Dell Wireless Keyboard KM5221W so F1 - F12 keys work normally?
- Daniel Franklin/SEDE SRMC Templates and Examples
- How can I run Tensorboard on a remote server?
- iTomxy/ml-template/scripts/tunnel.bat
- Bad local forwarding specification while connecting to cluster
- Software download
- Software available to students
- How can I get the hostname of the machine I work on?
- 手写dos batch简易ssh client
- windows软链接
- ssh -L forward multiple ports
- Test if the first character is a number using awk
- Monitoring Computations With Jmon
- Take the first command line argument and pass the rest