3.1.5. Open MPI v3.0.x 系列

本文件包含Open MPI v3.0.x系列的所有更新日志,按时间倒序排列。

3.1.5.1. Open MPI 版本 3.0.6

Date:

2020年3月

  • 修复单边共享内存窗口配置错误。

  • 修复对PGI'18编译器的支持。

  • 修复新版本Linux发行版上OMPIO的运行时链接器问题。

  • 允许用户在Open MPI SRPM中覆盖modulefile_path,即使install_in_opt设置为1。

  • 在openib BTL中正确检测ConnectX-6 HCAs。

  • 修复大型作业中MTL/OFI初始化时的段错误。

  • 修复了portals4控制流中的各种错误。

  • 修复alltoall和笛卡尔邻域集合操作的通信顺序问题。

  • 修复了在使用某些绕过操作系统的互连技术时,在glibc v2.26或更高版本系统(如Ubuntu 18.04)上内存修补程序出现的无限递归崩溃问题。

3.1.5.2. Open MPI 版本 3.0.5

Date:

2019年11月

  • 修复了OMPIO限制文件读写大小为2GB的问题。感谢Richard Warren报告此问题。

  • 在运行时,当在用户命名空间(即容器)中运行时,自动禁用vader BTL(共享内存)副本的Linux跨内存附加(CMA)功能。非常感谢Adrian Reber提出这个问题并提供修复方案。

  • 使用ofi MTL发送非常大的MPI消息时,某些底层Libfabric传输会失败(例如,PSM2传输的消息>=4GB,verbs传输的消息>=2GB)。早期版本的Open MPI会静默失败;当前版本的Open MPI在失败时会调用适当的MPI错误处理程序。更多详情请参阅https://github.com/open-mpi/ompi/issues/7058。感谢Emmanuel Thomé提出此问题。

  • 修复了在优化过程中可能消除0范围数据类型的情况。感谢Github用户@tjahns提出这个问题。

  • 确保在问题平台上不会优化掉MPIR_Breakpoint符号。

  • 修复了在MPI_FILE_GET_POSITION中使用SEEK_ENDSEEK_CUR时的OMPIO偏移量计算问题。感谢Wei-keng Liao提出这个问题。

  • 修复了数据类型范围计算中的极端情况。感谢David Dickenson提出这个问题。

  • 修复使用“cm”PML的MPI缓冲发送问题。

  • 更新至PMIx v2.2.3版本。

  • 修复了基于ssh的大规模树形生成问题。非常感谢Github用户@zrss的报告和诊断。

  • 修复Open MPI RPM规范文件,使其在grep失败时不会中止。感谢Daniel Letai提请我们注意此问题。

  • 处理新的SLURM命令行选项(SLURM 19弃用了Open MPI正在使用的一些选项)。感谢Jordan Hayes的报告和初步修复。

  • OMPI: 修复空文件视图导致的除零错误。

  • 同时处理shmat()/shmdt()与OS旁路网络的内存修补。

  • 为从MPI_Init开始的调用栈中所有文件添加栈展开信息支持,这对并行调试器很有帮助。感谢James Clark的报告和初步修复。

  • 修复了MPI C++绑定头文件中无意使用位运算符的问题。感谢Bert Wesarg的报告和修复。

  • 新增了配置选项 --disable-wrappers-runpath(与已有的 --disable-wrappers-rpath 选项并列),用于阻止 Open MPI 的配置脚本自动向包装器编译器添加 runpath 命令行选项。

3.1.5.3. Open MPI 版本 3.0.4

Date:

