首页 > 解决方案 > MPI (mpi4py) - 打印 Hello, World 仅限于一个节点

问题描述

我已经安装了 mpi4py 并试图编写我自己的 python 代码来跨节点运行。MPI for python 包的演示文件夹有一个我执行的 hello world 脚本,它运行成功,输出如下:

我有 2xraspberrypi(四核),输出正确!

Command: mpiexec --hostfile machinefile -n 8 python ~/mpi4py/mpi4py-3.0.3/demo/helloworld.py
Output:

Hello, World! I am process 0 of 8 on node001.
Hello, World! I am process 1 of 8 on node001.
Hello, World! I am process 2 of 8 on node001.
Hello, World! I am process 3 of 8 on node001.
Hello, World! I am process 6 of 8 on node002.
Hello, World! I am process 7 of 8 on node002.
Hello, World! I am process 4 of 8 on node002.
Hello, World! I am process 5 of 8 on node002.

我试图创建一个 python 脚本并从演示文件夹中复制粘贴 python 脚本并运行以下命令:

Command: mpiexec --hostfile machinefile -n 8 python ~/Desktop/sct/sct.py 

但我的输出仅限于四张照片:

Hello, World! I am process 2 of 8 on node001.
Hello, World! I am process 3 of 8 on node001.
Hello, World! I am process 0 of 8 on node001.
Hello, World! I am process 1 of 8 on node001.

这是粘贴的完全相同的代码副本。我不明白出了什么问题。它应该像从演示文件夹中一样打印出 8 次,但在这里它只打印出 4 次。

如果你们都需要 python 脚本中的代码:

#!/usr/bin/env python
"""
Parallel Hello World
"""

from mpi4py import MPI
import sys

size = MPI.COMM_WORLD.Get_size()
rank = MPI.COMM_WORLD.Get_rank()
name = MPI.Get_processor_name()

sys.stdout.write(
    "Hello, World! I am process %d of %d on %s.\n"
    % (rank, size, name))

请帮忙!

标签: pythonparallel-processingmpimpi4py

解决方案


傻我..我没有将脚本从我的主节点复制到我的工作节点。该脚本是从主节点端执行的。


推荐阅读