3.1.6. Open MPI v2.x 系列

本文件按时间倒序列出了Open MPI v2.x系列的所有NEWS更新内容。

3.1.6.1. Open MPI v2.1.x 系列

3.1.6.1.1. Open MPI 版本 2.1.5

Date:

2018年8月

  • 在“vader”BTL(共享内存通信)中发现了一个微妙的竞态条件错误,在极少数情况下可能导致MPI进程崩溃或错误分类(或实际上丢弃)通过共享内存发送的MPI消息。如果您在使用“ob1”PML与“vader”进行共享内存通信(请注意,vader是与ob1进行共享内存通信的默认设置),则需要升级到v2.1.5以修复此问题。您也可以升级到以下版本来解决此问题:

    • Open MPI v3.0.1(2018年3月发布)或更高版本的v3.0.x系列

    • Open MPI v3.1.2(预计2018年8月底发布)或更高版本

  • 修复了当UCX库不在链接器默认搜索路径中时的链接问题。

3.1.6.1.2. Open MPI 版本 2.1.4

Date:

2018年8月

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

  • 修复了在使用"rdma"组件时基于请求的单边MPI操作的bug。

  • 修复了TCP BTL中大型数据结构在某些环境下导致的问题。感谢@lgarithm报告此问题。

  • 针对Cygwin构建的小幅修复。

  • 针对openib BTL的小幅修复: 1. 支持QLogic RoCE HCA 2. 支持Boradcom Cumulus RoCE HCA 3. 启用对HDR链路速度的支持

  • 修复了在MPI_FINALIZE期间,如果从MPI_COMM_SELF销毁过程中的属性析构函数调用MPI_FINALIZED时出现的挂起问题。感谢@AndrewGaspar报告此问题。

  • Java修复:

    • 现代化Java框架检测,特别是在OS X/MacOS系统上。 感谢Bryce Glover报告问题并提交修复方案。

    • 优先使用“javac -h”而非“javah”以支持更新的Java框架。

  • Fortran修复:

    • 为Fortran绑定使用符合规范的虚拟参数名称。感谢Themos Tsikas报告并提交修复。

    • 尽可能在"TKR"风格的"mpi"模块中构建MPI_SIZEOF()接口。感谢Themos Tsikas报告此问题。

    • 修复了MPI_COMM_SPAWN_MULTIPLE的Fortran绑定中argv数组的处理问题(及其相关手册页)。

    • 在配置中增强NAG Fortran编译器的支持稳定性。

  • 当使用MPI_THREAD_MULTIPLE时,禁用"pt2pt"单边MPI组件。该组件在MPI_THREAD_MULTIPLE场景下完全不安全,且不会在v2.1.x系列中修复。

  • 如果"external" hwloc组件尝试使用hwloc v2.x.y安装,使其优雅地失败。Open MPI v2.1.x系列将不支持hwloc v2.x.y版本。

  • 修复“vader”共享内存对大于2GB消息的支持。感谢Heiko Bauke提交的错误报告。

  • 修复了外部PMI目录检测的配置问题。感谢Davide Vanzo的报告。

3.1.6.1.3. Open MPI 版本 2.1.3

Date:

2018年3月

  • 将内部PMIx版本更新至1.2.5。

  • 修复了使用param选项时ompi_info报告的问题。感谢Alexander Pozdneev的报告。

  • 修正 Fortran mpi_f08 模块中的 PMPI_Aint_{add|diff} 为函数(而非子例程)。

  • 修复了在使用具有大范围的MPI数据类型结合MPI_TYPE_CREATE_SUBARRAY进行MPI I/O操作时出现的问题。感谢Christopher Brady的报告。

  • 修复了使用MPI_FILE_OPEN打开多个文件时的问题。感谢William Dawson的报告。

  • 修复了调试器无法附加到正在运行的作业的问题。感谢Dirk Schubert的报告。

  • 修复了在使用madvise和OpenIB BTL时出现的问题。感谢Timo Bingmann的报告。

  • 修复了Vader BTL中导致IMB在某些情况下失败的问题。感谢Nicolas Morey-Chaisemartin的报告。

  • 修复了导致Open MPI无法在Cygwin环境下运行的问题。感谢Marco Atzeri的报告。

  • 在某些情况下,减少由USNIC BTL发出的冗余信息。感谢Peter Forai的报告。

  • 修复了SIGKILL信号误导向的问题。感谢Michael Fern的报告。

  • 对于小内存分配,将posix_memalign替换为malloc。感谢Ben Menaude的报告。

  • 修复了Open MPI在文件描述符大于32767时的带外TCP网络问题。感谢Wojtek Wasko的报告和修复。

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

3.1.6.1.4. Open MPI 版本 2.1.2

Date:

