Parallel MPI Matrix Transpose via Block Segmentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Parallel MPI matrix transposition in distributed-memory multiprocessor environments is inefficient due to high compute time and memory usage, particularly in in-place transpositions, where temporary copies of data buffers are required for data movement between processors.

Innovation Solution

The method involves dividing the input matrix into submatrix data blocks of a predetermined size and using MPI APIs to send and receive these blocks without making an in-memory copy, allowing for in-place transposition without the need for temporary buffers, thereby reducing compute time and memory consumption.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If temporary copy of storage media buffer is created for in-place transpose, then data can be moved between processors simultaneously, but compute time and memory space increase

Engineering Contradiction:
Improvedata movement correctnessVSAvoidcompute time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the storage media buffer into multiple blocks and processes them in a specific order. By dividing the buffer into blocks that can be independently sent and received, the system enables overlapping of send and receive operations for different blocks, thereby hiding communication latency and reducing overall compute time without requiring a full temporary copy of the buffer

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary actions by sending certain blocks before receiving their corresponding transposed blocks. This allows the system to overlap communication operations and utilize memory bandwidth more efficiently, reducing the critical path of the transpose operation without compromising data correctness

Inventive Principle:
Principle #10Preliminary action

2Reliability

If temporary copy of storage media buffer is created for in-place transpose, then data can be moved between processors simultaneously, but memory space consumption increases

Engineering Contradiction:
Improvedata movement correctnessVSAvoidmemory space
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent divides the storage media buffer into multiple manageable blocks rather than creating a full temporary copy. This segmentation allows the system to reuse portions of the original buffer for receive operations after send operations are complete, significantly reducing peak memory space requirements while maintaining data movement correctness through proper block ordering and synchronization

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent makes the storage media buffer serve multiple functions: it acts as both the send buffer and receive buffer at different times and for different blocks. This multi-functionality eliminates the need for a separate temporary copy, reducing memory space consumption while ensuring data correctness through careful management of buffer usage states

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS11836549B2Fast block-based parallel message passing interface transpose
Publication Date: 2023.12.05 ADVANCED MICRO DEVICES INC
  • US11836549B2 patent drawing
  • US11836549B2 patent drawing
  • US11836549B2 patent drawing

AI summary

Computer-implemented techniques for fast block-based parallel message passing interface (MPI) transpose are disclosed. The techniques achieve an in-place parallel matrix transpose of an input matrix in a distributed-memory multiprocessor environment with reduced consumption of computer processing time and storage media resources. An in-memory copy of the input matrix or a submatrix thereof to use as the send buffer for MPI send operations is not needed. Instead, by dividing the input matrix in-place into data blocks having up to at most a predetermined size and sending the corresponding data block(s) for a given submatrix using an MPI API before receiving any data block(s) for the given submatrix using an MPI API in the place of the sent data block(s), making the in-memory copy to use a send buffer can be avoided and yet the input matrix can be transposed in-place.