![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
矩阵乘法
捂眼看世界
这个作者很懒,什么都没留下…
展开
-
高速缓存与矩阵乘法(三)
CLAPACK 注意事项在使用 CLAPACK 前,要先清楚四点:首先是 Levels of Routines,即函数的层次,链接中有详细的介绍,这里不再赘述。其次是 Naming Scheme,即命名规则,链接中有详细的介绍,这里不再赘述。再次是 CLAPACK 的函数不接收二维数组,即只能用一维数组代替二维数组。例如,我想要个 array2 = {{1,2},{3,4}},那么正确的写法是 array[2*2] = {1,2,3,4}。最后是行主序与列主序的问题。CLAPACK 看一维数组时会原创 2020-05-17 21:43:06 · 491 阅读 · 0 评论 -
高速缓存与矩阵乘法(二)
LAPACK如果矩阵的规模较小,直接按照公式展开计算倒是看不出性能上有什么大问题,比如两个二维方阵相乘,计算公式如下c[i][j]=∑k=1na[i][k]∗b[k][j],1⩽i⩽n,1⩽j⩽nc[i][j]=\sum^n_{k=1}a[i][k]*b[k][j],\quad 1\leqslant i\leqslant n,1\leqslant j\leqslant nc[i][j]=k=1∑na[i][k]∗b[k][j],1⩽i⩽n,1⩽j⩽n但是,随着矩阵规模的增大,这种计算方式的性能瓶原创 2020-05-17 15:36:08 · 764 阅读 · 0 评论 -
高速缓存与矩阵乘法(一)
来源:数据结构、算法与应用 C++语言描述(原书第2版)简单计算机模型我们来看一个简单的计算机模型,它的存储由一个一级缓存 L1(level 1)、一个二级缓存 L2 和主存构成。算术和逻辑操作由算术和逻辑单元(ALU)对存储在寄存器(R)中的数据进行处理来完成。下图是这个计算机模型的一部分。通常,主存的大小是几十或几百 MB;二级缓存的大小不足 1MB;一级缓存的大小是几十 KB;寄存器的数量在 8 和 32 之间。程序开始运行时,所有数据都在主存。要执行一个算术运算,例如加法,首先把相加的数据原创 2020-05-17 08:45:45 · 2053 阅读 · 0 评论