Autotuning MPI Collectives using Performance Guidelines

Autotuning MPI Collectives using Performance Guidelines
复制标题

使用性能指南自动调整 MPI 集合

DOI:
--
复制
发表时间:
2018
期刊:
International Conference on High Performance Computing in Asia-Pacific Region
影响因子:
--
通讯作者:
Alexandra Carpen
Alexandra Carpen
中科院分区:
--
文献类型:
--
作者:
S. Hunold;Alexandra Carpen

文献摘要

被引文献

相似文献

MPI集体操作提供了一个标准化的接口,用于在一组进程中执行数据移动。集体通信操作的效率取决于实际算法、其实现和特定的通信问题(通信类型、消息大小和进程数)。许多MPI库为特定的集体操作提供了许多算法。选择有效算法的策略通常在MPI库中预定义(硬编码),但其中一些,如Open MPI,允许用户手动更改算法。为每种情况找到最佳算法是一个困难的问题,已经提出了几种方法来调整这些算法参数。我们使用一个正交的方法来调整MPI集体的参数,也就是说,而不是测试由MPI库提供的个别算法选择,我们比较一个特定的MPI集体操作的延迟的语义等效的功能,我们称之为模拟实现的延迟。模型实现的结构由自洽的性能指南定义。这种方法的优点是,无论MPI库是否允许用户在运行时选择特定的算法,都可以使用模型实现进行调优。我们在一个名为PGMPITuneLib的库中实现了这个概念,该库位于用户代码和实际MPI实现之间。这个库通过拦截MPI调用并将它们重定向到我们的模拟实现来选择MPI集合的最佳性能算法模式。实验结果表明,PGMPITuneLib可以显着减少MPI集体的延迟,同样重要的是,它可以帮助识别MPI库的调优潜力。
MPI collective operations provide a standardized interface for performing data movements within a group of processes. The efficiency of collective communication operations depends on the actual algorithm, its implementation, and the specific communication problem (type of communication, message size, and number of processes). Many MPI libraries provide numerous algorithms for specific collective operations. The strategy for selecting an efficient algorithm is often times predefined (hard-coded) in MPI libraries, but some of them, such as Open MPI, allow users to change the algorithm manually. Finding the best algorithm for each case is a hard problem, and several approaches to tune these algorithmic parameters have been proposed. We use an orthogonal approach to the parameter-tuning of MPI collectives, that is, instead of testing individual algorithmic choices provided by an MPI library, we compare the latency of a specific MPI collective operation to the latency of semantically equivalent functions, which we call the mock-up implementations. The structure of the mock-up implementations is defined by self-consistent performance guidelines. The advantage of this approach is that tuning using mock-up implementations is always possible, whether or not an MPI library allows users to select a specific algorithm at run-time. We implement this concept in a library called PGMPITuneLib, which is layered between the user code and the actual MPI implementation. This library selects the best-performing algorithmic pattern of an MPI collective by intercepting MPI calls and redirecting them to our mock-up implementations. Experimental results show that PGMPITuneLib can significantly reduce the latency of MPI collectives, and also equally important, that it can help identifying the tuning potential of MPI libraries.