Parallel Debugger Using Shims for MPI-Independent Cluster Debugging

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing debugging methods for parallel applications are either cumbersome and non-scalable or inflexible, often requiring multiple debugger clients and being tied to specific MPI implementations, which limits their effectiveness, especially for large-scale and older applications.

Innovation Solution

A system and method that allows a debugger to attach to parallel processes across multiple nodes in a computing cluster using shims to collect and aggregate data, independent of the underlying MPI, enabling flexible and scalable debugging.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a separate debugging API built into MPI is used, then debugging capability is provided, but flexibility is reduced and scalability is limited

Engineering Contradiction:
Improvedebugging capabilityVSAvoidflexibility
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The patent introduces a debugger daemon as an intermediary component that mediates between the parallel application and the debugging interface. This daemon runs independently of MPI and provides a standardized debugging interface, allowing the same debugger to work with different MPI implementations and application types without requiring MPI-specific debugging code.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The debugger daemon is designed as a universal debugging system that can handle multiple types of parallel applications regardless of their specific MPI implementation. It provides a single standardized interface that works across different platforms and MPI versions, making the debugging system multi-functional and broadly applicable.

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

2Reliability

If multiple debugger clients are executed at each node, then debugging capability is achieved, but device complexity and scalability deteriorate

Engineering Contradiction:
Improvedebugging capabilityVSAvoidnumber of debugger clients
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent merges the debugging functionality across multiple nodes by having a single debugger client on the host machine control multiple debugger daemons running on different nodes. This consolidates what would otherwise be multiple independent debugging systems into a unified debugging environment managed by a single client.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The debugger daemons on each node are designed to be self-managing, automatically attaching to the appropriate processes and collecting debugging information without requiring manual intervention from the user. The system handles its own setup and coordination, reducing the complexity burden on the user.

Inventive Principle:
Principle #25Self-service

3Ease of manufacture

If debugging is tied to MPI, then integration is improved, but adaptability to different MPI implementations and older applications is reduced

Engineering Contradiction:
ImproveintegrationVSAvoidcompatibility with different MPI implementations
Core Design Contradiction:
Ease of manufactureVSAdaptability or versatility

Solution Approach 1:

The patent segments the debugging system into two independent parts: an MPI-independent debugger daemon that handles all debugging logic, and the MPI layer that handles only message passing. This separation allows the debugging system to function independently of specific MPI implementations, enabling compatibility with different MPI versions and older applications that may not support modern debugging extensions.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS7512934B2Parallel debugger
Publication Date: 2009.03.31 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7512934B2 patent drawing
  • US7512934B2 patent drawing
  • US7512934B2 patent drawing

AI summary

A debugger attaches to a parallel process that is executing simultaneously at various nodes of a computing cluster. Using a shim, executing at each node, to monitor each of the processes, the parallel process is debugged such that neither the process or the particular message passing system implemented on the cluster, needs to know of the existence or details regarding the debugger.