Parallel Processing Multidimensional Arrays via Block Partitioning

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Technical computing environments face challenges in efficiently executing code operations involving multiple small vectors and matrices, as existing methods often result in serial execution and are prone to errors, limiting multi-threaded or parallel processing opportunities.

Innovation Solution

The system enables re-writing code for concurrent execution of operations with small vectors and matrices by partitioning arrays and using commands like slicefun and arrayfun, allowing parallel processing across multiple resources such as CPUs and GPUs, and supports core matrix operations for N-D arrays with singleton dimension expansion.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If code operations involving multiple small vectors and matrices are executed using existing methods, then the code can be executed, but the execution is serial and performance is limited

Engineering Contradiction:
Improveexecution performanceVSAvoidparallel processing complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments multidimensional arrays into multiple blocks along specified dimensions, enabling parallel processing of array operations. The system automatically divides the array into manageable blocks that can be processed concurrently by multiple computational resources, transforming serial execution into parallel execution without requiring users to manually manage the segmentation logic.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary layer (the parallel processing system) that sits between the user code and the computational resources. This intermediary automatically handles the complexity of parallel processing by managing block segmentation, resource allocation, and result aggregation, allowing users to write simple high-level code while the system manages the underlying parallel execution complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If parallel processing is implemented manually, then multi-threaded execution can be achieved, but the code becomes complex and error-prone

Engineering Contradiction:
Improveparallel execution capabilityVSAvoidcode simplicity
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The patent implements self-service by enabling the system to automatically manage parallel processing tasks without requiring user intervention. The system autonomously segments arrays, distributes blocks to computational resources, coordinates parallel execution, and aggregates results. Users simply provide high-level operation commands, and the system handles all the complexity of parallel execution automatically.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent creates a universal parallel processing framework that can handle various array operations (matrix multiplication, element-wise operations, etc.) across different array dimensions and sizes through a unified interface. This multi-functional system eliminates the need for users to write separate parallel processing code for different operation types, significantly simplifying the coding process while maintaining parallel execution capabilities.

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

3Productivity

If users write CUDA code or understand distribution schemes, then parallel processing can be optimized, but the barrier to entry increases

Engineering Contradiction:
Improveparallel processing efficiencyVSAvoiduser accessibility
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent uses copying by creating simplified abstractions (blocks and pages) that represent portions of the underlying array structure. Instead of requiring users to work with complex distributed memory structures, the system creates manageable copies or views of array portions that can be processed independently. This abstraction layer allows users to write portable, efficient code without needing to understand the specific memory distribution schemes or CUDA programming model.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS9135065B1Parallel processing of multidimensional arrays
Publication Date: 2015.09.15 MATHWORKS INC
  • US9135065B1 patent drawing
  • US9135065B1 patent drawing
  • US9135065B1 patent drawing

AI summary

A device receives a command to initiate parallel processing. The command includes an indication of a function that is to be performed in connection with the parallel processing, and a reference to a multidimensional array to which the function is to be applied. The multidimensional array includes at least three dimensions. The command also includes an indication of one or more dimensions by which the multidimensional array is to be partitioned. The device partitions the multidimensional array, along the one or more dimensions, to divide the multidimensional array into multiple blocks, each of the multiple blocks representing a subset of the multidimensional array. The device controls application of the function to the multiple blocks to cause the function to be applied in parallel to at least two blocks of the multiple blocks.