Parallel Processing Multidimensional Arrays via Dynamic Segmentation

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 rather than multi-threaded or parallel processing, leading to errors and inefficiencies in memory usage and processing time.

Innovation Solution

The systems and methods enable re-writing code to facilitate 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 extending core matrix operations to support N-D arrays and 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 rather than parallel, leading to inefficiencies in processing time and memory usage

Engineering Contradiction:
Improveprocessing speedVSAvoidexecution time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent segments arrays into multiple blocks that can be processed independently and in parallel. The array segmentation allows different blocks to be assigned to different computational resources (CPU cores, GPU devices), enabling concurrent execution of operations that were previously performed serially, thus improving processing speed while reducing overall execution time.

Inventive Principle:
Principle #1Segmentation

2Use of energy by moving object

If existing methods are used to process multiple small vectors and matrices, then code execution is possible, but memory usage is inefficient due to serial execution patterns

Engineering Contradiction:
Improvememory usage efficiencyVSAvoidcode complexity
Core Design Contradiction:
Use of energy by moving objectVSDevice complexity

Solution Approach 1:

The patent introduces universal functions (such as arrayfun and slicefun) that can handle multiple small vectors and matrices in a unified manner. These functions automatically manage memory allocation and data distribution across multiple blocks, providing a single interface that works for various data sizes and configurations, thereby improving memory usage efficiency without significantly increasing code complexity.

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

3Productivity

If parallel processing is implemented without specialized tools, then processing speed may improve, but users must write complex CUDA code and understand distributed array processing

Engineering Contradiction:
Improveparallel processing capabilityVSAvoidease of use
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The patent introduces intermediary high-level functions that act as mediators between the user and the complex parallel processing infrastructure. Functions like arrayfun and slicefun provide an abstract interface that automatically handles the complexity of CUDA code generation, device memory management, and distributed array processing, allowing users to achieve parallel processing capabilities without directly writing or understanding low-level CUDA code.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Device complexity

If serial execution is used for array operations, then code simplicity is maintained, but processing time increases and scalability is limited

Engineering Contradiction:
Improvecode simplicityVSAvoidprocessing throughput
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent introduces dynamic code generation capabilities that automatically adapt the level of parallelism and processing strategy based on the input data characteristics. The system dynamically determines whether to use serial or parallel execution, and if parallel, how to segment the data and distribute it across resources, maintaining code simplicity while enabling scalable processing throughput through automated optimization.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS9280382B1Parallel processing of multidimensional arrays
Publication Date: 2016.03.08 MATHWORKS INC
  • US9280382B1 patent drawing
  • US9280382B1 patent drawing
  • US9280382B1 patent drawing

AI summary

A device receives a command to initiate parallel processing. The command includes an operator associated with an operation that is to be performed in connection with the parallel processing, and a reference to a multidimensional array to which the operator is to be applied. The operator is represented by a symbol, and 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 operator to the multiple blocks to cause the operator to be applied in parallel to at least two blocks of the multiple blocks.