Symmetric Matrix Vector Multiplication Parallel Computation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing methods for parallel computation of symmetric matrix multiplication with vectors suffer from write conflicts, redundancy in data reading, and unbalanced thread workloads, leading to inefficiencies and inaccuracies in computation.
Innovation Solution
A parallel computation method that divides a symmetric matrix into symmetric axis, upper triangular, and lower triangular regions, and allocates threads to process these regions in a way that avoids write conflicts by using multiple storage devices and optimizing thread resource allocation.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of time
If parallel computation is used to multiply symmetric matrix with vector, then computation time is reduced, but write conflicts occur leading to incorrect results
Solution Approach 1:
The patent divides the symmetric matrix into distinct regions: upper triangular region, lower triangular region, and diagonal region. Each region is assigned to different thread groups that compute independently and write to different memory locations, eliminating write conflicts while maintaining parallel computation speedup.
Solution Approach 2:
The patent introduces a temporary storage structure (accumulator array) that acts as an intermediary between thread computations and final memory writes. Threads write their partial results to this intermediary structure first, which then consolidates and writes to the final result vector, preventing direct write conflicts in the result vector.
2Device complexity
If existing techniques are used for symmetric matrix computation, then simpler algorithm is maintained, but same data is read twice resulting in redundancy and lower computation efficiency
Solution Approach 1:
The patent extracts and separates the diagonal elements from the upper and lower triangular regions. By processing the diagonal region separately and using it once, the algorithm avoids redundant reads of diagonal data that would occur if the entire symmetric matrix were processed without considering the symmetry property.
Solution Approach 2:
The patent applies different computation strategies to different regions of the matrix. The upper triangular region is processed one way, the lower triangular region is processed another way, and the diagonal region is processed differently. This localized optimization ensures that each region is handled according to its specific characteristics, improving overall computation efficiency.
3Device complexity
If simple matrix division into regions is used, then implementation is simplified, but thread workload becomes unbalanced wasting thread resources
Solution Approach 1:
The patent dynamically adjusts the computation assigned to each thread group based on the size and characteristics of the matrix regions. The diagonal region is processed by one group of threads while upper and lower triangular regions are processed by other groups, with the workload dynamically balanced according to the actual matrix dimensions and data characteristics.
Solution Approach 2:
The patent assigns different computational tasks to different thread groups based on local characteristics of each matrix region. Threads processing the upper triangular region have different workloads than threads processing the lower triangular region or diagonal region, optimizing resource utilization by matching thread capabilities to local computational requirements.
Data Source
AI summary
Parallel computation methods and systems for multiplying symmetric matrices with vectors are provided. The method may include acquiring a symmetric matrix and a vector; determining a count of a plurality of threads; dividing the symmetric matrix into a symmetric axis region, an upper triangular region, and a lower triangular region; obtaining symmetric axis data by determining a product of the symmetric axis region and the vector; dividing the upper triangular region or the lower triangular region into one or more subregions; for each of the one or more subregions, determining one or more candidate axes parallel to the symmetric axis, and for each of the one or more candidate axes, obtaining two sets of data or four sets of data by performing two multiplication operations on the candidate axis; and obtaining a result of multiplying the symmetric matrix with the vector.