2017年9月

  • 将内部PMIx版本更新至1.2.3。

  • 修复了使用NAG Fortran编译器构建Open MPI以及使用编译器封装器时的一些问题。感谢Neil Carlson的报告。

  • 修复了SM BTL中的一个编译问题。感谢Paul Hargrove的报告。

  • 修复了在使用零长度消息时MPI_IALLTOALLW的问题。感谢Dahai Guo的报告。

  • 修复了SHMEM_G的C11泛型类型接口问题。感谢Nick Park的报告。

  • 在构建支持Lustre的Open MPI时,改用lustreapi.h头文件。

  • 修复了OB1 PML中导致与OSU集合测试挂起的问题。

  • 修复了MPI_WIN_FLUSH_LOCAL的一个进度问题。感谢Joseph Schuchart的报告。

  • 修复了近期版本PBSPro需要libcrypto的问题。感谢Petr Hanousek的报告。

  • 修复了在使用MPI_ANY_SOURCE与MPI_SENDRECV时出现的问题。

  • 修复了一个阻止信号传播到ORTE守护进程的问题。

  • 确保信号能够从ORTE守护进程转发到由这些守护进程创建的所有进程组中的进程。感谢Ted Sussman的报告。

  • 修复了在调试器下启动作业的问题。感谢Greg Lee的报告。

  • 修复了在使用具有关联拓扑的通信器时,Open MPI原生I/O MPI_FILE_OPEN的问题。感谢Wei-keng Liao的报告。

  • 修复了在使用MPI_ACCUMULATE与派生数据类型时出现的问题。

  • 修复了Fortran绑定中导致用户自定义归约操作编译错误的问题。感谢Nathan Weeks的报告。

  • 修复在使用NFS文件系统时进行大容量写入/读取时的ROMIO问题。

  • 修复Fortran中MPI_ARGV_NULL和MPI_ARGVS_NULL的定义。

  • 在Cray XC系统上启用SLURM分配的头节点。

  • 修复了使用UCX PML时同步发送的问题。

  • 使用默认套接字缓冲区大小以提升TCP BTL性能。

  • 添加一个名为ras_base_launch_orted_on_hn的mca参数,允许通过单独的orte守护进程(而非mpirun进程)在运行mpirun的同一节点上启动MPI进程。在使用SLURM时建议将此参数设为true,可提升与SLURM信号传播工具的互操作性。默认值为false(Cray XC系统除外)。

  • 修复当LSF安装在默认搜索路径时--without-lsf的问题。

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

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

  • 由于维护者流失,从OpenIB BTL中移除了IB XRC支持。

3.1.6.1.5. Open MPI 版本 2.1.1

Date:

2017年4月

  • 修复了Open MPI中一个fifo数据结构导致make check测试挂起的问题。感谢Nicolas Morey-Chaisemartin的报告。

  • 在mpif.h中添加缺失的MPI_AINT_ADD/MPI_AINT_DIFF函数定义。感谢Aboorva Devarajan的报告。

  • 修复当rank参数无效时MPI_WIN_LOCK返回的错误。感谢Jeff Hammond报告并修复此问题。

  • 修复了在调试器下启动mpirun/orterun时的问题。感谢Gregory Leff的报告。

  • 添加配置选项以禁用vader BTL对CMA的使用。感谢Sascha Hunold的报告。

  • 添加对MPI_DOUBLE_COMPLEX数据类型的配置检查。感谢Alexander Klein的报告。

  • 修复由MPI_WIN_ALLOCATE_SHARED分配的内存,使其64位对齐。感谢Joseph Schuchart的报告。

  • 更新MPI_WTICK手册页,以反映其分辨率可能高于10e-6。感谢Mark Dixon的报告

  • 在mpi.h头文件中添加缺失的MPI_T_PVAR_SESSION_NULL定义。感谢Omri Mor的贡献。

  • 增强Open MPI规范文件,以便在非默认安装位置时将模块文件安装到/opt目录。感谢Kevin Buckley报告问题并提供修复方案。

  • 修复了静态链接时PMI符号冲突的问题。感谢Kilian Cavalotti的报告。

注意

已知问题(将在v2.1.2版本中解决):

3.1.6.1.6. Open MPI 版本 2.1.0

Date:

2017年3月

重要

主要新特性:

  • Open MPI v2.1.0版本的主要更新是升级至PMIx v1.2.1。当使用PMIx时(例如通过基于mpirun的启动方式,或通过支持最新版本流行资源管理器的直接启动方式),大规模MPI/OpenSHMEM进程的启动时间可扩展性得到提升,且运行时内存占用显著降低。

  • 更新OpenSHMEM API以符合v1.3标准。

  • usnic BTL现在支持MPI_THREAD_MULTIPLE。

  • 针对MPI_THREAD_MULTIPLE的通用/整体性能改进。

  • 在配置底部添加一条摘要信息,显示由Open MPI指定和/或发现的许多配置选项。

注意

