超算提交任务的相关命令参考:Linux的常用命令、超算中作业管理系统PBS/Slurm/LSF的常用命令。本篇讨论提交任务时 CPU 数量的选取,也就是 PBS 的 .sh 或 .pbs 脚本文件中 “ppn” 的大小。其中,“ppn”代表“processors per node”。
以下是关于 CPU 数量的讨论:
- 如果使用的是某个软件,那么按软件的要求配置 CPU 数量即可。
- 如果是自定义程序,且程序整体完全是串行/非并行的,那么指定一个核计算即可,这时候性价比是最高的,即“#PBS -l nodes=1:ppn=1”。虽然多核运算时,有些代码的底层算法有一定程度的加速,但加速效果不一定按 CPU 数量成比例增加。如果是矩阵运算,不同核数的加速效果参考这篇:不同CPU核数对矩阵运算的加速效果。如果不清楚某个程序并行的能力,可以用单核、双核、三核等配置分别进行测试,并记录计算时间。
以下是关于内存的讨论:
- 通过 pbsnodes 命令查看队列和节点的内存信息,确保内存满足程序的需求。如果某个节点的内存刚好满足需求,这时候建议选择占用该节点的所有 CPU 核数,防止其他任务提交后也占用内存,导致内存不足的情况。
- 如果内存不足,通常会导致程序报错自动退出。有的服务器的内存和 CPU 核数是相互绑定的,例如单核 CPU 运行时配置的内存为 4G(具体以服务器商家提供的信息为准),那么双核 CPU 运行时配置的内存为 8G,这时候如果内存不足,可以适当提高单任务的 CPU 核数来满足内存要求。
- 在有些情况下,超出默认内存也不会报错自动退出,这有可能是因为虚拟内存(磁盘)在起作用,但磁盘的访问速度会慢很多,这会导致 CPU 长时间等待数据,运行时间会特别长,反而增加了计算成本,计算时间甚至可能会 10 倍以上的增加。如果遇到计算时间特别长的情况,推荐增加内存资源。
附:
双核 CPU 运行的 PBS 文件 a.sh 为
#!/bin/sh
#PBS -N task
#PBS -l nodes=1:ppn=2
python a.py
四核 CPU 运行的 PBS 文件 a.sh 为
#!/bin/sh
#PBS -N task
#PBS -l nodes=1:ppn=4
python a.py
【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com】