如何从节点收集处理过的信息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或仅在多线程环境中使用的步骤。

  1. 从源获取输入。
  2. 将输入划分为块,块的数量应与节点数相关。
  3. 把这些大块各处理节点/线程
  4. 等待所有线程完成
  5. 收集处理信息,并显示其合​​并

后用户如何能做到用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实现。