Open MPI如何实现数据类型转换?

问题描述 投票:0回答:1

MPI标准规定,当并行程序在异构环境中运行时,它们可能对同一数据类型具有不同的表示形式(如用于整数的大端和小端机器),因此在进行点对点通信时可能需要进行数据类型表示转换。我不知道Open MPI如何实现这一点。

例如,当前的Open MPI默认使用UCX库,我研究了UCX库的一些代码和Open MPI的ucx模块。但是,对于像MPI_INT这样的连续数据类型,我没有发现任何表示转换发生。我想知道是因为我错过了那部分或实施不符合标准?

mpi communication openmpi
1个回答
1
投票

如果要在异构群集上运行Open MPI应用程序,则必须使用configure --enable-heterogeneous(默认情况下禁用此功能)。请记住,这应该可行,但它经过了轻微测试,主要是因为缺乏兴趣/实际使用案例。 FWIW,IBM Power现在是小端,富士通正在从Sparc转向ARM用于HPC,因此几乎所有HPC处理器都是(或将很快)小端。

Open MPI使用转换器(请参阅opal/datatype/opal_convertor.h)在发送数据之前打包数据,并在收到数据后将其解压缩。数据以当前字节顺序打包。如果发送方具有不同的字节序,则由接收方执行数据转换(例如交换字节)。

有两种使用UCX的方法:pml/ucxpml/ob1+btl/ucx,我在异构环境中没有测试过它们。如果你遇到pml/ucx的一些问题,试试mpirun --mca pml ob1 ...

© www.soinside.com 2019 - 2024. All rights reserved.