C 仅在一个进程中执行的MPI程序,针对多个进程的请求
我是一个试图学习MPI的初学者。我已尝试运行从internet下载的以下程序:C 仅在一个进程中执行的MPI程序,针对多个进程的请求,c,parallel-processing,mpi,C,Parallel Processing,Mpi,我是一个试图学习MPI的初学者。我已尝试运行从internet下载的以下程序: #include <stdio.h> #include <mpi.h> int main (argc, argv) int argc; char *argv[]; { int rank, size; MPI_Init (&argc, &argv); /* starts MPI */
#include <stdio.h>
#include <mpi.h>
int main (argc, argv)
int argc;
char *argv[];
{
int rank, size;
MPI_Init (&argc, &argv); /* starts MPI */
MPI_Comm_rank (MPI_COMM_WORLD, &rank); /* get current process id */
MPI_Comm_size (MPI_COMM_WORLD, &size); /* get number of processes */
printf( "Hello world from process %d of %d\n", rank, size );
MPI_Finalize();
return 0;
}
结果如下:
Hello world from process 0 of 1
Hello world from process 0 of 1
Hello world from process 0 of 1
Hello world from process 0 of 1
我的问题是,为什么输出只生成了一个进程而没有按请求生成4个进程?当mpicc和mpirun不是来自同一个MPI实现时,会出现此问题。
您可以卸载openmpi和mpich,并且只安装mpich库。
在终端中运行这些命令。
sudo apt get remove-自动删除openmpi文件箱
sudo apt get remove-自动删除mpich
sudo apt get install mpich以下解决了我的问题:
sudo apt-get remove --auto-remove openmpi-bin
sudo apt-get remove --auto-remove mpich
sudo apt-get install mpich
sudo apt install lam-runtime
sudo apt install mpich
sudo apt install openmpi-bin
sudo apt install slurm-wlm-torque
你们有多少核?我成功地在我的i7,8核机器上运行了它,并得到了预期的输出。甚至我在其他电脑上也尝试了这一点,并获得了预期的结果。但在我的电脑中,问题依然存在。pc的nproc值为12。我猜生成过程与核心硬件无关。可能重复感谢您的回复。我试图跟踪讨论的链接,但哪个mpicc和哪个mpirun返回了计算机上的位置。因此,我真的无法断定他们是否来自同一版本。我还有别的办法吗?
sudo apt-get remove --auto-remove openmpi-bin
sudo apt-get remove --auto-remove mpich
sudo apt-get install mpich
sudo apt install lam-runtime
sudo apt install mpich
sudo apt install openmpi-bin
sudo apt install slurm-wlm-torque