Download presentation
Presentation is loading. Please wait.
Published byTheresa Gilmore Modified over 9 years ago
1
Benjamin Perry and Martin Swany University of Delaware Computer Information Science
2
Background The problem The solution The results Conclusions and Future work
3
MPI programs communicate via MPI data types MPI data types are usually modeled after native data types Payloads are often arrays of MPI data types
4
The sending MPI library packs payload into contiguous block The receiving MPI library unpacks payload into original form Non-contiguous blocks incur a copy penalty SPMD programs, particularly in homogenous environments, can use optimized packing
5
Background The problem The solution The results Conclusions and Future work
6
Users model MPI types after native types Some fields do not need to be transmitted Users often replace dead fields with a gap in the MPI type to align with native type
7
Smaller payload…. but MPI type is non-contiguous ◦ Copy penalty during packing and unpacking Multi-core machines and high-performance networks feel the cost depending on payload Multi-core machines are becoming ubiquitous ◦ SPMD applications are ideal for these platforms
8
Background The problem The solution The results Conclusions and Future work
9
Applies only to SPMD applications Static analysis to locate MPI data types ◦ MPI_type_struct() Build internal representation of MPI data type ◦ MPI data type defined via library call at runtime ◦ Parameters indicate base types, consecutive instances, and displacements ◦ Def/use analysis to determine static definition
10
Look for gaps in displacement array ◦ Size of base types multiplied by consecutive array Match MPI type to native type ◦ Analyze the types of the payload ◦ MPI type must be subset of native data structure ◦ All sends and receives with MPI type handle must also share same base types
11
Perform transformation on MPI type and native type ◦ Adjust parameters in MPI_type_struct ◦ Relocate non-transmitted fields to bottom of type End goal: improve library performance of packing large arrays
12
Safety check ◦ Cast to a type ◦ Address-of Except for computing displacement ◦ Non-local types Profitability ◦ Sends / receives within loops ◦ Large arrays of MPI types in sends / receives ◦ Cost incurred by cache misses, locality by adjusting native type when native type is in loops
13
Background The problem The solution The results Conclusions and Future work
14
LLVM compiler pass OpenMPI Intel Core2 Quad-core 2.4gz Ubuntu Control: sending un-optimized data type with gap using payloads of various sizes Tested: Rearranging gap in MPI type and native type using payloads of various sizes
17
Background The problem The solution The results Conclusions and Future work
18
MPI data types modeled after native data types Users introduce gaps, making data noncontiguous and costly to pack on fast networks Discover this scenario at compile time Fix it if safe and profitable Greatly improves multi-core performance; infiniband also receives boost.
19
Data type fission with user-injected gaps ◦ Separate transmitted fields from non-transmitted fields ◦ Complete eliminates data copy during packing Data type fission with non-used fields ◦ Perform analysis on receiving end to see which fields are actually being used ◦ Cull non-used fields from data type; perform fission
20
? ? ? ? ?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.