首页 > 其他分享 >矩阵乘法的优化

矩阵乘法的优化

时间:2022-12-24 19:34:09浏览次数:62  
标签:读取数据 矩阵 计算 优化 CPU 乘法

1. 矩阵乘法计算的优化方法小记

之前逛知乎的时候经常看到有人对julia,numpy(python),ndarray(rust), openblas,blas,lapack的矩阵乘法速度或者其它矩阵操作的速度进行比较,因此就非常好奇,为什么会存在这种差异呢?

https://zhuanlan.zhihu.com/p/546901963

https://zhuanlan.zhihu.com/p/368870275

经过搜索发现,其实不管怎么变,我们在代码层面看到的计算复杂度并没有变,但是在编译后执行层面上会有不同。

不同的写法会影响cpu读取内存中的数据的位置(比如在缓存中读取数据就比在堆中读取要快很多,在寄存器中读取数据比在缓存中要快很多);读取数据的方式(比如未经优化的代码需要计算数据存储的位置进行指针的跳转,而经过优化后,只需要将指针按顺序移动一位即可,在空间上是连续的);此外还可以充分应用CPU中的向量化指令,对矩阵进行分块再转至缓存计算;对矩阵计算进行预热,提前存储各个矩阵分块的指针;最后还可以直接调用CPU架构对应的汇编语言,针对硬件进行优化。更高级一点对于多核CPU(多线程)或者显卡,可以引入并行计算对矩阵乘法进行加速。

总而言之,想要充分发挥CPU(or GPU)的计算效率,我们的算法需要针对硬件,针对电脑读取和计算数据的方式进行优化,这比我们最初预想要解决问题的计算方式要困难许多。

PS:

当然对于矩阵的计算除了三重循环,还有strassen算法,有一些算法是针对超大型矩阵进行设计的(在小矩阵上没有优势),他们的预计的计算复杂度能够做到\(O(N^3)\)到\(O(N^2)\)之间。

可能理想很丰满,现实很骨感,这些算法也许由于适用的范围和前面提到的与计算机交互时硬件水平上面临的问题,并不能被广泛应用吧。

标签:读取数据,矩阵,计算,优化,CPU,乘法
From: https://www.cnblogs.com/mrwang80/p/17003260.html

相关文章

  • 蓝桥-13届-C++-B组-省赛-F题-统计子矩阵
    直达链接主要解题思路分为两个部分,1是构造二维前缀和计算矩阵和,降低每次求和的时间复杂度;2是对所有子矩阵的遍历求和过程,因为需要两个坐标,遍历4个行/列值,4层for循环时间复......
  • sql优化之explain
    1.explain的介绍explain可以显示mysql是如何执行sql语句的,以便我们知道sql语句的性能瓶颈在哪,帮助我们进行相关的性能优化。2.explain的使用方法explain的使用方法比......
  • 以小博大外小内大,Db数据库SQL优化之小数据驱动大数据
    SQL优化中,有一条放之四海而皆准的既定方针,那就是:永远以小数据驱动大数据。其本质其实就是以小的数据样本作为驱动查询能够优化查询效率,在SQL中,涉及到不同表数据的连接、转......
  • IDEA在4K屏下的缩放优化
    1.修改为150%之后的缩放效果  2.打开idea的虚拟机配置文件  3.添加-Dide.ui.scale=1.51.5为缩放比例,可自行调整。   ......
  • 力扣-304-二维区域和检索-矩阵不可变
    classNumMatrix{private: vector<vector<int>>prefixSum;public: NumMatrix(vector<vector<int>>&matrix){ intn=matrix.size(); intm=matrix[0].size(......
  • 【数据结构】利用Python手把手带你自定义矩阵
    前言什么是矩阵矩阵,Matrix。在数学上,矩阵是指纵横排列的二维数据表格,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。矩阵是高等代数......
  • Windows7优化,优化达到30多项,速度大幅提升,
    Windows7优化,优化达到30多项,速度大幅提升,点此下载Windows7优化(下载地址放在文章底部)解压开后导入Windows7优化.reg后重启。或者新建文本文档复制粘贴以下代码保存为.reg......
  • Windows10优化系统,速度大幅提升
    Windows10优化,速度大幅提升点此下载Windows10优化(下载地址放在文章底部)解压开后导入Windows10优化.reg后重启。或者新建文本文档复制粘贴以下代码保存为.reg文件,然后打开......
  • MongoDB 索引原理与索引优化
    转载请注明出处:1.MongoDB索引索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种......
  • cucumber:使用cucumber-reporting 插件优化HTML report
    承接上一篇:API测试框架:cucumber+springBoot+restAssured原始的cucumberreport比较粗糙,如图下: 我们可以通过cucumber-reporting插件对报告进去优化,集成介绍如下:1)......