移除了旧版支持:

  • ptmalloc2钩子已从Open MPI代码库中移除。这一变更对用户基本无感,之所以在此提及,只因Open MPI开发者社区对此欢欣鼓舞。

  • 新增MCA参数:

    • iof_base_redirect_app_stderr_to_stdout: 顾名思义,该参数将MPI/OpenSHMEM应用程序的标准错误输出合并到其标准输出流中。

    • opal_event_include: 允许用户指定底层事件引擎使用哪种文件描述符选择机制。

    • opal_stacktrace_output: 指定当MPI/OpenSHMEM进程崩溃时堆栈跟踪信息应发送的位置(none不输出,stdout标准输出,stderr标准错误,file:filename输出到文件)。

    • orte_timeout_for_stack_trace: 等待堆栈跟踪报告的超时秒数(或设置为<=0表示无限等待)。

    • mtl_ofi_control_prog_type/mtl_ofi_data_prog_type: 指定用于控制和数据的libfabric进度模型。

  • 修复了MPI_WTICK回归问题,在启用了处理器频率调节的系统上,报告的时间可能不准确。

  • 修复了在某些BTL网络传输(如openib、sm和vader)上降低大消息内存最大消息带宽的回归问题。

  • 修复了共享文件指针MPI IO文件锁定方案中的名称冲突问题。感谢Nicolas Joly报告此问题。

  • 修复在使用Portals 4单边组件时,MPI_PUT和MPI_RACCUMULATE操作中数据类型范围/偏移量的错误。

  • 为Portals 4单边通信组件添加对非连续数据类型的支持。

  • 针对UCX PML的多项更新。

  • 以下手册页面的更新:

    • mpirun(1)

    • MPI_COMM_CONNECT(3)

    • MPI_WIN_GET_NAME(3)。感谢Nicolas Joly报告这个拼写错误。

    • MPI_INFO_GET_[NKEYS|NTHKEY](3)。感谢Nicolas Joly报告这个拼写错误。

  • 修复了在使用MPI_THREAD_MULTIPLE时TCP BTL中的一个问题。感谢Evgueni Petrov的报告。

  • 修复了romio314模块中的external32表示问题。请注意,目前ompio模块尚未正确支持external32表示。感谢Thomas Gastine提请我们注意此问题。

  • 添加关于如何禁用未找到高速MPI传输时警告消息的说明。感谢Susan Schwarz报告此问题。

  • 确保在使用rsh/ssh启动器发送SIGINT信号时,不会在启动树中遗留子节点进程。

  • 修复显示已弃用MCA参数名称时的帮助信息,以展示正确的(即已弃用的)名称。

  • 启用对openib BTL的支持,以使用多个不同的InfiniBand子网。

  • 修复了MPI_AINT_DIFF中的一个次要错误。

  • 修复MPI_IN_PLACE处理中的错误:

    • MPI_ALLGATHER[V]

    • MPI_[I][GATHER|SCATTER][V]

    • MPI_IREDUCE[_SCATTER]

    • 感谢所有帮助诊断这些问题的用户。

  • 允许qrsh进行树形派生(如果后端系统支持该功能)。

  • 修复MPI_T_PVAR_GET_INDEX以返回正确的索引。

  • 在OMPIO组件中正确设置追加模式下的共享文件指针位置。

  • 在shmem.h中添加一些已弃用的名称,以保持与旧代码的向后兼容性。

  • 修复对MPI_MODE_NOCHECK的支持。

  • 修复了PowerPC原子操作支持中的一个回归问题。感谢Orion Poplawski报告此问题。

  • 修复了在x86_64/AMD64平台上使用激进优化编译器时的汇编代码问题。

  • 修复了另一个配置错误处理自定义CFLAGS的地方。感谢Phil Tooley (@Telemin)报告此问题。

  • 更好地处理带有外部安装hwloc的构建。

  • 修复了MPI_PUT和MPI_WIN_LOCK_ALL导致的挂起问题。

  • 修复了在非连续数据类型上使用MPI_GET以及MPI_LOCK/MPI_UNLOCK时出现的bug。

  • 修复了在栅栏操作后使用POST/START/COMPLETE/WAIT时出现的bug。

  • 通过清理几处使用"=="替换为"test"的方式,修复了配置的可移植性问题。感谢Kevin Buckley指出该问题。

  • 修复了在使用darrays与lib和darray数据类型的extent时的bug。

  • 更新以使Open MPI二进制构建更加位对位可重现。感谢Alastair McKinstry的建议。

  • 修复与持久请求处理相关的问题。

  • 确保shmemx.h是一个独立的OpenSHMEM头文件。感谢Nick Park (@nspark)的报告。

  • 确保在发送SIGKILL信号前总是先发送SIGTERM信号。感谢Noel Rycroft的报告。

  • 为openib BTL添加了ConnectX-5和Chelsio T6设备的默认设置。

  • OpenSHMEM不再支持MXM低于v2.0版本。

  • 修复了ompi_osc_sm_free中的内存泄漏问题。感谢Joseph Schuchart的报告。

  • "self" BTL 现在使用更少的内存。

  • 在使用XPMEM时,vader BTL现在在内存使用方面更加高效。

  • 移除了--enable-openib-failover配置选项。这不被视为向后不兼容的变更,因为该选项已过时且早已失效。

  • 如果设置了 opal_hwloc_base_hwthreads_as_cpus MCA 参数,则允许在 Cray aprun 下启动的作业使用超线程。

  • 增加对32位和浮点Cray Aries原子操作的支持。

  • 如果窗口上设置了"ompi_single_intrinsic"信息键或设置了"acc_single_intrinsic" MCA参数,则为MPI_ACCUMULATE、MPI_FETCH_AND_OP和MPI_COMPARE_AND_SWAP添加网络原子内存操作支持。

  • 如果使用了MPI_THREAD_MULTIPLE,则自动取消openib BTL中对RDMA CM的支持。

  • 使配置在自动检测Linux CMA支持方面更加智能/优化。

  • 提升MPI_COMM_SPLIT_TYPE的可扩展性。

  • 修复了MPI C++绑定中C99与C++头文件混用的问题。感谢Alastair McKinstry提交的错误报告。

  • 新增对ARM v8架构的支持。

  • 多个MCA参数现在直接支持MPI_T枚举器语义(即它们接受一组有限的值——例如,接受布尔值的MCA参数)。

  • 为Open MPI的供应商版本添加了--with-libmpi-name=配置选项。详情请参阅README文件。

  • 修复了Open MPI内部内存检查器的一个问题。感谢Yvan Fournier的报告。

  • 修复了MPI_WAIT的多线程问题。感谢Pascal Deveze的报告。

