🅿️ phyem任务¶
phyem任务往往属于并行任务。所以,在开始次教程前,请完成 🖇️ 并行运算 教程。
请下载此phyem任务教程需要用到的样板文件到你的电脑:
其中,my_example_phyem_program.py 文件是一个简单的phyem程序模板。
而上述 my_phyem_job.sh 文件是一个并行任务配置文件。它与 🖇️ 并行运算 教程中使用的
my_parallel_job.sh 配置文件没有本质区别。
🧪 phyem程序模板解析¶
如果你查看 my_example_phyem_program.py 文件你将看到以下内容:
import sys
ph_dir = '/home/libdgmp' # 在GigaRiver里,phyem已经被放置在此文件夹中。
sys.path.insert(0, ph_dir) # 将phyem所在文件夹添加至搜索路径里,这样python将能够找到phyem
import phyem as ph # 将phyem导入
from time import sleep
sleep(10) # 等待10秒,延长程序运行时间以便于squeue查看任务进度。
print(ph)
import socket
hostname = socket.gethostname()
print(f"ph is imported correctly in RANK#{ph.config.RANK} at {hostname}.")
# You can call phyem package by calling ph now.
其中前面4行为phyem库的导入。phyem库已经被安装到了GigaRiver的所有节点,你只需要将这4行代码添加进你的代码,你就可以直接使用phyem库。
注意:phyem是一个并行库,允许并行运算。但是如果你进行了基于phyem的二次开发,且你自己的代码只能进行串行运算,即不是并行代码, 那么你将只能将任务提交成单线程任务,即 🧮 任务提交和结果下载 教程中介绍的任务。
🛡️ phyem任务配置文件解析¶
phyem任务的配置文件本质上就是一个普通的任务配置文件。比如 my_phyem_job.sh 包含以下内容:
#!/bin/bash
#SBATCH --job-name=phyem_job
#SBATCH --partition=P0
#SBATCH --nodes=1
#SBATCH --ntasks=4
#SBATCH --mem=8G
#SBATCH --time=6-23:59:59
#SBATCH --output=output.out
#SBATCH --error=error.err
mpirun python3 my_example_phyem_program.py
它与 🖇️ 并行运算 教程中使用的
my_parallel_job.sh 配置文件相比没有区别,除了这里我们通过
mpirun python3 my_example_phyem_program.py
运行的是 my_example_phyem_program.py。
但是,如果你基于phyem进行二次开发,且你开发的内容无法进行并行,
那么你只需使用 --ntasks=1 即可。同时,你可以不需要使用 mpirun。
比方说,假如你的串行(非并行)phyem程序为 my_single_process_phyem_program.py, 在配置文件的程序运行命令处,你只需要使用
python3 my_single_process_phyem_program.py
因为直接调用python3等同于启动单进程的python3运算。
⚾ 任务上传、提交、结果下载等¶
这部分内容同普通任务类似,请参考 🧮 任务提交和结果下载 教程。
在成功使用 sbatch 命令执行
$ sbatch my_phyem_job.sh
后,请使用 squeue 监视程序运行状态。在程序运行完成后,查看此次运行生成的 output.out 文件。
你能根据 my_example_phyem_program.py 中的代码解释 output.out 中的内容么?
Important
一样,请确保只通过 sbatch (或 srun)来提交phyem任务。切勿在终端直接运行phyem(或任何其他)任务。
至此GigaRiver的用户教程全部结束🔚。
↩️ Back to ✅ Tutorial.
🌊 Back to GigaRiver.