3.1.4. Open MPI v3.1.x 系列
本文件包含Open MPI v3.1.x系列的所有NEWS更新内容,按时间倒序排列。
3.1.4.1. Open MPI 版本 3.1.6
- Date:
2020年3月
修复单边共享内存窗口配置错误。
修复对PGI'18编译器的支持。
修复
MPI_TYPE_INDEXED中零长度blockLength的问题。修复新版本Linux发行版上OMPIO的运行时链接器问题。
修复了PMIX dstore锁定的编译问题。感谢Marco Atzeri报告此问题。
允许用户在Open MPI SRPM中覆盖modulefile_path,即使
install_in_opt设置为1。在openib BTL中正确检测ConnectX-6 HCAs。
修复大型作业中MTL/OFI初始化时的段错误。
修复问题以确保在使用UCX传输时正确释放MPI单边锁,避免死锁。
修复在使用uGNI传输处理未完成传输时可能出现的死锁问题。
修复了portals4控制流中的各种错误。
修复alltoall和笛卡尔邻域集合操作的通信顺序问题。
修复了在使用某些绕过操作系统的互连技术时,在glibc v2.26或更高版本系统(如Ubuntu 18.04)上内存修补程序出现的无限递归崩溃问题。
3.1.4.2. Open MPI 版本 3.1.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单边32位原子操作支持。
修复了在
MPI_FILE_GET_POSITION中使用SEEK_END和SEEK_CUR时的OMPIO偏移量计算问题。感谢Wei-keng Liao提出这个问题。添加一个"naive"正则表达式组件,无论主机名多么复杂,它都不会失败。
修复了数据类型范围计算中的极端情况。感谢David Dickenson提出这个问题。
允许单个作业在运行LSF时设置其映射/排名/绑定策略。感谢Nick R. Papior协助解决此问题。
修复使用“cm”PML的MPI缓冲发送问题。
正确传播错误以避免MPI单边操作中的死锁。
更新至PMIx v2.2.3版本。
修复了在UCX上进行非连续MPI累积操作时的数据损坏问题。
修复了基于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的报告和修复。
3.1.4.3. Open MPI 版本 3.1.4
- Date:
2019年4月
修复了当配置使用
--enable-mpi-java和--with-devel-headers时出现的编译错误。感谢@g-raffy报告此问题(**同样出现在v3.0.4版本中)。仅使用具有适当权限的大页内存。感谢 Hunter Easterday 提供的修复。
修复了OMPIO中可能导致浮点数舍入和除法问题,这些问题在处理极大数据时会导致崩溃或数据损坏。感谢Axel Huebl和René Widera发现该问题、提供并测试修复方案(** 同样出现在:v3.0.4版本)。
在
mpi.h中适当使用static_cast<>。感谢@shadow-fx发现此问题(** 同样出现在:v3.0.4版本)。修复了使用预定义运算符对非预定义数据类型进行RMA累积的问题。感谢Jeff Hammond提出该问题(** 同样出现在:v3.0.4版本)。
修复了在启动MPI进程时关闭打开文件描述符的竞态条件。感谢Jason Williams发现该问题并提供修复方案(** 同样出现在:v3.0.4版本中)。
修复对外部PMIx v3.1.x版本的支持。
修复了部分
MPI_TYPE_CREATE_*函数中的Valgrind警告。感谢Risto Toijala发现该问题并提供修复方案(**该问题也出现在v3.0.4版本中)。修复
MPI_TYPE_CREATE_F90_{REAL,COMPLEX}中关于 r=38 和 r=308 的问题(** 该问题也出现在 v3.0.4 版本中)。修复了旧版本gcc(<6.0.0)的汇编问题,该问题影响了共享内存通信的稳定性(例如使用vader BTL时)(** 同样出现在:v3.0.4版本)。
修复了在coll/spacc模块中某些情况下
MPI_Allreduce崩溃的问题。修复OFI MTL对
MPI_ANY_SOURCE的处理(**同样出现在:v3.0.4版本)。修复openib BTL中关于
ibv_exp_query_device()的冗余错误报告。感谢Angel Beltre及其他报告此问题的人员(**该问题也出现在v3.0.4版本中)。修复使用UCX时零大小的MPI单边窗口问题。
3.1.4.4. Open MPI 版本 3.1.3
- Date:
2018年10月
修复了非阻塞发送/接收路径中
MPI_THREAD_MULTIPLE支持的竞态条件问题。修复
SIGCHLD转发中的错误处理。为
CHARACTER和LOGICALFortran数据类型添加对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启动时出现的挂起问题。
3.1.4.5. Open MPI 版本 3.1.2
- Date:
2018年8月
在“vader”BTL(共享内存通信)中发现了一个微妙的竞态条件错误,在极少数情况下可能导致MPI进程崩溃或错误分类(或实际上丢弃)通过共享内存发送的MPI消息。如果您在使用“ob1”PML与“vader”进行共享内存通信(请注意,vader是与ob1进行共享内存通信的默认设置),则需要升级到v3.1.2或更高版本来修复此问题。您也可以升级到以下版本来解决此问题:
Open MPI v2.1.5(预计2018年8月底发布)或更高版本的v2.1.x系列
Open MPI v3.0.1(2018年3月发布)或更高版本的v3.0.x系列
修复了Assorted Portals 4.0中的各种错误。
修复了MPI_BSEND中可能出现的数据损坏问题。
将vader btl的共享内存文件移动到Linux的/dev/shm目录下。
修复了
MPI_ISCATTER/MPI_ISCATTERVFortran接口与MPI_IN_PLACE的问题。将PMIx升级至v2.1.3版本。
大量单边错误的修复。
修复uGNI BTL中的竞态条件问题。
改进对TCP BTL大量接口的处理。
修复了大量UCX相关错误。
3.1.4.6. Open MPI 版本 3.1.1
- Date:
2018年6月
修复UCX PML在
MPI_Finalize()期间可能出现的挂起问题更新内部PMIx至v2.1.2rc2版本以修复前向版本兼容性问题。
新增MCA参数
osc_sm_backing_store,允许用户指定共享内存单边组件后备文件在文件系统中的存储位置。在Linux系统上默认值为/dev/shm。修复在非x86平台上使用关闭优化标志的构建时可能出现的挂起问题。
由于该组件中存在大量竞态条件,在使用
MPI_THREAD_MULTIPLE时禁用osc/pt2pt。修复Fortran绑定中mpi和mpi_f08的虚拟变量名称,使其符合MPI标准。这可能会破坏那些在Fortran中使用基于名称参数(使用我们内部名称而非MPI标准文档中名称)的应用程序。
改进Java检测机制,以正确处理不再提供javah包装器的新版Java版本。
修复RMA函数签名,以便在use-mpi-f08绑定中对所有缓冲区应用异步属性。
改进了查找UCX库的配置逻辑。
3.1.4.7. Open MPI 版本 3.1.0
- Date:
2018年5月
修复了OpenSHMEM中的多个错误。
正确处理Fortran版本
MPI_COMM_SPAWN_MULTIPLE中的array_of_commands参数。修复
MODE_SEQUENTIAL与sharedfp MPI-IO组件相关的bug。在使用较新版本的Java构建Java绑定时,使用
javac -h替代javah。修复在SLURM下对jostepid的错误处理,该问题可能导致PathScale/OmniPath网卡出现问题。
在配置中禁用POWER 7/BE模块。请注意POWER 7/BE仍不是受支持的平台,但不再自动禁用。更多信息请参阅https://github.com/open-mpi/ompi/issues/4349#issuecomment-374970982
mpirun的output-filename选项现在会在传递给其他节点之前被转换为绝对路径。为PML、OSC和COLL添加监控组件,以跟踪MPI应用程序的数据移动。有关监控框架的更多信息,请参阅ompi/mca/commmon/monitoring/HowTo_pml_monitoring.tex。
新增对通信器断言的支持:
mpi_assert_no_any_tag、mpi_assert_no_any_source、mpi_assert_exact_length以及mpi_assert_allow_overtaking。将PMIx更新至2.1.1版本。
将hwloc更新至1.11.7版本。
修复了许多单向行为问题。
使用Rabenseifner算法提升了Reduce和Allreduce操作的性能。
改进了mpirun
--help的输出显示,使其更易于管理。Portals4 MTL改进:修复了rendezvous协议和重试逻辑中的竞态条件。
UCX OSC: 初始实现。
UCX PML改进:增加多线程支持。
Yalla PML改进:修复不规则连续数据类型导致的错误。
Openib BTL: 默认禁用XRC支持。
TCP BTL:新增检测功能,可识别并忽略来自非MPI进程(如IDS探测)的连接,同时验证源与目标是否使用相同版本的Open MPI,修复了超大消息传输的问题。
ompi_info的可解析输出现在会对值中的双引号进行转义,并且还会对可能包含冒号的值添加引号。感谢Lev Givon的建议。
现在,CUDA感知支持可以处理节点内不支持CUDA IPC的GPU。早期版本会报错并中止。
添加一个mca参数ras_base_launch_orted_on_hn,允许通过单独的orte守护进程(而非mpirun进程)在运行mpirun的同一节点上启动MPI进程。在使用SLURM时,将此参数设为true可能很有用,因为它能提升与SLURM信号传播工具的互操作性。默认情况下该参数设为false,但在Cray XC系统上例外。
移除对LoadLeveler RAS的支持。
由于缺乏支持,从OpenIB BTL中移除了IB XRC支持。
为IBM s390平台新增功能。请注意,常规回归测试不会在s390上进行,该平台不被视为受支持平台。
移除对大端序PowerPC的支持。
移除对早于v13.1版本的XL编译器的支持。
移除对使用MacOS原子操作库的原子操作支持。