注意

已知问题(将在v2.1.1版本中解决):

3.1.6.2. Open MPI v2.0.x 系列

3.1.6.2.1. Open MPI 版本 2.0.4

Date:

2017年11月

  • 修复了内置PMIx中函数可见性的问题。感谢Siegmar Gross报告此问题。

  • 添加配置检查,防止尝试使用外部hwloc 2.0或更新版本构建此版本的Open MPI。

  • 新增为OFI MTL指定分层提供程序的能力。

  • 修复了Open MPI内存管理代码中可能导致消息数据损坏的正确性问题。感谢Valentin Petrov的报告。

  • 修复了在使用较新版本PBS Pro时遇到的问题。感谢Petr Hanousek的报告。

  • 修复了使用vader BTL时MPI_GET的问题。感谢Dahai Guo的报告。

  • 修复了在MPI_SENDRECV_REPLACE中使用MPI_ANY_SOURCE时的问题。感谢Dahai Guo的报告。

  • 修复了在使用带有笛卡尔拓扑结构的通信器调用MPI_FILE_OPEN时出现的问题。感谢Wei-keng Liao的报告。

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

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

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

3.1.6.2.2. Open MPI 版本 2.0.3

Date:

2017年6月

  • 修复了当存在零大小消息时MPI_IALLTOALLW的问题。感谢@mathbird的报告。

  • 在mpi_f08模块中添加缺失的MPI_USER_FUNCTION定义。 感谢Nathan Weeks报告此问题。

  • 修复了当提供负排名时MPI_WIN_LOCK不返回错误代码的问题。感谢Jeff Hammond的报告和提供的修复方案。

  • 修复了可能导致挂起的make check问题。感谢Nicolas Morey-Chaisemartin的报告。

  • 解决了PMI-1和PMI-2 PMIx组件之间的符号冲突问题。感谢Kilian Cavalotti报告此问题。

  • 确保从MPI_WIN_ALLOCATE_SHARED返回的内存分配是64字节对齐的。感谢Joseph Schuchart报告此问题。

  • 如果可用,在Fortran绑定中使用DOUBLE_COMPLEX。感谢Alexander Klein报告此问题。

  • 在Open MPI的mpi.h头文件中添加缺失的MPI_T_PVAR_SESSION_NULL定义。感谢Omri Mor的报告和修复。

  • 修复了在从独立作业访问文件时使用MPI共享文件指针的问题。感谢Nicolas Joly报告此问题。

  • 优化了使用MPI_IN_PLACE的零大小MPI_IALLTOALL{V,W}操作。感谢Lisandro Dalcín的报告。

  • 修复了在使用NFS文件系统进行大文件传输时出现的ROMIO缓冲区溢出问题。

  • 修复了MPI_ARGV[S]_NULL的类型问题,该问题导致其在mpi_f08模块中无法与MPI_COMM_SPAWN[_MULTIPLE]正常配合使用。

  • 确保在需要动态库支持的平台上(如RHEL 7.3及更高版本)为包装器编译器添加正确的链接器标志。

  • 通过在10Gbps及更高速率的TCP网络上使用操作系统默认的缓冲区大小设置,以获得更好的性能。

  • 修复了在使用DARRAY数据类型时MPI_[R][GET_]ACCUMULATE的一个错误。

  • 修复了--with-lustre配置命令行参数的处理问题。感谢Prentice Bisbal和Tim Mattox报告此问题。

  • 在mpif.h中添加了MPI_AINT_ADD和MPI_AINT_DIFF声明。感谢Aboorva Devarajan (@AboorvaDevarajan)提交的错误报告。

  • 修复了当Open MPI以MPI_THREAD_MULTIPLE支持初始化时TCP BTL中出现的问题。感谢Evgueni Petro分析和报告此问题。

  • 修复yalla PML以正确处理下溢错误,并修复了阻塞非连续发送导致的内存泄漏问题。

  • 恢复了在官方发行版tarballs上运行autogen.pl的能力(虽然仍不建议大多数用户这样做!)。

  • 通过始终使用clock_gettime(3)或gettimeofday(3)来修复某些系统上MPI_WTIME的精度问题。

  • 修复了MPI_WTICK在可获得更高时间分辨率时未能返回的问题。感谢Mark Dixon报告此问题。

  • 恢复SGE功能。感谢Kevin Buckley的初步报告。

  • 修复外部hwloc编译问题,并扩展支持以允许使用早至v1.5.0版本的外部hwloc安装。感谢Orion Poplawski提出该问题。

  • 将最新的Mellanox Connect-X和Chelsio T-6适配器部件ID添加到openib默认值列表中。

  • 更好地清理会话目录(例如,在/tmp中)。

  • 更新帮助信息,说明如何屏蔽Open MPI未检测到高性能网络的警告。感谢Susan Schwarz报告此问题。

  • 修复了在配置Open MPI时自定义CFLAGS处理不当的问题。感谢Phil Tooley的报告。

  • 修复了一些小的内存泄漏问题并移除了一些未使用的变量。感谢 Joshua Gerrard 的报告。

  • 修复MPI_ALLGATHERV中与MPI_IN_PLACE相关的bug。

