Tan*_*ash 8 parallel-processing multithreading hpc mpi slurm
sbatch手册页中使用的术语可能有点令人困惑.因此,我想确保我正确设置选项.假设我有一个任务在一个有N个线程的节点上运行.我是否正确地假设我会使用--nodes = 1和--ntasks = N?我习惯于考虑使用例如pthreads在单个进程中创建N个线程.他们称之为"核心"或"每个任务的cpus"的结果是什么?CPU和线程在我的脑海里并不是一回事.
Tun*_*ung 13
sbatch --ntasks 24 [...]
sbatch --ntasks 1 --cpus-per-task 24 [...]
Run Code Online (Sandbox Code Playgroud)
从这个问题:如果每个节点有24个核心,这些命令之间有什么区别吗?
sbatch --ntasks 24 [...]
sbatch --ntasks 1 --cpus-per-task 24 [...]
Run Code Online (Sandbox Code Playgroud)
回答:
是的,这两份提交文件之间存在差异.你是正确的,通常--ntasks=#是--ntasks-per-node=#和--cpus-per-task=#是多线程的,但让我们看看你的命令:
对于您的第一个示例,ntasks将分配具有24个任务的作业.在这种情况下,这些任务只有1个CPU,但可以分布在多个节点上.因此,您可以在多个节点上获得总共24个CPU.
对于第二个示例,mpi将为该任务分配一个具有1个任务和24个CPU的作业.因此,您将在单个节点上获得总共24个CPU.
换句话说,任务不能跨多个节点分割.因此,使用cpus-per-task将确保它被分配到同一节点,同时使用sbatch --ntasks 24 […]can并且可以将其分配给多个节点.
另一个很好的问答:假设您需要16个核心.以下是一些用例
sbatch --ntasks 1 --cpus-per-task 24 [...]--cpus-per-task--ntasks或--ntasks=16--ntasks=16--ntasks=16 and --ntasks-per-node=1--ntasks=16 and --nodes=16--ntasks=16 --nodes=16 --exclusive--ntasks=16 --ntasks-per-node=2| 归档时间: |
|
| 查看次数: |
3614 次 |
| 最近记录: |