Interruptible MPI Wait with Progress Engine

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing Message Passing Interface (MPI) architectures face inefficiencies due to indefinite blocking, particularly in multi-threaded environments, where threads wait for message completion without making progress, leading to potential deadlocks and performance regressions.

Innovation Solution

The introduction of an interruptible wait feature and asynchronous callback enhancements in the MPI library, allowing threads to interrupt blocking calls and execute callbacks deterministically, ensuring progress without deadlocks and improving performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If threads check for requests continuously to avoid blocking, then responsiveness is improved, but processor time is wasted

Engineering Contradiction:
ImproveresponsivenessVSAvoidprocessor time
Core Design Contradiction:
Ease of operationVSLoss of energy

Solution Approach 1:

The system uses periodic interruptible waits where threads can be interrupted at specified intervals to check for requests, rather than continuously checking or blocking indefinitely. This allows the progress engine to execute periodically and make progress on pending requests while avoiding continuous processor consumption.

Inventive Principle:
Principle #19Periodic action

Solution Approach 2:

The patent introduces a progress engine as an intermediary that executes between blocking operations. This progress engine handles request processing and can interrupt blocking threads, acting as a mediator that prevents direct continuous checking while maintaining system responsiveness through periodic execution.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If threads block indefinitely waiting for message completion, then message passing reliability is improved, but deadlock risk increases

Engineering Contradiction:
Improvemessage passing completionVSAvoiddeadlock potential
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The blocking wait is made dynamic and interruptible rather than static and indefinite. Threads can be interrupted from their blocked state by the progress engine or other threads, allowing the system to adapt and prevent deadlock conditions while maintaining reliable message passing through controlled interruption mechanisms.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system takes preliminary anti-action by implementing interruptible waits that prevent indefinite blocking before deadlocks can occur. The progress engine proactively interrupts blocked threads to check for completion conditions, preventing the system from reaching deadlock states while ensuring messages are properly completed.

Inventive Principle:
Principle #9Preliminary anti-action

3Productivity

If multiple threads execute MPI calls simultaneously, then productivity is improved, but serialization overhead increases

Engineering Contradiction:
Improvethread concurrencyVSAvoidserialization overhead
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments MPI operations into distinct phases: non-blocking operations that can execute concurrently, and completion-waiting routines that are serialized. This segmentation allows productive concurrent execution of message passing operations while concentrating serialization overhead only in the wait/completion phase, improving overall productivity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Threads perform preliminary MPI operations (send, receive, initiate) in a concurrent non-blocking manner before entering the completion-waiting phase. This preliminary action allows maximum productivity during the active operation phase, while serialization is deferred to the waiting phase where it is managed by the progress engine.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9262235B2Messaging interruptible blocking wait with serialization
Publication Date: 2016.02.16 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9262235B2 patent drawing
  • US9262235B2 patent drawing
  • US9262235B2 patent drawing

AI summary

Enhanced message passing architectures and libraries include an interruptible wait feature. After a thread X calls a completion-awaiting routine of a message passing interface library, a progress engine executes while the routine is in the blocked condition. A thread Y interrupts the routine before all messaging operations are completed. The interrupted routine returns control to thread X with an indication that the routine's completion condition is unsatisfied. The completion-awaiting routine may have the same function signature as a standard MPI routine. In some cases, thread Y interrupts the routine while requesting a lock held by thread X. In some applications, thread X is a communication thread and thread Y is one of multiple worker threads. The interruptible wait feature may be joined by an asynchronous callback feature, which associates a callback with a deterministic execution context.