2019年4月

  • 修复了当配置--enable-mpi-java--with-devel-headers时出现的编译错误。感谢@g-raffy报告此问题。

  • 修复了OMPIO中可能导致浮点数舍入和除法问题,这些问题在处理极大数据时会导致崩溃或数据损坏。感谢Axel Huebl和René Widera发现该问题、提供并测试修复方案(** 同样出现在:v3.0.4版本)。

  • mpi.h中适当使用static_cast<>。感谢@shadow-fx发现此问题。

  • 修复了RMA累积操作中的数据类型问题。感谢Jeff Hammond提出该问题。

  • 修复了使用预定义运算符对非预定义数据类型进行RMA累积的问题。感谢Jeff Hammond提出此问题。

  • 修复在启动MPI进程时关闭已打开文件描述符的竞态条件。感谢Jason Williams发现该问题并提供修复方案。

  • 修复了部分MPI_TYPE_CREATE_*函数在Valgrind中的警告。感谢Risto Toijala发现该问题并提供修复方案。

  • 修复MPI_TYPE_CREATE_F90_{REAL,COMPLEX}中r=38和r=308的问题。

  • 修复了旧版本gcc(<6.0.0)中的汇编问题,该问题影响了共享内存通信的稳定性(例如,与vader BTL相关)。

  • 修复OFI MTL对MPI_ANY_SOURCE的处理。

  • 修复了openib BTL中关于ibv_exp_query_device()的噪声错误。感谢Angel Beltre和其他报告此问题的人员。

3.1.5.4. Open MPI 版本 3.0.3

Date:

2018年10月

  • 修复了非阻塞发送/接收路径中MPI_THREAD_MULTIPLE支持的竞态条件问题。

  • 修复SIGCHLD转发中的错误处理。

  • CHARACTERLOGICAL Fortran数据类型添加对MPI_SIZEOF的支持。

  • 修复使用OpenJDK 11编译Java绑定时的编译错误。

  • 修复了在使用包含‘用户@主机’行的主机文件时出现的崩溃问题。

  • 大量Fortran '08接口修复。

  • TCP BTL 错误消息修复。

  • OFI MTL现在将使用除shm、sockets、tcp、udp或rstream之外的任何提供程序,而不仅限于支持gni、psm和psm2。

  • 默认禁用CUDA缓冲区的异步接收,修复了大传输时的挂起问题。

  • 支持BCM57XXX和BCM58XXX Broadcomm适配器。

  • 修复ROMIO中的minmax数据类型支持。

  • vader共享内存传输中的错误修复。

  • 支持使用MPI_TYPE_VECTOR处理超大缓冲区。

  • 修复在Cray系统上使用mpirun启动时出现的挂起问题。

  • OFI MTL中的错误修复。

  • 修复了Assorted Portals 4.0中的各种错误。

  • 修复了MPI_BSEND中可能出现的数据损坏问题。

  • 将vader btl的共享内存文件移动到Linux的/dev/shm目录下。

  • 修复了MPI_ISCATTER/MPI_ISCATTERV Fortran接口与MPI_IN_PLACE的问题。

  • 将PMIx升级至v2.1.4版本。

  • 修复Power9内置原子操作的bug。

  • 大量单边错误的修复。

  • 修复uGNI BTL中的竞态条件问题。

  • 改进对TCP BTL大量接口的处理。

  • 修复了大量UCX相关错误。

  • 为Open IB BTL添加对QLogic和Broadcom Cumulus RoCE HCAs的支持。

  • 为aarch64架构添加补丁程序支持。

  • 修复在Power和ARM架构上,当Open MPI以低编译器优化设置构建时出现的挂起问题。

3.1.5.5. Open MPI 版本 3.0.2

Date:

2018年6月

  • 由于该组件中存在大量竞态条件,在使用MPI_THREAD_MULTIPLE时禁用osc/pt2pt。

  • 修复Fortran绑定中mpi和mpi_f08的虚拟变量名称,使其符合MPI标准。这可能会破坏那些在Fortran中使用基于名称参数(使用我们内部名称而非MPI标准文档中名称)的应用程序。

  • 修复了NAG编译器中Fortran模块"mpi"内的MPI_SIZEOF问题。

  • 修复use-mpi-f08绑定中的RMA函数签名,使所有缓冲区都具有异步属性。

  • 修复Fortran MPI_COMM_SPAWN_MULTIPLE函数,使其在解析array_of_commands变量时能正确遵循count长度参数。

  • 改进Java检测机制,以正确处理不再提供javah包装器的新版Java版本。

  • 改进了查找UCX库的配置逻辑。

  • 增加对HDR InfiniBand链路速度的支持。

  • 在配置中禁用POWER 7/BE模块。请注意POWER 7/BE仍不是受支持的平台,但不再自动禁用。更多信息请参阅https://github.com/open-mpi/ompi/issues/4349#issuecomment-374970982

