我正在运行 Linux (Pop!_OS),并尝试使用 mpi 运行我的程序。但是,它不适用于 python 脚本(使用 mpi4py),但它对 C 脚本有用。(使用 mpi.h)为了测试它,我...
我正在运行 Linux (Pop!_OS),并尝试使用 mpi 运行我的程序。但是,
它不适用于 Python 脚本(使用 mpi4py)
但它对 有点 用。(使用 mpi.h)
为了测试它,我运行了一个简单的程序,程序应该输出 hello {rank} out of {size}
。其中 rank
是将打印该行的当前处理器, size
是使用的处理器总数。
我的程序: hello.py
### hello.py ###
from mpi4py import MPI
MPI = MPI.COMM_WORLD
size = comm.size
rank = comm.rank
print(f"{rank} of {size}")
这是我得到的输出 mpirun -np 4 python3 hello.py
hwloc/linux: Ignoring PCI device with non-16bit domain.
Pass --enable-32bits-pci-domain to configure to support such devices
(warning: it would break the library ABI, don't enable unless really needed).
上述信息重复了 8 次,最后是以下内容
hello 0 of 1
hello 0 of 1
hello 0 of 1
hello 0 of 1
我有一个用 C 语言编写的类似程序, hello.c
/*hello.c*/
#include <stdio.h>
#include <mpi.h>
int main(int argc, char *argv[]){
int size, rank;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
printf("Hello %d out of %d\n", rank, size);
MPI_Finalize();
}
使用 mpicc 编译然后运行: mpirun -np 4 ./hello
。我收到相同的错误消息,但只有一次,最后输出:
hwloc/linux: Ignoring PCI device with non-16bit domain.
Pass --enable-32bits-pci-domain to configure to support such devices
(warning: it would break the library ABI, don't enable unless really needed).
Hello 0 out of 4
Hello 2 out of 4
Hello 3 out of 4
Hello 1 out of 4
虽然这给出了所需的输出,但我不知道如何处理提示 hwloc/linux...
。我想修复它,以便它也可以正确运行 mpi4py。
更多详细信息:
-
我有双启动系统,另一个操作系统是位于单独 SSD 上的 Windows。相同的程序在 Windows 上可以正常运行。