阿里笔试题矩阵相乘问题

发布于 2022-09-01 17:26:34 字数 206 浏览 17 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

御守 2022-09-08 17:26:34

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

瑕疵 2022-09-08 17:26:34

A按行存,B按行存。

自己思考的,可能不对。

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

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

佼人 2022-09-08 17:26:34

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文