在编写密集矩阵计算时,选择行主布局还是列主布局有什么原因吗?
我知道,根据所选矩阵的布局,我们需要编写适当的代码以有效利用缓存内存来提高速度。
行主布局似乎更自然和简单(至少对我来说是这样)。但像Fortran编写的LAPACK这样的主要库使用列主布局,因此必须有某种原因选择了这种布局。
我知道,根据所选矩阵的布局,我们需要编写适当的代码以有效利用缓存内存来提高速度。
行主布局似乎更自然和简单(至少对我来说是这样)。但像Fortran编写的LAPACK这样的主要库使用列主布局,因此必须有某种原因选择了这种布局。
A*x
看作是A
的列的线性组合。我将A*x
看作是x
和A的行的点积向量。在你的示例中,先迭代
k再迭代
i,这样你就会得到一个更偏爱以行为主存储的
A`版本。 - atablash