注意

已知问题(将在v2.0.4版本中解决):

3.1.6.2.3. Open MPI 版本 2.0.2

Date:

2017年1月26日

  • 修复了在使用MPI_MODE_APPEND和Open MPI原生MPI-IO实现时MPI_FILE_WRITE_SHARED的问题。感谢Nicolas Joly的报告。

  • 修正了MPI_WIN_GET_NAME手册页中的一处拼写错误。感谢Nicolas Joly的报告。

  • 修复了ORTE会话目录设置中的竞态条件。感谢@tbj900报告此问题。

  • 修复了由于Open MPI捕获munmap调用的方法导致的死锁问题。感谢Paul Hargrove报告并协助分析此问题。

  • 修复了PPC原子操作的一个问题,该问题导致除非启用了内置原子配置选项,否则make check会失败。感谢Orion Poplawski的报告。

  • 修复了使用x86_64 cpuid指令导致的问题,该问题在Open MPI配置了-O3优化时会出现段错误。感谢Mark Santcroos报告此问题。

  • 修复了在PPC平台上使用内置原子配置选项构建32位应用程序时的问题。感谢Paul Hargrove的报告。

  • 修复了针对外部hwloc安装构建Open MPI时的问题。感谢Orion Poplawski报告此问题。

  • 移除消息队列版本字符串中对DATE的使用,以确保二进制文件的位级可重现性。感谢Alastair McKinstry协助修复此问题。

  • 修复了一个MPI进程在未调用MPI_FINALIZE或MPI_ABORT情况下提前退出可能导致作业挂起的问题。感谢Christof Koehler的报告。

  • 修复了从mpirun向作业中的MPI进程转发SIGTERM信号的问题。感谢Noel Rycroft报告此问题

  • 修复了使用Valgrind发现的MPI_WIN_FREE中的一些内存泄漏问题。感谢Joseph Schuchart的报告。

  • 修复了在使用带有空拓扑图的通信器时MPI_NEIGHOR_ALLTOALL的问题。感谢Daniel Ibanez的报告。

  • 修复了PMIx组件帮助文件中的一个拼写错误。感谢@njoly报告此问题。

  • 修复了在使用Open MPI内部内存检查器时Valgrind误报的问题。感谢Yvan Fournier的报告。

  • 修复了MPI_FILE_DELETE在删除不存在的文件时返回MPI_SUCCESS的问题。感谢Wei-keng Liao的报告。

  • 修复了MPI_IMPROBE可能导致后续MPI点对点或集体调用挂起的问题。感谢Chris Pattison的报告。

  • 修复了在powerpc架构上配置Open MPI时启用--enable-mpi-cxx选项导致的问题。感谢Alastair McKinstry的报告。

  • 修复了使用MPI_IALLTOALL时配合MPI_IN_PLACE参数的问题。感谢Chris Ward的报告。

  • 修复了使用MPI_RACCUMULATE与Portals4传输时的问题。感谢@PDeveze的报告。

  • 修复了由于PMIx Slurm组件导致的静态链接和符号重复问题。感谢Limin Gu的报告。

  • 修复了使用MPI动态内存窗口时的问题。感谢Christoph Niethammer的报告。

  • 修复了Open MPI的pkgconfig文件问题。感谢Alastair McKinstry的报告。

  • 修复了当MPI_IREDUCE的发送缓冲区和接收缓冲区参数使用相同缓冲区时的问题。感谢Valentin Petrov的报告。

  • 修复了PowerPC上的原子操作问题。感谢Paul Hargrove的报告。

注意

已知问题(将在v2.0.3版本中解决):

3.1.6.2.4. Open MPI 版本 2.0.1

Date:

