Multiprocessor Programming Library Automating Resource Allocation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing programming tools for multiprocessor environments require complex manual allocation of communication resources, making it difficult for programmers to efficiently map channels for data exchange between processing modules without detailed knowledge of hardware resources.

Innovation Solution

A multiprocessor programming library that allows programmers to specify processing modules and channels at a high level, automatically mapping them to available resources in a network of interconnected processing engines, using buffers and switches for data transmission, and selecting memory resources dynamically for efficient data handling.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Extent of automation

If manual allocation of communication resources is used, then resource allocation control is improved, but programming complexity increases

Engineering Contradiction:
Improveresource allocation automationVSAvoidprogramming complexity
Core Design Contradiction:
Extent of automationVSDevice complexity

Solution Approach 1:

The system performs self-service through automatic resource allocation. The programming library automatically maps high-level channel specifications to physical communication resources without requiring manual programmer intervention. The runtime system dynamically allocates buffers, switches, and memory resources based on the program specification, enabling the system to serve itself rather than requiring complex manual configuration.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The programming library acts as an intermediary between the programmer and the hardware resources. It provides a high-level abstraction layer that translates channel specifications into detailed resource allocation decisions. This intermediary handles the complexity of resource mapping, buffer allocation, and communication setup, shielding programmers from hardware complexity while maintaining efficient resource utilization.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Ease of operation

If detailed hardware knowledge is required for channel mapping, then resource allocation precision is improved, but ease of programming deteriorates

Engineering Contradiction:
Improveease of programmingVSAvoidresource mapping precision
Core Design Contradiction:
Ease of operationVSManufacturing precision

Solution Approach 1:

The system uses abstraction copying to create simplified representations of hardware resources. Instead of requiring programmers to work with detailed hardware specifications, the library creates high-level channel abstractions that automatically map to physical resources. This copying mechanism preserves the essential communication functionality while eliminating the need for detailed hardware knowledge.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The programming library provides universal interface functions that work across different hardware configurations. The same high-level channel specification can be mapped to various underlying hardware resources depending on availability and performance requirements. This multi-functionality allows the system to maintain precise resource mapping while keeping the programming interface simple and hardware-agnostic.

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

3Adaptability or versatility

If static resource allocation is used, then system stability is improved, but adaptability to different program specifications deteriorates

Engineering Contradiction:
Improveadaptability to program specificationsVSAvoidsystem stability
Core Design Contradiction:
Adaptability or versatilityVSStability of the object's composition

Solution Approach 1:

The system implements dynamic resource allocation where communication resources are allocated and configured at runtime based on actual program execution needs. The programming library analyzes the program specification and dynamically maps channels to available hardware resources, allocating buffers and memory as needed. This dynamic approach maintains system stability through proper resource management while adapting to different program specifications and runtime conditions.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system changes allocation parameters dynamically based on program requirements. Instead of fixed static allocation, the runtime system adjusts buffer sizes, memory allocations, and resource assignments according to the specific communication patterns in each program. This parameter adaptation enables the system to maintain stability through controlled resource management while achieving high adaptability to diverse program specifications.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS9934010B1Programming in a multiprocessor environment
Publication Date: 2018.04.03 MELLANOX TECHNOLOGIES LTD(IL)
  • US9934010B1 patent drawing
  • US9934010B1 patent drawing
  • US9934010B1 patent drawing

AI summary

Programming in a multiprocessor environment includes accepting a program specification that defines a plurality of processing modules and one or more channels for sending data between ports of the modules, mapping each of the processing modules to run on a set of one or more processing engines of a network of interconnected processing engines, and for at least some of the channels, assigning one or more elements of one or more processing engines in the network to the channel for sending data between respective processing modules.