In this paper, we propose a novel approach to optimize MPI communication overhead by precomputing the used message envelopes at the initialization of MPI. This allows for selective disabling of MPI message matching when no conflicts are present, which leads to an enhanced communication performance, while still ensuring correctness. We developed an LLVM compiler pass that automatically inserts the precomputations of message envelopes into an application and is capable of handling advanced C++ language features like polymorphism and exceptions. We demonstrate the effectiveness of our approach using a complex C++ N-body simulation code, achieving performance gains despite the runtime-overhead of precomputation. In our experiments, the runtime overhead of envelope precomputation is negligible compared to the potential performance gain ( \(\le 0.25\%\) of performance gain are lost to precompute overhead). Our code is available at https://github.com/tudasc/MPI-precompute .

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Compiler-Based Precalculation of MPI Message Envelopes

  • Tim Jammer,
  • Tim Heldmann,
  • Michael Blesel,
  • Michael Kuhn,
  • Christian Bischof

摘要

In this paper, we propose a novel approach to optimize MPI communication overhead by precomputing the used message envelopes at the initialization of MPI. This allows for selective disabling of MPI message matching when no conflicts are present, which leads to an enhanced communication performance, while still ensuring correctness. We developed an LLVM compiler pass that automatically inserts the precomputations of message envelopes into an application and is capable of handling advanced C++ language features like polymorphism and exceptions. We demonstrate the effectiveness of our approach using a complex C++ N-body simulation code, achieving performance gains despite the runtime-overhead of precomputation. In our experiments, the runtime overhead of envelope precomputation is negligible compared to the potential performance gain ( \(\le 0.25\%\) of performance gain are lost to precompute overhead). Our code is available at https://github.com/tudasc/MPI-precompute .