首页 > 阿里笔试题矩阵相乘问题

阿里笔试题矩阵相乘问题

有两个NN的矩阵A和B,想要在PC上按矩阵乘法基本算法编程实现计算AB。假设N较大,本机内存也很大,可以存下A、B和结果矩阵。那么,为了计算速度,A和B在内存中应该如何存储(按行存指先存储第一行,再第二行,直到最后一行;按列存指先存储第一列,再第二列,直到最后一列)?
A按行存,B按行存。
A按行存,B按列存。
A按列存,B按行存。
A按列存,B按列存。


乘法是A的行乘B的列,读取顺序是一次读取A的一行和B的一列,那就是A按行存,B按列存。
这样的话缓存命中更高。

可以参考:
https://software.intel.com/zh-cn/articles/superscalar-programming-101-matrix-multiply-part-2


我觉得,根据AxB,应该是A按照行存储,B按照列存储,这个跟矩阵向量计算有关.


A按行存,B按行存。

自己思考的,可能不对。

循环取A第l行 {
    初始化临时n * n矩阵
    按顺序循环取此行第a个数{
        与B中第a行相乘得到一个临时n * 1矩阵,存放到临时矩阵第a行
    }
    对临时矩阵求列和得到一个 n * 1矩阵存放到结果矩阵第l行
}

可以用结果矩阵当临时矩阵。

【热门文章】
【热门文章】