Hierarchical Local Storage: Exploiting Flexible User-Data Sharing Between MPI Tasks

Hierarchical Local Storage: Exploiting Flexible User-Data Sharing Between MPI Tasks
复制标题

分层本地存储:利用 MPI 任务之间灵活的用户数据共享

DOI:
--
复制
发表时间:
2012
期刊:
IEEE International Parallel and Distributed Processing Symposium
影响因子:
--
通讯作者:
Marc Pérache
Marc Pérache
中科院分区:
--
文献类型:
--
作者:
Marc Tchiboukdjian;Patrick Carribault;Marc Pérache

文献摘要

被引文献

相似文献

随着多核时代的到来,每个计算节点的核心数量增长速度快于内存数量的增长速度。这种不断减小的内存与核心比率有时甚至会阻止纯 MPI 应用程序从每个节点上可用的所有核心中受益。一种可能的解决方案是在应用程序内部添加共享内存编程模型(例如 Open MP),以在 Open MP 线程之间共享变量,否则这些变量将针对每个 MPI 任务进行重复。因此,采用混合可以改善整体内存消耗,但对于大型应用程序来说可能是一项乏味的任务。为了允许这种数据共享而不需要混合多个编程模型的开销,我们提出了一种称为分层本地存储(HLS)的 MPI 扩展,它允许应用程序开发人员在同一节点上的 MPI 任务之间共享公共变量。 HLS 被设计为一组指令,保留了代码的原始并行语义,并与 C、C++ 和 Fortran 语言以及 Open MP 编程模型兼容。这种新机制是在最先进的 MPI 1.3 兼容运行时(称为 MPC)内实现的。实验表明,HLS机制可以有效降低HPC应用的内存消耗。此外,通过减少现代多核共享缓存中的数据重复,HLS机制还可以提高内存密集型应用程序的性能。
With the advent of the multicore era, the number of cores per computational node is increasing faster than the amount of memory. This diminishing memory to core ratio sometimes even prevents pure MPI applications to benefit from all cores available on each node. A possible solution is to add a shared memory programming model like Open MP inside the application to share variables between Open MP threads that would otherwise be duplicated for each MPI task. Going to hybrid can thus improve the overall memory consumption, but may be a tedious task on large applications. To allow this data sharing without the overhead of mixing multiple programming models, we propose an MPI extension called Hierarchical Local Storage (HLS) that allows application developers to share common variables between MPI tasks on the same node. HLS is designed as a set of directives that preserve the original parallel semantics of the code and are compatible with C, C++ and Fortran languages and the Open MP programming model. This new mechanism is implemented inside a state-of-the-art MPI 1.3 compliant runtime called MPC. Experiments show that the HLS mechanism can effectively reduce memory consumption of HPC applications. Moreover, by reducing data duplication in the shared cache of modern multicores, the HLS mechanism can also improve performances of memory intensive applications.