Matrix cholesky decomposition coprocessor and system thereof
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2023-10-08
- Publication Date
- 2026-08-11
AI Technical Summary
[0004]尽管现有的软件实现方法在许多情况下都能够满足需求,但是在对实时性和功耗有着严格要求的嵌入式系统应用中,这种方法的性能显然是不足的
[0044] The hardware-based implementation of this invention can significantly reduce the number of software instructions that need to be executed, thereby improving the real-time performance of the system and effectively reducing the power consumption of the embedded system.
Smart Images

Figure CN117131324B_ABST
Abstract
Description
Technical Field
[0001] This invention relates to signal processing, and more specifically to a matrix Cholesky decomposition coprocessor and system thereof. Background Technology
[0002] With the rapid development of signal processing technology, matrix operations are playing an increasingly important role in the field. Cholesky decomposition is a commonly used matrix operation that decomposes a positive definite symmetric matrix into the product of a lower triangular matrix and its transpose. This decomposition method has wide applications in various fields, such as signal processing, motion control, and image processing. It allows many complex mathematical problems to be simplified through the decomposed matrix, thus significantly improving computational efficiency and accuracy. Furthermore, because the decomposed matrix possesses favorable mathematical properties, Cholesky decomposition is also frequently used to solve optimization problems, profoundly impacting people's lives and work.
[0003] In existing computer systems, Cholesky decomposition of matrices is typically implemented in software. When Cholesky decomposition of a matrix is required, the original matrix is divided into blocks of equal size, each block being a submatrix. Then, the Cholesky decomposition of each submatrix is computed recursively by applying the Cholesky decomposition, fully utilizing the parallelism of the computer system and the block structure of the matrix to improve computational efficiency.
[0004] While existing software implementations can meet requirements in many situations, their performance is clearly insufficient for embedded system applications with stringent real-time and power consumption demands. Due to the need to execute a large number of software instructions, existing software implementations not only lead to computational latency but also increase system power consumption. Summary of the Invention
[0005] To address the above problems, this invention provides a matrix Cholesky decomposition coprocessor and its system.
[0006] The Cholesky matrix decomposition coprocessor decomposes a positive definite symmetric matrix A into the product of a lower triangular matrix L and the inversion of L, including:
[0007] Adder, divider, multiplier, square root extractor, input buffer, output buffer, data mixer, multiplexer, temporary value storage module;
[0008] The adder is used to perform addition operations; the divider is used to perform division operations; the multiplier is used to perform multiplication operations; the square root extractor is used to perform square root operations.
[0009] The input temporary storage area is used to store the positive definite symmetric matrix A; the output temporary storage area is used to store the lower triangular matrix L;
[0010] The data mixer blends data from different data sources.
[0011] The multiplexer selects a data source for output based on the control signal;
[0012] The temporary value storage module is used to store temporary data and calculate intermediate results.
[0013] Furthermore, the temporary value storage module includes a first-in-first-out queue and a random access memory.
[0014] The matrix Cholesky decomposition system provided by this invention includes:
[0015] The main processor performs computational and control tasks and manages the coprocessors;
[0016] The Cholesky matrix decomposition coprocessor mentioned above is used to receive instructions from the main processor and perform decomposition calculations of positive definite symmetric matrices.
[0017] A coprocessor interface provides a communication path between the main processor and the matrix Cholesky decomposition coprocessor;
[0018] Extended instruction interface, used to parse and process special instructions from the main processor.
[0019] Furthermore, the input and output data of each module in the matrix Cholesky decomposition coprocessor all adopt the single-precision floating-point type of the IEEE-754 standard.
[0020] Furthermore, when the main processor determines that an instruction is a matrix Cholesky decomposition coprocessor instruction, the main processor initiates a request to the matrix Cholesky decomposition coprocessor through the extended instruction interface request channel, and at the same time sends the source operands to the matrix Cholesky decomposition coprocessor through the extended instruction interface.
[0021] When the matrix Cholesky decomposition coprocessor receives the source operand, it determines whether the extended instruction interface handshake was successful. If successful, it starts the matrix decomposition operation and returns the operation result to the main processor through the extended instruction interface feedback channel.
[0022] Furthermore, the square root operation in the matrix Cholesky decomposition task is defined as Task 1, and Task 1 only uses the square root extractor.
[0023] In the Cholesky decomposition task, the calculation of the current column of the lower triangular matrix L is defined as Task 2, which uses only the aforementioned divider.
[0024] In the Cholesky matrix decomposition task, updating the positive definite symmetric matrix A is defined as Task 3, which uses only the subtractor and the multiplier.
[0025] Let the order of the positive definite symmetric matrix A be K. The calculation of the k-th column of the triangular matrix L consists of three tasks: Task 1, Task 2, and Task 3, which are defined as the decomposition task group of the k-th column. In the decomposition task group, Task 1 and Task 2 calculate the elements of each k-th column of the triangular matrix L, and Task 3 updates the elements of the (k+1)-th to (k)-th columns of the positive definite symmetric matrix A, where k∈[1,K]. Task 1, Task 2, and Task 3 in each decomposition task group are executed sequentially. When k>1, the execution of Task 1 in the k-th column must wait until Task 3 in the (k-1)-th column finishes updating the elements of the k-th column of the positive definite symmetric matrix A. When k>2, the execution of Task 1 in the k-th column must wait until Task 3 in the (k-2)-th column finishes executing.
[0026] Furthermore, the matrix Cholesky decomposition task includes the following states:
[0027] C_IDLE: Idle state, in which no matrix Cholesky decomposition task is executed;
[0028] C_SQRT_START: Square root start state, in which the square root is enabled;
[0029] C_DIV_START: Division start state, which enables column division operation;
[0030] C_CAL: Module operation state, indicating that at least one square root, division, or matrix update operation is in progress;
[0031] C_REFRESH: The matrix is in the refresh state. In this state, the positive definite symmetric matrix A will begin to be updated.
[0032] C_WAIT: Matrix refresh state. In this state, wait for the elements in the positive definite symmetric matrix A to be updated.
[0033] C_END: End state. This state indicates that a Cholesky matrix decomposition task has ended.
[0034] A state machine is used to manage the transitions between states.
[0035] Furthermore, the management of state transitions through a state machine specifically includes:
[0036] The C_IDLE state switches to the C_SQRT_START state when the square root enable signal is pulled high.
[0037] The C_SQRT_START state switches to the C_CAL state when the square root operator begins calculation;
[0038] The C_DIV_START state switches to the C_CAL state when column division operation begins;
[0039] In the C_CAL state, if the square root completion signal is pulled high first, it is determined whether the output of the square root is the last element of the diagonal of the lower triangular matrix L. If so, it switches to the C_END state; otherwise, it switches to the C_DIV_START state. If the division calculation completion signal is pulled high first, it switches to the C_WAIT state. If the matrix column update completion signal is pulled high first, it switches to the C_SQRT_START state.
[0040] The C_REFRESH state switches to the C_CAL state when the positive definite symmetric matrix A begins to be updated;
[0041] The C_WAIT state switches to the C_REFRESH state after the elements in the positive definite symmetric matrix A have been updated.
[0042] After the C_END state completes the first Cholesky matrix decomposition task, it switches to the C_IDLE state.
[0043] One or more technical solutions provided in the embodiments of this application have at least the following technical effects or advantages:
[0044] The hardware-based implementation of this invention can significantly reduce the number of software instructions that need to be executed, thereby improving the real-time performance of the system and effectively reducing the power consumption of the embedded system. Attached Figure Description
[0045] Figure 1 A block diagram of the Cholesky matrix decomposition hardware unit provided in an embodiment of the present invention;
[0046] Figure 2 The Cholesky decomposition hardware task execution timing diagram provided in this embodiment of the invention;
[0047] Figure 3 This is a state transition diagram of the Cholesky decomposition module state machine provided in an embodiment of the present invention;
[0048] Figure 4 This is a block diagram of a matrix Cholesky decomposition system provided in an embodiment of the present invention. Detailed Implementation
[0049] The present invention will be described in detail below with reference to the accompanying drawings and specific embodiments. Before describing the technical solutions of each embodiment of the present invention in detail, the terms and terms involved will be explained. In this specification, components with the same name or the same reference numerals represent similar or the same structures and are limited to illustrative purposes.
[0050] The present invention will be explained in detail below with reference to an embodiment.
[0051] This invention designs a dedicated embedded coprocessor based on the RISC-V architecture for Cholesky decomposition of single-precision floating-point positive definite symmetric matrices, thereby achieving hardware acceleration of the Cholesky decomposition algorithm for positive definite symmetric matrices in signal processing.
[0052] The Cholesky decomposition of a positive definite symmetric matrix is a matrix decomposition method that decomposes a positive definite symmetric matrix A into a lower triangular matrix L and its transpose L. T The product of these terms. The Cholesky decomposition of a positive definite symmetric matrix can be viewed as a step-by-step, layer-by-layer process. Starting from the top left corner of the positive definite symmetric matrix A, the first row of the lower triangular matrix L is determined through square root and division operations; then, the first column of the lower triangular matrix L is determined through subtraction and square root operations. The subsequent process is to recursively perform the above process on the remaining part of the positive definite symmetric matrix A.
[0053] This process can continue until the entire lower triangular matrix L is filled. Each step involves using the currently known elements of the lower triangular matrix L to approximate the corresponding elements of the original positive definite symmetric matrix A. Through this successive approximation, a lower triangular matrix L can eventually be obtained.
[0054] 1. Matrix Cholesky Decomposition Coprocessor
[0055] The matrix Cholesky decomposition coprocessor structure provided by this invention is as follows: Figure 1 As shown, it includes: adders, dividers, multipliers, square roots, input buffer (A buffer), output buffer (L buffer), data mixer (DUMX), multiplexer (MUX), several first-in-first-out queues (FIFO_1 and FIFO_2) and several random access memories (RAM_1).
[0056] The adder is used to perform addition operations in the Cholesky decomposition of positive definite symmetric matrices.
[0057] The divider is used to perform division operations in the Cholesky decomposition of positive definite symmetric matrices.
[0058] The multiplier is used to perform multiplication operations in the Cholesky decomposition of positive definite symmetric matrices.
[0059] The square root extractor is used to perform the square root operation in the Cholesky decomposition process of a positive definite symmetric matrix.
[0060] The input buffer (A buffer) is used to store the positive definite symmetric matrix A that needs to be decomposed by Cholesky. Since the positive definite symmetric matrix a is continuously updated during the calculation, the decomposition process will perform read and write operations on the input buffer (A buffer).
[0061] The output buffer (L buffer) is used to store the results of the Cholesky decomposition, i.e., the lower triangular matrix L. The decomposition process only performs write operations on the output buffer (L buffer).
[0062] The data mixer (DUMX) is responsible for mixing data from different data sources. For example, it may be necessary to mix data of a positive definite symmetric matrix A from the input buffer (A buffer) with intermediate result data from the first-in-first-out queues (FIFO_1 and FIFO_2) or random access memory (RAM_1).
[0063] The multiplexer (MUX) is responsible for selecting a data source for output based on control signals. For example, it may be necessary to choose between intermediate result data from the input buffer (A buffer) and from the first-in-first-out queue (FIFO_1 and FIFO_2) or random access memory (RAM_1).
[0064] First-In-First-Out (FIFO_1 and FIFO_2) queues are responsible for temporarily storing data to meet the data transfer requirements between processing units.
[0065] Random access memory (RAM_1) is responsible for storing intermediate calculation results so that they can be quickly accessed when needed.
[0066] All input and output data of each module adopts the single-precision floating-point type of the IEEE-754 standard.
[0067] 2. Cholesky matrix decomposition system
[0068] Based on the aforementioned matrix Cholesky decomposition coprocessor, this invention also provides a matrix Cholesky decomposition system, such as... Figure 4 As shown, the matrix Cholesky decomposition system includes: a main processor, a matrix Cholesky decomposition coprocessor, a coprocessor interface, and an extended instruction interface.
[0069] The main processor performs the main computational and control tasks for the entire system and manages the coprocessors. It parses and executes extended instructions for the coprocessors to initiate specific computational tasks for the coprocessors and reads the computation results from the coprocessors.
[0070] The Cholesky matrix decomposition coprocessor receives instructions from the main processor and performs decomposition calculations for positive definite symmetric matrices.
[0071] The coprocessor interface provides a communication path that allows the main processor to send instructions to the coprocessor and receive data from it. Through this interface, the main processor can control the behavior of the Cholesky matrix decomposition coprocessor, such as starting or stopping the decomposition process and reading the decomposition results.
[0072] The extended instruction interface parses and processes special instructions from the main processor. These special instructions include initiating the decomposition process and reading the decomposition results.
[0073] The Cholesky matrix decomposition coprocessor can be viewed as a circuit module independent of the main processor core. The Cholesky matrix decomposition instructions are decoded and then sent to the Cholesky matrix decomposition coprocessor for execution.
[0074] While the main processor is executing instructions normally, the decoding unit decodes the fetched instructions and finds them to be Cholesky decomposition coprocessor instructions. The main processor then requests the Cholesky decomposition coprocessor through the extended instruction interface request channel, simultaneously sending the source operand values to the coprocessor via the extended instruction interface. Once the Cholesky decomposition coprocessor successfully receives the source operands and the extended instruction interface request channel handshake is successful, the coprocessor begins operation. After completing the computation, it returns the result through the extended instruction interface feedback channel, and the main processor then continues executing other instructions.
[0075] 3. Cholesky Matrix Decomposition Coprocessor Workflow
[0076] Assuming a positive definite symmetric matrix A is a K-order matrix, and we are currently calculating the k-th column of the lower triangular matrix L, we first need to calculate the diagonal elements L. kk At this time, the element a in the positive definite symmetric matrix A kk After passing through a data mixer for selection, the data is fed into a square root extractor. A multiplexer then selects the output of the square root extractor, thus obtaining the diagonal element L. kkThe data is then stored in the output buffer. During this process, the square root output is also temporarily stored in FIFO_1 as the denominator for subsequent division operations. Next, the k-th column element of the positive definite symmetric matrix A is read out sequentially and used as the numerator. After performing Kk division operations with the data in FIFO_1, the k-th column element of the lower triangular matrix L is calculated. After the k-th column element of the lower triangular matrix L is calculated, the elements in columns k+1 to k of the positive definite symmetric matrix A need to be updated. The column update will use the elements in column k of the lower triangular matrix L. These elements have been temporarily stored in RAM_1 in the previous step. At this time, the first element needs to be taken out from RAM_1 and sent to FIFO_2. Then, the second element needs to be taken out from RAM_1 and sent to the multiplier along with the elements in FIFO_2. After the multiplier outputs the result, the element in the positive definite symmetric matrix A that is used as the minuend is also ready. The result of the multiplier is then subtracted from the corresponding element in the positive definite symmetric matrix A. The result is the updated element and is written to the buffer. After repeating the above process K-1 times, the lower triangular matrix L is obtained.
[0077] To improve computational efficiency by rationally planning the Cholesky decomposition task, the right-looking version of the Cholesky decomposition algorithm executes sequentially. When designing the hardware circuit, the task execution flow needs to be rationally divided to allow each task to run in parallel as much as possible. The square root operation, finding the current column, and updating the remaining matrix are divided into Task 1, Task 2, and Task 3, respectively. Task 1 performs the square root operation, using only the square root extractor; Task 2 calculates the current column of the lower triangular matrix L, using only the divider; Task 3 updates the remaining elements in the positive definite symmetric matrix A, which involves subtraction and multiplication operations, requiring subtractors and multipliers. Therefore, as long as access to each unit does not conflict, the tasks can run in parallel.
[0078] The execution flow after parallelizing the task design is as follows: Figure 2 As shown. Figure 2 The horizontal axis represents the time axis, and the vertical axis represents the columns of the lower triangular matrix L. The square corresponding to sqrt indicates a square root operation, corresponding to task 1; the square corresponding to wait indicates entering the idle state, meaning no task has been executed; the square corresponding to div indicates a division operation, corresponding to task 2; and the square corresponding to refresh indicates updating the remaining elements in the positive definite symmetric matrix A, corresponding to task 3. The height of the square corresponds to which column of the lower triangular matrix L is being updated, and the length of the square indicates the start and end times of the corresponding task.
[0079] The calculation of the k-th column of the triangular matrix L consists of three tasks: Task 1, Task 2, and Task 3. This is defined as a decomposition task group for the k-th column. Task 1 and Task 2 calculate the elements of each k-th column of the triangular matrix L, and Task 3 updates the elements of the (k+1)-th to (k)-th columns of the positive definite symmetric matrix A, where k∈[1,K]. Task 1, Task 2, and Task 3 in each decomposition task group are executed sequentially. When k>1, the execution of Task 1 for the k-th column must wait until Task 3 for the (k-1)-th column finishes updating the elements of the k-th column of the positive definite symmetric matrix A. When k>2, the execution of Task 1 for the k-th column must wait until Task 3 for the (k-2)-th column finishes executing.
[0080] Figure 2 A Cholesky decomposition process can be derived. Assuming we begin calculating the k-th column of the lower triangular matrix L, tasks 1 and 2 should be executed sequentially first, followed by task 3 updating the (k+1)th to (k)th columns of the positive definite symmetric matrix A. At this point, tasks 1 and 2 enter a waiting state. When task 3 executes, the (k+1)th column of the positive definite symmetric matrix A should be updated before calculating the (k+1)th column of the lower triangular matrix L. If tasks 1 and 2 start executing before updating the (k+1)th column of the positive definite symmetric matrix A, the calculation of the (k+1)th column of the lower triangular matrix L might use elements from the (k+1)th column of the positive definite symmetric matrix A that haven't been updated, leading to errors in the calculation results. If the number of elements to be updated in the positive definite symmetric matrix A is large, and task 3 hasn't finished updating the (k+2)th to (k)th columns of the positive definite symmetric matrix A when tasks 1 and 2 finish calculating the (k+1)th column of the lower triangular matrix L, the next round of element updates cannot proceed in time, and the process enters a waiting state. Once task 3 finishes, it will immediately begin updating the positive definite symmetric matrix A. If the number of elements to be updated in the positive definite symmetric matrix A is small, when task 3 is completed, tasks 1 and 2 are still running. The next round of updates will only begin after task 2 has finished. After repeating this process multiple times, the lower triangular matrix L is calculated and stored in the output temporary storage area.
[0081] The Cholesky decomposition task consists of seven states, such as... Figure 3 As shown, the specific functions of each state are as follows:
[0082] C_IDLE: Idle state. In this state, it waits for the square root enable signal. When the square root enable signal is pulled high, it enters the C_SQRT_START state.
[0083] C_SQRT_START: Square root start state. In this state, the square root extractor is enabled. After the square root extractor starts calculating, it will immediately jump to the C_CAL state.
[0084] C_DIV_START: Division start state. In this state, column division is enabled. Once column division begins, the state machine immediately jumps to the C_CAL state.
[0085] C_CAL: Module operation state. In this state, the module is performing at least one square root, division, or matrix update operation. The next jump state is determined by the completion signal of different tasks. If the square root completion signal is pulled high first, it is checked whether the output of the square root is the last element of the diagonal of the lower triangular matrix L. If it is, it jumps to the C_END state; otherwise, it jumps to the C_DIV_START state. If the division completion signal is pulled high first, it jumps to the C_WAIT state. If the matrix column update completion signal is pulled high first, it jumps to the C_SQRT_START state.
[0086] C_REFRESH: Matrix refresh state. In this state, task 3 is enabled and will begin updating the positive definite symmetric matrix A. Then the state will immediately jump to the C_CAL state.
[0087] C_WAIT: Matrix refresh state. In this state, the state machine waits for the elements in the positive definite symmetric matrix A to be updated. After the update is completed, it will jump to the C_REFRESH state to carry out the next round of updates.
[0088] C_END: End state. In this state, the decomposition module outputs a calculation completion signal for one cycle as a stop condition, ending the accelerator calculation, and then directly jumps to the C_IDLE state to continue waiting for the next round of calculation.
Claims
1. A matrix Cholesky decomposition system, characterized by, include: The main processor performs computational and control tasks and manages the coprocessors; The matrix Cholesky decomposition coprocessor is used to receive instructions from the main processor and perform decomposition calculations of positive definite symmetric matrices. The matrix Cholesky decomposition coprocessor includes an adder, a divider, a subtractor, a multiplier, a square root extractor, an input buffer, an output buffer, a data mixer, a multiplexer, and a temporary value storage module. A coprocessor interface provides a communication path between the main processor and the matrix Cholesky decomposition coprocessor; Extended instruction interface for parsing and processing special instructions from the main processor; Define the square root operation in the matrix Cholesky decomposition task as Task 1, where Task 1 only uses the square root extractor described above. Defining a matrix cholesky decomposition task to find a lower triangular matrix L The current column calculation is task 2, which uses only the divider; Updating positive definite symmetric matrices in a Cholesky decomposition task A For task 3, task 3 uses only the subtractor and the multiplier; Define a positive definite symmetric matrix A The order is K For triangular matrices L No. k The calculation of the column consists of Task 1, Task 2, and Task 3, defined as the first... k The column is decomposed into task groups, and task 1 and task 2 in the task group calculate the triangular matrix. L Every k The elements of the column, Task 3: Update the positive definite symmetric matrix A The k+1 To the K Column elements, Task 1, Task 2, and Task 3 in each decomposed task group are executed sequentially; when k>1 At that time, the first k The execution of task 1 in the column needs to wait until the... k-1 Task 3 of the column is for positive definite symmetric matrices A The k The update of the column elements is complete; when k>2 At that time, the first k The execution of task 1 in the column needs to wait until the... k-2 Task 3 in the column has finished executing; The Cholesky matrix decomposition task includes the following states: C_IDLE: Idle state, in which no matrix Cholesky decomposition task is executed; C_SQRT_START: Square root start state, in which the square root is enabled; C_DIV_START: Division start state, which enables column division operation; C_CAL: Module operation state, indicating that at least one square root, division, or matrix update operation is in progress; C_REFRESH: Matrix refresh begins. In this state, updates to the positive definite symmetric matrix will begin. A ; C_WAIT: Matrix refresh state. In this state, the system waits for a positive definite symmetric matrix to be refreshed. A The Chinese elements have been updated. C_END: End state. This state indicates that a Cholesky matrix decomposition task has ended. Use a state machine to manage the transitions between states; The transitions between states are managed through a state machine, specifically including: The C_IDLE state switches to the C_SQRT_START state when the square root enable signal is pulled high. The C_SQRT_START state switches to the C_CAL state when the square root operator begins calculation; The C_DIV_START state switches to the C_CAL state when column division operation begins; In the C_CAL state, if the square root completion signal is pulled high first, it is determined whether the output of the square root is the last element of the diagonal of the lower triangular matrix. If so, it switches to the C_END state; otherwise, it switches to the C_DIV_START state. If the division calculation completion signal is pulled high first, it switches to the C_WAIT state. If the matrix column update completion signal is pulled high first, it switches to the C_SQRT_START state. The C_REFRESH state begins updating the positive definite symmetric matrix. A Switch to C_CAL state at this time; The C_WAIT state in a positive definite symmetric matrix A After the elements in the middle are updated, switch to the C_REFRESH state; The C_END state transitions to the C_IDLE state after the first Cholesky matrix decomposition task is completed.
2. The Cholesky matrix decomposition system according to claim 1, characterized in that, The Cholesky decomposition coprocessor will decompose positive definite symmetric matrices. A Decompose into a lower triangular matrix L and L The product of the transposes of the matrices; The adder is used to perform addition operations; the divider is used to perform division operations; the multiplier is used to perform multiplication operations; the square root extractor is used to perform square root operations. The input temporary storage area is used to store positive definite symmetric matrices. A The output temporary storage area is used to store the lower triangular matrix. L ; The data mixer blends data from different data sources. The multiplexer selects a data source for output based on the control signal; The temporary value storage module is used to store temporary data and calculate intermediate results.
3. The Cholesky matrix decomposition system according to claim 1, characterized in that, The temporary value storage module includes a first-in-first-out queue and a random access memory.
4. The Cholesky matrix decomposition system according to claim 1, characterized in that, The input and output data of each module in the matrix Cholesky decomposition coprocessor are all of the single-precision floating-point type of the IEEE-754 standard.
5. The Cholesky matrix decomposition system according to claim 1, characterized in that, When the main processor determines that an instruction is a matrix Cholesky decomposition coprocessor instruction, the main processor initiates a request to the matrix Cholesky decomposition coprocessor through the extended instruction interface request channel, and at the same time sends the source operands to the matrix Cholesky decomposition coprocessor through the extended instruction interface. When the matrix Cholesky decomposition coprocessor receives the source operand, it determines whether the extended instruction interface handshake was successful. If successful, it starts the matrix decomposition operation and returns the operation result to the main processor through the extended instruction interface feedback channel.
Citation Information
Patent Citations
A method for solving an inverse matrix of a symmetric or erbium-density symmetric positive definite matrix
CN109635241A
Efficient matrix format suitable for neural networks
CN111860757A