2016年9月2日

  • 所有传输方式的短消息延迟和消息速率性能均有所提升。

  • 修复了在使用支持RDMA的网络时的共享内存性能问题。感谢Tetsuya Mishima和Christoph Niethammer的报告。

  • 修复yalla (MXM) PML中的带宽性能下降问题。感谢Andreas Kempf报告该问题。

  • 修复在非Mellanox MXM网络上运行OpenSHMEM时的崩溃问题。感谢Debendra Das报告此问题。

  • 修复了在重复调用MPI_FILE_SET_VIEW并使用预定义数据类型后出现的崩溃问题。感谢Eric Chamberland和Matthew Knepley报告并协助解决此问题。

  • 修复了标准输入传播到MPI进程的问题。感谢张景超报告此问题。

  • 通过将PMIx内部组件更新至v1.1.5版本,修复了各种运行时和可移植性问题。

  • 修复因/proc/mounts中条目过大导致的Intel MIC平台进程启动失败问题。

  • 修复了在指定mpirun/oshurun可执行文件时使用相对路径的问题。感谢David Schneider的报告。

  • 在基于门户的网络运行时进行了多项改进。

  • 修复基于GNI网络中的线程竞争条件问题。

  • 修复了MPI_FILE_CLOSE和MPI_FILE_SET_SIZE的问题。感谢Cihan Altinay的报告。

  • 移除Open MPI内部对rand(3)的所有使用,以避免干扰应用程序对其的调用。感谢Matias Cabral和Noel Rycroft的报告。

  • 修复了MPI_COMM_SPAWN中的崩溃问题。

  • 修复了MPI_UNWEIGHTED和MPI_WEIGHTS_EMPTY的类型问题。感谢Lisandro Dalcín的报告。

  • 正确报告MPI_INTEGER16的名称。

  • 向Fortran绑定添加一些缺失的MPI常量。

  • 修复了在配置Open MPI时启用--enable-timing选项导致的编译错误。

  • 正确设置libompitrace.so的共享库版本。感谢Alastair McKinstry的报告。

  • 修复了MPI_RPUT、MPI_RGET、MPI_RACCUMULATE和MPI_RGET_ACCUMULATE Fortran绑定中的错误。感谢Alfio Lazzaro和Joost VandeVondele发现并追踪此问题。

  • 修复了在非阻塞集合操作中使用派生数据类型的问题。感谢Yuki Matsumoto的报告。

  • 修复了使用CMake时OpenSHMEM头文件的问题。感谢Paul Kapinos报告此问题。

  • 修复了在集合操作中使用非零下限数据类型的问题。感谢Hristo Iliev的报告。

  • 修复了MPI_GROUP_INTERSECTION中的内存分配问题。感谢Lisandro Dalcín的报告。

  • 修复了MPI_ALLGATHER在非双进程通信器上的问题。感谢David Love的报告。

  • 针对与深奥的MPI数据类型一起使用时,集体操作的各种修复。

  • 修复了处理DARRAY和HINDEXED_BLOCK数据类型的边界情况。

  • 修复了OpenBSD文件系统类型检查的问题。感谢Paul Hargrove的报告。

  • 修复了Open MPI内部函数中的一些调试输入问题。感谢Durga Choudhury的报告。

  • 修复配置帮助信息中的一处拼写错误。感谢Paul Hargrove的报告。

  • 在MPI_[I]ALLTOALL[V|W]和MPI_[I]EXSCAN中正确支持MPI_IN_PLACE。

  • 修复SPARC平台上的对齐问题。

注意

已知问题(将在v2.0.2版本中解决):

3.1.6.2.5. Open MPI 版本 2.0.0

Date:

2016年7月12日

注意

Open MPI现已完全兼容MPI-3.1标准

重要

主要新特性:

  • 对MPI RMA进行了多项增强。Open MPI现在将MPI RMA操作映射到支持此功能的网络上的原生RMA操作。

  • 大幅改进了对MPI_THREAD_MULTIPLE的支持(当配置为--enable-mpi-thread-multiple时)。

  • 针对大规模作业的内存占用优化增强。新增了一个名为"mpi_add_procs_cutoff"的MCA参数,可用于设置启用此功能的阈值。

  • 彻底改进了在使用绕过操作系统的网络传输时的内存注册钩子支持。

  • 显著的OMPIO性能改进和大量错误修复。

  • 添加对PMIx(面向百亿亿级计算的进程管理接口)的支持。此版本内部集成了PMIx 1.1.2版本。

  • 在Open MPI I/O中添加对PLFS文件系统的支持。

  • 增加对UCX传输的支持。

  • 简化Cray XC系统的构建流程。新增对原生SLURM的支持。

  • 添加一个--tune mpirun命令行选项,用于简化设置多个环境变量和MCA参数。

  • 新增一个MCA参数"orte_default_dash_host",作为现有"orte_default_hostfile"MCA参数的对应选项。

  • 在mpirun的--host选项中添加指定所需槽位数量的功能。

注意

