TACC 集群使用笔记
1注册账号
现在网页上注册账号,之后需要联系导师或者管理员把你添加到对应的集群里去,例如我加入的是 Lonestar6 集群。
之后需要跟着这个教程绑定 MFA 软件(可以是 DUO 或者 1password)
之后登录账号,系统会要求先后输入你的账户密码和 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 节点下的 /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
节点。