如何从节点SLURM / PBS收集处理过的信息

时间:2017-04-22 19:27:43

标签: multithreading parallel-processing distributed-computing pbs slurm

我是并行计算的新手,我无法理解PBS系统的使用。我已成功安装SLURM并设置处理节点。但无法理解我如何在多个节点之间分配任务。

有很多简单的例子,但它们只是运行简单的“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. 收集已处理的信息并在合并后向用户显示
  6. 如何使用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 ?
    

    请解释一下或给出一篇好文章来阅读,因为我还没有找到。 感谢

1 个答案:

答案 0 :(得分:0)

最基本的方法是使用pbsdsh:

pbsdsh hostname

将使jobname命令对作业中的每个执行槽(核心或线程)执行一次。我还要指出,您需要将#SBATCH翻译成他们的#PBS等价物。

更通用的方法是通过MPI实现。