TACC 集群使用笔记

1注册账号

现在网页上注册账号,之后需要联系导师或者管理员把你添加到对应的集群里去,例如我加入的是 Lonestar6 集群。

之后需要跟着这个教程绑定 MFA 软件(可以是 DUO 或者 1password)

MFA 绑定

之后登录账号,系统会要求先后输入你的账户密码和 MFA 的 6 位数 token

local@username$ ssh username@ls6.tacc.utexas.edu
(username@ls6.tacc.utexas.edu) Password:
(username@ls6.tacc.utexas.edu) TACC Token Code:

login1.ls6(22)$ cd $SCRATCH/
login1.ls6(23)$

密码都正确之后你会进入到 login 节点,在这里千万不能随意执行大规模的计算任务,因为很有可能会被封号。你需要使用 compute 节点执行计算任务。

Login 和 Compute 节点

成功登入后,默认进入 login 节点下的 /home目录,一般而言我们需要进入 /scratch 目录。大多数TACC HPC资源上挂载了三个文件系统:$HOME$WORK、和$SCRATCH,以下是它们的区别、使用场景和注意事项的总结:

文件系统 区别与特点 使用场景 注意事项
$HOME 用于用户的个人文件和设置。 存储cron作业、小脚本、环境设置。 避免在$HOME中运行作业,用于常规文件管理而不是并行作业。
$WORK 用于存储软件安装、原始数据集等。 存储软件安装、原始数据集、作业脚本和模板。 注意文件系统配额,接近配额可能导致文件系统压力。
$SCRATCH 临时存储、I/O文件、作业文件等。 运行I/O密集型作业,存储临时数据集。 避免在$SCRATCH中存储长期数据,文件可能在十天未访问后被清理。不要在$SCRATCH运行长期作业,用于短暂的、I/O密集型的作业。

总体而言,$HOME 适用于个人文件和设置,$WORK适用于存储软件和重要数据,而$SCRATCH适用于短暂的、I/O密集型的作业。

从实操性的角度说,进入computing node 后,默认先进入的是HOME目录,在这里你可以先设置好 conda 环境。接着,假如你要运行一个 pytorch 代码,你需要cd $SCRATCH 才能使用 GPU,这个目录下运行代码保存的日志是临时的,你需要将重要文件备份到 $WORK 目录下。

2. 交互式开发环境 idev

idev 是一个用于在TACC(Texas Advanced Computing Center)集群上创建交互式计算环境的命令行工具,可以在计算节点上创建一个交互式会话,可以在其中执行串行、OpenMP并行或MPI并行的代码,就像在批处理作业中一样。。以下是关于 idev 的一些主要用法和选项的介绍:

2.1 idev 参数选项:

  • -A account_name:设置账户名称(默认为 -A use_default)。
  • -m minutes:设置计算时间(默认为 30 分钟)。
  • -n total_tasks:设置总任务数。
  • -N nodes:设置节点数量。
  • -tpn tpn:设置每节点任务数。
  • -p queue_name:设置队列名称(默认为 -p development)。
  • -R:查找用户的预约。
  • -r reservation_name:请求使用特定的预约。
  • -r none:禁用预约检查。
  • -E:在作业开始时通知。
  • -e email_address:在作业开始时通过指定的电子邮件地址通知。
  • -t hh:mm:ss:设置计算时间(默认为 30 分钟)。
  • -queues:列出系统的队列。
  • -pselect:显示可选择的 Slurm 队列。
  • -qselect:显示可选择的 Slurm 队列。
  • -- <other SLURM options>:必须在所有 idev 选项之后使用,用于指定其他 Slurm 选项。

2.2 示例

# 默认设置:1 节点,16 任务,30 分钟,使用默认账户
idev

# 显示帮助信息
idev --help

# 设置队列、时间和账户
idev -p development -m 90 -A AB-ccviss

# 设置队列、时间、账户、节点和任务数
idev -p normal -t 00:90:00 -A TG-STA123 -N 2 -n 16

# 显示可选择的 Slurm 队列
idev -pselect

# 设置交互式会话的最长时间为2小时, 1个节点,4 个任务,请求在 development 队列中执行计算任务
idev -t 02:00:00 -N 1 -n 4 -p development

上面最后一个例子使用的是名为development的节点,你也可以先使用sinfo命令查看所有节点,然后手动设置成空闲的节点,例如:

$ sinfo
gpu-a100          up   infinite      1 drain* c317-003
gpu-a100          up   infinite     67  alloc c302-[001-004],c303-[001-004],c305-[001-002,004],c306-[002-004],c308-[001-004],c309-[001-004],c310-[001-004],c315-[001,003-016],c316-[001-002,007-016],c317-[001-002,004-008,010-016]
gpu-a100          up   infinite      5   idle c304-001,c305-003,c306-001,c316-003,c317-009
gpu-a100-dev      up   infinite      2  alloc c301-[001,004]
$ idev -t 02:00:00 -N 1 -n 4 -p gpu-a100-dev

上面命令会自动申请一个空闲的gpu-a100-dev节点。