【发布时间】:2018-02-10 18:47:47
【问题描述】:
我有一个简单的 C/MPI 代码:
/* File: demo.c */
#include <stdio.h>
#include <mpi.h>
void main(int argc, char** argv)
{
int my_rank,nprocs;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
printf("Processor [%d] : Hello, World! (world=%d processor(s))\n",my_rank,nprocs);
MPI_Finalize();
}
当我在交互式 Python shell 中运行它时,我得到了预期的输出:
In [1]: !mpirun -n 4 demo
Processor [1] : Hello, World! (world=4 processor(s))
Processor [3] : Hello, World! (world=4 processor(s))
Processor [2] : Hello, World! (world=4 processor(s))
Processor [0] : Hello, World! (world=4 processor(s))
In [2]:
但是,当我在 Jupyter 笔记本中运行相同的命令时,我得到了四个串行作业:
有没有更好的方法从笔记本中调用mpirun 脚本?我已经尝试过%%bash 魔术和子进程,但这些会产生相同的结果。
我有兴趣从笔记本中运行 MPI 代码,作为一种收集运行时数据以进行存储和显示的简单方法。我对编写并行 Python 程序不是很感兴趣。
我在 OSX 10.13.2 上运行 Python 3.6.3 (Anaconda)
【问题讨论】:
标签: ipython mpi jupyter-notebook jupyter