如何从节点收集处理过的信息SLURM/PBS
问题描述:
我是新来的并行计算,我无法理解PBS系统的使用。我已成功安装SLURM并设置处理节点。但无法理解我如何在多个节点之间分配任务。如何从节点收集处理过的信息SLURM/PBS
有很多简单的例子,但他们只是运行简单的“Hello World”程序,这就是全部。
考虑下面的例子,我在网上找到了。
#!/bin/bash
#SBATCH -N 4
#SBATCH -c 1
#SBATCH --time=0-00:15:00 # 30 minutes
#SBATCH --job-name="just_a_test"
module load python
python --version
运行的简单脚本获取Python版本。
当我运行它使用sbatch python.slurm
时,结果只保存在第一个节点上,即使我将该数字设置为4.但srun -N4 /bin/hostname
工作正常另一方面。
但这不是主要问题。
我不明白我必须编写我的并行算法。
任何并行算法的例子,如阵列排序,矩阵乘法或其他。
在Hadoop或仅在多线程环境中使用的步骤。
- 从源获取输入。
- 将输入划分为块,块的数量应与节点数相关。
- 把这些大块各处理节点/线程
- 等待所有线程完成
- 收集处理信息,并显示其合并
后用户如何能做到用SLURM或任何PBS相同。
#!/bin/bash
#SBATCH -N 4
#SBATCH -c 1
#SBATCH --time=0-00:15:00 # 30 minutes
#SBATCH --job-name="just_a_test"
what I have to write here ?
请解释这个或给一篇好文章阅读,因为我还没有找到任何。 感谢
答
最基本的方式做到这一点是使用pbsdsh:
pbsdsh hostname
将使hostname命令在你的工作每次执行插槽(核或线程)执行一次。我还会指出,你需要将你的#SBATCH翻译成他们的#PBS等价物。
更通用的方法是通过MPI实现。