已知问题(将在v2.0.1版本中解决):

  • 查看计划在v2.0.1版本中修复的问题列表: https://github.com/open-mpi/ompi/milestone/16?closed=1,以及 https://github.com/open-mpi/ompi-release/milestone/16?closed=1 (请注意,"ompi-release" Github仓库将在未来某个时间点合并/整合到"ompi" Github仓库中)

  • ompi-release#986: 修复fcoll/static模式下大型操作的数据大小计数器问题

  • ompi-release#987: 修复OpenMPI在Lustre上的性能问题

  • ompi-release#1013: 修复btl/openib默认设置中潜在的不一致问题

  • ompi-release#1014: 不要在集合操作中返回MPI_ERR_PENDING错误

  • ompi-release#1056: 从oshmem中移除废弃的profile代码

  • ompi-release#1081: 修复MPI_IN_PLACE对IALLTOALL{V|W}的检查

  • ompi-release#1081: 修复MPI_IALLTOALLW中的内存检查器

  • ompi-release#1081: 在MPI_(I)ALLTOALLW和MPI_(I)EXSCAN中支持MPI_IN_PLACE

  • ompi-release#1107: 允许未来PMIx支持资源管理器生成限制

  • ompi-release#1108: 修复稀疏组进程引用计数问题

  • ompi-release#1109: 如果指定为超额订阅,则禁用绑定

  • ompi-release#1122: 允许为空数据类型使用NULL数组

  • ompi-release#1123: 修复有符号与无符号的编译器警告

  • ompi-release#1123: 统一代码库中的最大主机名长度

  • ompi-release#1127: 修复MPI_Compare_and_swap

  • ompi-release#1127: 修复MPI_Win_lock与MPI_Win_fence一起使用时的问题

  • ompi-release#1132: 修复--enable-mca-no-build帮助信息中的拼写错误

  • ompi-release#1154: 确保成对集合算法正确取消自身资格

  • ompi-release#1165: 修复调试/详细消息输出中的拼写错误

  • ompi-release#1178: 修复OpenBSD 5.7上的ROMIO文件系统检查

  • ompi-release#1197: 修复Fortran pthread配置检查

  • ompi-release#1205: 允许使用外部PMIx 1.1.4和2.0版本

  • ompi-release#1215: 修复配置以支持NAG Fortran编译器

  • ompi-release#1220: 修复MPI_HINDEXED_BLOCK的组合器参数

  • ompi-release#1225: 修复MPI_DARRAY的组合器参数

  • ompi-release#1226: 禁用旧版内存钩子以兼容较新的gcc版本

  • ompi-release#1231: 修复针对某些XLC平台的新"patcher"支持

  • ompi-release#1244: 修复Java错误处理

  • ompi-release#1250: 确保TCP不被选用于RDMA操作

  • ompi-release#1252: 修复集合操作选择中的详细输出

  • ompi-release#1253: 为用户自定义的MPI_Op设置默认名称

  • ompi-release#1254: 在某些非阻塞集合操作中添加count==0检查

  • ompi-release#1258: 修复当使用外部pmix/hwloc/libevent时make distclean的问题

  • ompi-release#1260: 清理/统一 mca/coll/base 内存管理

  • ompi-release#1261: 移除静态构建中的“patcher”警告信息

  • ompi-release#1263: 修复零大小读/写操作的IO MPI_Request

  • ompi-release#1264: 为SLURM操作添加阻塞式栅栏

  • 在mpirun无法自动确定可用插槽数量的环境中(例如,当使用未指定"slots"的主机文件时,或使用--host但未在主机名后添加":N"后缀时),mpirun现在要求使用"-np N"来指定要启动的MPI进程数量。

  • MPI C++绑定(已在MPI标准v3.0中移除)默认不再构建,并将在未来某个Open MPI版本中彻底移除。使用--enable-mpi-cxx-bindings配置选项可构建已弃用/移除的MPI C++绑定。

  • ompi_info现在会显示所有组件,即使它们没有MCA参数。美化输出现在会用虚线分隔不同组。

  • OMPIO现已成为并行I/O的默认实现方案,但在Lustre并行文件系统上除外(此时ROMIO仍为默认选项)。可通过mpirun的"--mca io ompi|romio"命令行参数来控制OMPI与ROMIO的默认选择。

  • 根据Open MPI的版本编号规则(参见README),将主版本号升级到2表示此版本与之前版本的Open MPI不兼容ABI。您需要重新编译MPI和OpenSHMEM应用程序才能与此版本的Open MPI兼容。

  • 由于维护者流失,移除了检查点/重启功能代码。:-(

  • 修改了使用PSM和PSM2库时处理某些信号的行为。此前,PSM和PSM2库会捕获特定信号以生成回溯跟踪。经发现该机制会与Open MPI自身的错误报告机制产生冲突。如果未预先设置,Open MPI现在会设置IPATH_NO_BACKTRACE和HFI_NO_BACKTRACE环境变量来禁用PSM/PSM2对这些信号的处理。

注意

移除了旧版支持:

  • 移除了对OS X Leopard系统的支持。

  • 移除了对Cray XT系统的支持。

  • 移除了VampirTrace。

  • 移除了对Myrinet/MX的支持。

  • 移除了旧版集体模块:ML。

  • 移除了对Alpha处理器的支持。

  • 移除了--enable-mpi-profiling配置选项。

  • 更新了第三方软件的内置/嵌入式副本:

    • 将内部ROMIO副本更新为MPICH 3.1.4中发布的版本。

    • 将内部libevent库更新至v2.0.22版本。

    • 将内部hwloc副本更新至v1.11.2版本。

  • 值得注意的新MCA参数:

    • opal_progress_lp_call_ration: 控制在Open MPI主进度循环期间低优先级回调的触发频率。

    • opal_common_verbs_want_fork_support: 该参数用于替代btl_openib_want_fork_support参数。

  • 添加 --with-platform-patches-dir 配置选项。

  • 为将PMI库安装在非默认位置的环境添加--with-pmi-libdir配置选项。

  • 针对新版本libibverbs和OFED的各种配置相关兼容性更新。

  • 对orte-dvm进行了大量修复/改进。特别感谢Mark Santcroos的帮助。

  • 修复了ia32平台上计时器代码的问题。感谢Paul Hargrove报告此问题并提供补丁。

  • 修复了64位原子计数器使用中的一个问题。感谢Paul Hargrove的报告。

  • 修复了单例作业启动的问题。感谢Lisandro Dalcín的报告。

  • 修复了在MPI_COMM_SPLIT_TYPE中使用MPI_UNDEFINED的问题。感谢Lisandro Dalcín的报告。

  • 修复了PSM MTL中的一个编译器警告静默问题。感谢Adrian Reber报告此问题。

  • 正确检测处于活动状态的Intel TrueScale和OmniPath设备。感谢Durga Choudhury报告此问题。

  • 修复对Solaris Studio 12.5(测试版)编译器的检测和使用问题。感谢Paul Hargrove的报告和调试工作。

  • 修复各种小型内存泄漏问题。

  • 在创建空的MPI数据类型时允许使用NULL数组。

  • 在某些数据类型创建函数中,将alloca的使用替换为malloc。感谢Bogdan Sataric报告此问题。

  • 修复了在创建某些MPI数据类型时使用MPI_LB和MPI_UB的问题。感谢Gus Correa帮助解决此问题。

  • 针对GNU Libtool问题实施了一个临时解决方案。感谢Eric Schnetter的报告和修复。

  • 改进配置中的hcoll库检测。感谢David Shrader和Åke Sandgren报告此问题。

  • hcoll组件中的各种小错误修复。

  • ugni组件中的各种小错误修复。

  • 修复了OFED 3.12及更早版本中XRC检测的问题。感谢Paul Hargrove对此问题的分析。

  • 更新(非标准/实验性)Java MPI接口以支持MPI-3.1功能。

  • 修复了Java绑定中MCA参数的一个问题。感谢Takahiro Kawashima和Siegmar Gross报告此问题。

  • 修复了在Java绑定中使用持久请求时的问题。感谢Nate Chambers的报告。

  • 修复了在OX X 10.11系统上Java绑定的问题。感谢Alexander Daryin报告此问题。

  • 修复了Cray XC系统在大消息传输时的性能问题。感谢Jerome Vienne报告此问题。

  • 修复了MPI_WIN_LOCK_ALL的一个问题。感谢Thomas Jahns的报告。

  • 修复了多次向configure传递参数的问题。感谢QuesarVII的报告和提供的修复方案。

  • 在Cray CLE 5.2及更高版本上添加对ALPS资源分配系统的支持。感谢Mark Santcroos。

  • 对HACKING文件的修正。感谢Maximilien Levesque的贡献。

  • 修复用户提供的归约运算符函数的问题。感谢Rupert Nash报告此问题。

  • 修复了一个内部列表管理函数的问题。感谢Adrian Reber报告此问题。

  • 修复了MPI-RMA PSCW周期的一个问题。感谢Berk Hess报告此问题。

  • 修复了邻域集合操作中的一个问题。感谢Lisandro Dalcín的报告。

  • 修复了单进程通信器中MPI_IREDUCE_SCATTER_BLOCK的问题。感谢Lisandro Dalcín的报告。

  • 为MPI_COMM_SPLIT_TYPE添加(Open MPI特有的)额外类型变体。详情请参阅MPI_Comm_split_type(3)手册页。感谢Nick Andersen提供此功能增强。

  • 改进作业启动阶段文件描述符的关闭处理。感谢Piotr Lesnicki报告并提供此改进。

  • 修复了在使用Portals4时MPI_GET_ACCUMULATE和MPI_RGET_ACCUMULATE的问题。感谢Nicolas Chevalier的报告。

  • 在ROMIO中使用正确的头文件以匹配lstat函数原型。感谢William Throwe发现此问题并提供修复方案。

  • 为MPI_WIN_ALLOCATE添加缺失的Fortran绑定。感谢Christoph Niethammer的报告和修复。

  • 针对Intel 2016编译器的Fortran相关问题修复。感谢Fabrice Roy报告此问题。

  • 修复了一个Fortran链接问题。感谢Macro Atzeri发现并建议修复方案。

  • 修复了在Fortran绑定中使用BIND(C)处理逻辑参数时的问题。感谢Paul Romano的报告。

  • 修复了opal库中DL相关宏使用的问题。感谢Scott Atchley发现此问题。

  • 修复了解析mpirun命令行选项时包含冒号的问题。感谢Lev Given的报告。

  • 修复了Open MPI包配置文件中的一个问题。感谢Christoph Junghans的报告。

  • 修复了MPI_INTERCOMM_MERGE手册页中的一处拼写错误。感谢Harald Servat的报告和修正。

  • 根据MPI 3.1标准更新非阻塞发送的手册页。感谢Alexander Pozdneev的报告。

  • 修复了针对PVFS2编译时的问题。感谢Dave Love的报告。

  • 修复了MPI_NEIGHBOR_ALLTOALL{V,W}相关的问题。感谢Willem Vermin报告此问题。

  • 修复了Cygwin上的各种编译问题。感谢Marco Atzeri提供这些修复方案。

  • 修复子数组和darray数据类型调整大小的问题。感谢Keith Bennett和Dan Garmann的报告。

  • 修复了MPI_COMBINER_RESIZED的一个问题。感谢James Ramsey的报告。

  • 修复了一个hwloc绑定问题。感谢Ben Menadue的报告。

  • 修复了共享内存(sm)BTL的一个问题。感谢Peter Wind的报告。

  • 修复了异构支持的问题。感谢Siegmar Gross的报告。

  • 修复了memchecker的一个问题。感谢Clinton Simpson的报告。

  • 修复了拓扑函数中MPI_UNWEIGHTED的问题。感谢Jun Kudo的报告。

  • 修复了MCA参数基础文件系统类型的问题。感谢Siegmar Gross的报告。

  • 修复了一些Windows信息参数类型的问题。感谢Alastair McKinstry的报告。