python - 无法在 Beowulf 集群上正确运行个人作业。示例工作工作正常

标签 python ubuntu mpi cluster-computing mpich

我最近使用一个主节点和两个客户端节点设置了一个 Beowulf 集群。所有客户端节点都共享主节点的 /home/mpiuser/ 目录,并在主节点上的目录发生更改时自动更新。我已成功运行使用以下命令下载 MPICH2 时给出的示例编译的 cpi 文件

$ mpiexec -f hosts -n 3 /home/mpiuser/mpich2-1.4.1/examples/cpi

给出以下输出

Process 0 of 3 is on Master
Process 2 of 3 is on Slave2
Process 1 of 3 is on Slave1
pi is approximately 3.1415926544231318, Error is 0.0000000008333387
wall clock time = 0.001477

然后,当我尝试运行我在此处创建的 python 文件时:/home/mpiuser/Development/fact_test.py,使用此命令

$ mpiexec -f hosts -n 3 /home/mpiuser/Development/fact_test.py

我收到以下错误

[proxy:0:0@Master] HYDU_create_process (./utils/launch/launch.c:69): execvp error on file /home/mpiuser/Development/fact_test.py (Permission denied)
[proxy:0:1@Slave1] HYDU_create_process (./utils/launch/launch.c:69): execvp error on file /home/mpiuser/Development/fact_test.py (Permission denied)
[proxy:0:2@Slave2] HYDU_create_process (./utils/launch/launch.c:69): execvp error on file /home/mpiuser/Development/fact_test.py (Permission denied)

此外,我还可以通过以下输入和输出正确获取主节点和客户端节点的名称:

$ mpirun --machinefile hosts hostname
Master
Slave1
Slave2

我不太确定错误来自哪里。一些附加信息: MPICH2版本:1.4.1 Python版本:3.5.2

fact_test.py:

import scipy as sp
import time

def factorial_func(i):
    return sp.math.factorial(i)

if __name__ == "__main__":
    i = 1e5
    t0 = time.time()
    fac = factorial_func(i)
    t1 = time.time()
    print(t1-t0)

如果您需要更多信息,我很乐意提供。谢谢!

最佳答案

您可以在登录节点上运行/home/mpiuser/Development/fact_test.py吗?

我对此表示怀疑 - 没有使用 python 解释器的神奇头文件 - 该文件可能无法执行

一个选项是添加到文件的开头

#!/usr/bin/python

然后

chmod 755 /home/mpiuser/Development/fact_test.py

其他选项是手动使用 python 解释器,您的 mpiexec 命令将变为

mpiexec -f hosts -n 3 python /home/mpiuser/Development/fact_test.py

关于python - 无法在 Beowulf 集群上正确运行个人作业。示例工作工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46164862/

相关文章:

python - Pandas 的百分比变化

python - tkinter 中字符和事件处理的 % 运算符

python - Remote_api_stub 的路径问题

php - 如果/root 中存在 py 文件

gcc - Ubuntu (12.10) 和 GCC 4.7/4.8 有什么问题?

c - 使用 MPI_Bcast 时出现 MPI 段错误

Python函数用另一个标签替换标签的所有实例

C++ Boost线程库拉入整个开发环境

c - 模仿 OpenMP 的 for-loop pragma 的 MPI 包装器

c++ - MPI 实时物理