矩阵描述符
矩阵描述符DESCA与每个全局矩阵相关联在分布式矩阵中,用来描述全局矩阵与进程和内存位置之间映射关系,每个分布式矩阵理论上都有单独矩阵描述符,但分布模式相同的矩阵可以共用一个描述符。矩阵描述符条目中使用的符号x_表示全局矩阵的属性。例如,M_表示行数,M_A具体表示全局矩阵A中的行数。根据矩阵类型的不同,描述符类型和矩阵存储方式也会发生变化,下面是一个矩阵的描述符DESCA的内容。
密集矩阵
一个通用的分布矩阵A(M_ × N_)由它的维度、用于其分解的基本MB_ × NB_块的大小、在其本地内存中具有第一个矩阵条目(RSRC_,CSRC_)的进程的坐标和BLACS定义定义此矩阵的上下文(CTXT_)决定。此外,本地前导维度LLD_与指向用于本地存储该分布式矩阵的数据结构的本地内存地址相关联。
描述符名称 |
范围 |
定义 |
---|---|---|
DTYPE_A |
全局 |
表示矩阵的类型。 |
CTXT_A |
全局 |
BLACS上下文句柄,表示全局矩阵A在进程网格上的分布。 |
M_A |
全局 |
矩阵A的全局行数。 |
N_A |
全局 |
矩阵A的全局列数。 |
MB_A |
全局 |
用于分配行的分块因子。 |
NB_A |
全局 |
用于分配列的分块因子。 |
RSRC_A |
全局 |
分布在矩阵A的第一行的进程行。 |
CSRC_A |
全局 |
分布在矩阵A的第一列的进程列。 |
LLD_A |
本地 |
本地矩阵的前导维度。 |
矩阵描述符通过descinit_接口初始化。
int descA[9]; descinit_( descA, &m, &n, &mb, &nb, &rsrc, &csrc, &ctxt, &lddA, &info);
其中,m和n表示全局矩阵行和列,mb和nb表示矩阵分块的大小,rsrc和csrc表示全局矩阵第一个元素(0,0)所在进程在进程网格中的位置,因此有0 <= rsrc < nprow,0 <= csrc< npcol。ctxt即为包含进程网格信息的上下文句柄,info是scalapack函数的返回值,用来表示函数调用是否报错及报错原因。
父主题: 数据描述