Parallel Processing Multidimensional Arrays via Dynamic Segmentation
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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
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.
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
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.
4Device complexity
If serial execution is used for array operations, then code simplicity is maintained, but processing time increases and scalability is limited
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.
Data Source
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.


