CUBLAS 中的 Leading dimension

 Leading dimension 就是说在 同一行上相邻的 元素 在内存空间上距离 多少个单位 ,

 Fortron 语言里矩阵是以列顺序存储的 ,CUDA沿用了这一顺序, 那么矩阵的leading dimension 就是 行数   

以其他 语言 为列 , 矩阵的leagding dimension 就是 1 

 

背景;  多维数组(包括矩阵)的布局在逻辑层面上是多维的,而编译器则会将其转换为一维布局,以便根据地址将元素写入一维的内存当中。

一般计算机语言编译器存储多维数组元素是按 行主序的顺序 存储的 ,即逐行地将元素写入内存当中,如下图

 

 

Fortran 语言的编译器是以列主序的布局存储多维数组

 

可能是因为 CUBLAS 库中包含了原Fortran语言编写的库 ?(这里个人了解的不是很透彻),所以在调用库函数时候需要指明 处理的矩阵 是  列主序还是 行主序 

Leading dimension 是在描述矩阵 列主序或者是行主序 存储时的维度,

如果是列主序(col-major) 存储 ,那么它的Leading dimension 就是矩阵的行数 (nrows)

如果是行主序(row-major)存储,那么Leading dimension 就是矩阵的列数(ncols) 

 

posted @ 2023-03-07 16:02  Q!n  阅读(672)  评论(0)    收藏  举报