Read-Only Communication Operator for Data Parallel Efficiency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

High-level programming languages like C and C++ lack a mechanism to ensure data is read-only, leading to inefficient execution of data parallel algorithms on general purpose processors due to the need for complex synchronization protocols when dealing with data parallel compute nodes having different memory hierarchies.

Innovation Solution

A read-only communication operator is introduced in a high-level programming language that creates an indexable type with a rank and element type, ensuring any attempt to write to the output indexable type results in a compile-time error, thus preventing modifications and eliminating the need for synchronization protocols.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If data is made writable to allow modifications by compute nodes, then programming flexibility is improved, but synchronization complexity increases

Engineering Contradiction:
Improveprogramming flexibilityVSAvoidsynchronization complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent inverts the traditional approach by making data read-only by default and providing mechanisms to selectively enable writing when absolutely necessary. This is achieved through the `readonly` attribute in OpenCL and similar features in other languages, which allow data to be declared as read-only unless explicitly marked otherwise, thereby reducing synchronization overhead while maintaining necessary flexibility.

Inventive Principle:
Principle #13The other way round (Inversion)

Solution Approach 2:

The patent changes the state parameter of data from writable to read-only to eliminate synchronization requirements. By altering the accessibility parameter of data structures and memory buffers, the system achieves better performance without sacrificing functionality, as read-only data can be shared across compute nodes without complex synchronization protocols.

Inventive Principle:
Principle #35Parameter changes

2Productivity

If data is made read-only to avoid synchronization protocols, then execution efficiency is improved, but programming capability deteriorates

Engineering Contradiction:
Improveexecution efficiencyVSAvoidprogramming capability
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent introduces intermediary mechanisms such as the `readonly` attribute, constant qualifiers, and type systems that act as mediators between the read-only data requirement and programming flexibility. These intermediaries allow programmers to express intent clearly while the compiler or runtime system enforces the read-only constraint, providing both efficiency and capability.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent creates a universal read-only mechanism that serves multiple functions: it improves execution efficiency by eliminating synchronization, provides clear semantics for constant data, enables optimization by the compiler, and maintains programming flexibility through selective application. The same mechanism works across different programming languages and compute node types.

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

3Ease of operation

If conventional const modifiers are used to indicate read-only data, then code readability is improved, but enforcement reliability deteriorates

Engineering Contradiction:
Improvecode readabilityVSAvoidenforcement reliability
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The patent applies preliminary actions by declaring data as read-only at the point of definition or before it is passed to compute nodes. The `readonly` attribute, const qualifiers, and immutable type declarations establish the read-only constraint before any potential writing occurs, allowing the compiler to enforce the constraint and prevent accidental modifications.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent replaces the mechanical system of runtime checks and synchronization protocols with a compile-time enforcement mechanism. By using type systems, attribute declarations, and constant qualifiers, the read-only constraint is embedded in the language semantics and enforced by the compiler, eliminating the need for runtime synchronization overhead.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Data Source

PatentUS10620916B2Read-only communication operator
Publication Date: 2020.04.14 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10620916B2 patent drawing
  • US10620916B2 patent drawing

AI summary

A high level programming language provides a read-only communication operator that prevents a computational space from being written. An indexable type with a rank and element type defines the computational space. For an input indexable type, the read-only communication operator produces an output indexable type with the same rank and element type as the input indexable type but ensures that the output indexable type may not be written. The read-only communication operator ensures that any attempt to write to the output indexable type will be detected as an error at compile time.