在Jupyter笔记本中使用`mpirun`
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Jupyter笔记本中使用`mpirun`相关的知识,希望对你有一定的参考价值。
我有一个简单的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))
",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)
(部分)答案如下。由于我不完全理解的原因,Jupyter笔记本和交互式shell使用不同的搜索路径来查找mpirun
。
在IPython中:
In [1]: !type mpirun
mpirun is /opt/local/bin/mpirun
但在笔记本中,我有:
在bash提示符中使用此版本的mpirun
,我得到:
(bash) $ /usr/local/Anaconda3/bin/mpirun -n 4 demo
Processor [0] : Hello, World! (world=1 processor(s))
Processor [0] : Hello, World! (world=1 processor(s))
Processor [0] : Hello, World! (world=1 processor(s))
Processor [0] : Hello, World! (world=1 processor(s))
从笔记本运行正确的版本,我得到了预期的结果。
我在两个版本(OpenMPI,由Anaconda安装)和MPICH(由MacPorts安装)之间存在不兼容性。使用mpicc
从一个版本编译,并使用mpirun
从另一个版本运行似乎是一个坏主意。
感谢@jakevdp为这个blog post指出了我正确的方向!
以上是关于在Jupyter笔记本中使用`mpirun`的主要内容,如果未能解决你的问题,请参考以下文章
pip 安装了 google.colab,现在无法在 Jupyter 笔记本上运行代码
解决Jupyter notebook报错:AssertionError: wrong color format ‘var(--jp-mirror-editor-variable-color)‘(代码片
如何在从 docker 容器运行的 jupyter 笔记本中获取黑色代码格式?