Patent ID: 7483937

Claim:
A parallel processing method for an inverse matrix for a shared memory type scalar parallel computer, comprising: (a) specifying a square block in a matrix for which an inverse matrix is to be obtained and which is stored in a memory area as an array A( 1 :n, 1 :n) (where n is an order of the matrix) and storing the square block into a subarray A (nbase+1:nbase+iblk, nbase,+1:nbase+iblk) (where nbase=iblk*(i−1), i is a number of repetition, and iblk is a block width); (b) decomposing the matrix into upper left, left side, lower left, upper, lower, upper right, right side, and lower right blocks surrounding the square block positioned in the center and storing each divided block into subarrays A( 1 :nbase, 1 :nbase), A(nbase+1:nbase+iblk, 1 :nbase), A(nbase+iblk+1:n, 1 :nbase), A( 1 :nbase, nbase+1:nbase+iblk), A(nbase+iblk+1:n, nbase+1:nbase+iblk), A( 1 :nbase, nbase+iblk+1:n), A(nbase+1:nbase+iblk, nbase+iblk+1:n), A(nbase+iblk+1:n, nbase+iblk+1:n), respectively; (c) dividing the lower, right side, and lower right blocks of the square block along a longer direction of a row direction or a column direction of each block, assigning each divided block and the square block to each processor and LU decomposing each assigned block by a parallel operation of the processors; (d) updating the left side, upper, lower, and right side blocks by a parallel operation of processors including, dividing each block along a longer direction of each block; and assigning divided blocks to each processor, the parallel operation including execution of a recursive program comprising (1) dividing blocks into a first half and a second half, (2) calculating the first half, (3) applying (1) through (3) to the second half, and further updating in parallel using the blocks updated in the recursive program on the upper left, lower left, upper right, and lower right blocks by a parallel operation of processors including, dividing each block along a longer direction of each block; and assigning divided blocks to each processor; (e) updating the square block in plural stages using one processor by dividing the predetermined square block so that a cost of updating the predetermined square block is within about 1% against a whole cost of calculation; and (f) setting_nbase of the subarray A(nbase+1:nbase+iblk, nbase+1:nbase+iblk) to nbase+iblk, and obtaining an inverse matrix of the matrix by repeating the steps (a) through (f).