3

最近在钻研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 */

几个问题:

  1. “lda”和“ldl2”是什么意思?L2的前导维度和行数有什么区别?

  2. A、L1、L2的值是多少?换句话说,在面板分解的每次迭代之后,L、U 和子矩阵的确切大小是多少?我试图在迭代期间跟踪这些值,但无法分辨出模式。

例如,假设 HPL 有以下参数:

N   1024  (matrix size)
NB 128    (block size)
PxQ 2x2   (process grid)

对于使用 (src/pgesv/HPL_pdgesv0.c) 的“循环 A 的列”,每个进程的每次迭代的 A、L1、L2 的值是多少?你能在这里给我一些统计分析吗?比如索引和剩余矩阵大小。

如果有人(熟悉 HPL 源代码)给我一些建议,我将不胜感激。

4

0 回答 0