【发布时间】:2023-03-14 14:53:01
【问题描述】:
我正在尝试将两个块对称矩阵相乘 (MATRIX_SIZExMATRIX_SIZE)。 我想执行块矩阵乘法(将矩阵划分为多个 BLOCK_SIZExBLOCK_SIZE 矩阵并乘以相应的块)。我写了一些代码,但想改进它并存储主对角线上方的块,但我没有任何想法。可以的话请大家帮忙看看?
#define IND(A, x, y) A[y*MATRIX_SIZE+x]
void block_mult2(double*& A, double*& B, double*& C){
int i, j, k, i0, j0, k0;
for (i = 0; i < MATRIX_SIZE; i += BLOCK_SIZE)
for (j = 0; j < MATRIX_SIZE; j += BLOCK_SIZE)
for (k = 0; k < MATRIX_SIZE; k += BLOCK_SIZE)
for (i0 = i; i0 < min(BLOCK_SIZE+i, MATRIX_SIZE); i0++)
for (j0 = j; j0 < min(BLOCK_SIZE+j, MATRIX_SIZE); j0++)
for (k0 = k; k0 < min(BLOCK_SIZE+k, MATRIX_SIZE); k0++)
IND(C, i0, j0) += IND(A, i0, k0) * IND(B, k0, j0);
}
【问题讨论】:
标签: c++ algorithm matrix matrix-multiplication