3.1.5.6. Open MPI 版本 3.0.1

Date:

2018年3月

  • 修复将并行调试器附加到MPI进程的功能。

  • 修复了HDF5测试套件发现的MPI I/O中的若干问题。

  • 修复共享内存中(极大)大消息传输的问题。

  • 修复多网卡配置中的乱序错误。

  • 修复可能导致输入丢失的标准输入重定向错误。

  • 如果检测到CSM,则禁用LSF启动器。

  • 修复了MPI_Mem_free()中的内存泄漏问题。感谢Philip Blakely的报告。

  • 修复当节点数量大于基数时的树形生成操作。感谢Carlos Eduardo de Andrade的报告。

  • 修复MPI扩展中的Fortran 2008宏。感谢Nathan T. Weeks的报告。

  • 将UCX添加到OpenSHMEM默认使用的接口列表中。

  • 添加 --{enable|disable}-show-load-errors-by-default 来控制加载错误选项的默认行为。

  • OFI MTL改进:正确处理空完成队列,修复fi_getinfo()相关的错误消息,默认使用提供商的默认进度选项,在ofi_progress中添加支持读取多个CQ事件。

  • PSM2 MTL改进:支持使用GPU缓冲区,修复线程问题。

  • 对内存检查器行为进行了大量修正。

  • 添加一个mca参数ras_base_launch_orted_on_hn,允许在运行mpirun的同一节点上通过单独的orte守护进程(而非mpirun进程)启动MPI进程。在使用SLURM时将此参数设为true可能很有用,因为它能提升与SLURM信号传播工具的兼容性。默认情况下该参数设为false,但在Cray XC系统上例外。

  • 修复了Kevin McGrattan和Stephen Guzik在邮件列表中分别报告的问题,该问题涉及使用OMPIO时NFS文件系统的一致性。此修复还引入了一个新的mca参数fs_ufs_lock_algorithm,用于控制ompio在读写操作中使用的锁定算法。默认情况下,ompio不会在本地UNIX文件系统上执行锁定,在NFS文件系统上按操作锁定整个文件,在其他分布式文件系统上执行选择性字节范围锁定。

  • 添加一个mca参数pmix_server_usock_connections,使mpirun能够支持静态链接Open MPI v2.x版本构建的应用程序,或与Open MPI v2.x库一起安装在容器中的应用程序。该参数默认设置为false。

3.1.5.7. Open MPI 版本 3.0.0

Date:

2017年9月

重要

主要新特性:

  • 为OSHMEM对称堆分配使用UCX分配器,以优化节点内的数据传输。仅适用于UCX SPML。

  • 在UCX PML中使用UCX多线程API。需要UCX 1.0或更高版本。

  • 新增对Flux PMI的支持

  • 将嵌入式PMIx更新至2.1.0版本

  • 将嵌入式hwloc更新至版本1.11.7

  • 根据Open MPI的版本规则(参见README),主版本号升级到3意味着此版本与之前版本的Open MPI不兼容ABI。此外,MCA参数名称和默认值可能与之前版本存在差异。mpirun及其他命令的命令行选项也可能与先前版本不同。您需要重新编译MPI和OpenSHMEM应用程序才能与此版本的Open MPI兼容。

  • 在此版本中,Open MPI默认支持MPI_THREAD_MULTIPLE

  • 新增了配置选项,用于指定libnl和zlib的安装位置。

  • 新增了一个配置选项以支持Flux PMI。

  • mpirun及相关命令的帮助菜单现在基于上下文。mpirun --help compatibility会生成与之前版本相同格式的帮助菜单。

注意

移除了旧版支持:

  • AIX 操作系统不再受支持。

  • Loadlever 已不再受支持。

  • OpenSHMEM目前通过ucx和ikrit SPML分别支持UCX和MXM传输协议。

  • 由于缺乏支持,从OpenIB BTL中移除了IB XRC支持。

  • 移除对大端序PowerPC的支持。

  • 移除对早于v13.1版本的XL编译器的支持

注意

已知问题:

  • 由不同mpirun命令启动的应用程序之间的MPI_Connect/accept操作将会失败,即使ompi-server正在运行。