最近,我正在深入研究HPL代码并尝试了解HPL的底层实现机制。 (http://www.netlib.org/benchmark/hpl/)
现在,我对HPL_T_panel结构中的一些参数感到困惑。 (包括/ hpl_panel.h)。
A; /* ptr to trailing part of A */
* WORK; /* work space */
* L2; /* ptr to L */
* L1; /* ptr to jb x jb upper block of A */
lda; /* local leading dim of array A */
ldl2; /* local leading dim of array L2 */
几个问题:
'lda'和'ldl2'的含义是什么?领先维度和L2行数之间有什么区别?
A,L1和L2的价值是多少?换句话说,在每次面板分解迭代后,L,U和子矩阵的确切大小是多少?我试图在迭代期间跟踪这些值,但无法分辨模式。
例如,假设HPL的以下参数:
N 1024 (matrix size)
NB 128 (block size)
PxQ 2x2 (process grid)
对于'循环在A列上'(src / pgesv / HPL_pdgesv0.c),每个进程的每次迭代的A,L1,L2值是多少?你能在这里给我一些统计分析吗?如索引和剩余矩阵大小。
如果有人(熟悉HPL源代码)给我一些建议,我会很感激。