Questions tagged «matrix-multiplication»

12
为什么MATLAB在矩阵乘法中如此之快?
我正在使用CUDA,C ++,C#,Java建立一些基准,并使用MATLAB进行验证和矩阵生成。当我使用MATLAB执行矩阵乘法时,2048x2048甚至更大的矩阵几乎都会立即相乘。 1024x1024 2048x2048 4096x4096 --------- --------- --------- CUDA C (ms) 43.11 391.05 3407.99 C++ (ms) 6137.10 64369.29 551390.93 C# (ms) 10509.00 300684.00 2527250.00 Java (ms) 9149.90 92562.28 838357.94 MATLAB (ms) 75.01 423.10 3133.90 只有CUDA具有竞争力,但是我认为至少C ++会比较接近,并且速度不会慢60倍。我也不知道该如何看待C#结果。该算法与C ++和Java相同,但与相比有很大2048的不同1024。 MATLAB如何快速执行矩阵乘法? C ++代码: float temp = 0; timer.start(); for(int j = 0; j …



10
为什么2048x2048与2047x2047阵列乘法相比会产生巨大的性能影响?
我正在做一些矩阵乘法基准测试,如前面在MATLAB为什么矩阵乘法中这么快提到的那样 。 现在,我又遇到了另一个问题,当将两个2048x2048矩阵相乘时,C#与其他矩阵有很大的不同。当我尝试仅乘以2047x2047矩阵时,这似乎很正常。也添加了一些其他内容进行比较。 1024x1024-10秒。 1027x1027-10秒。 2047x2047-90秒。 2048x2048-300秒。 2049x2049-91秒。(更新) 2500x2500-166秒 2k x 2k情况相差三分半钟。 使用2dim数组 //Array init like this int rozmer = 2048; float[,] matice = new float[rozmer, rozmer]; //Main multiply code for(int j = 0; j < rozmer; j++) { for (int k = 0; k < rozmer; k++) { float …

6
numpy dot()和Python 3.5+矩阵乘法@之间的区别
我最近使用Python 3.5,注意到新的矩阵乘法运算符(@)有时与numpy点运算符的行为有所不同。例如,对于3d阵列: import numpy as np a = np.random.rand(8,13,13) b = np.random.rand(8,13,13) c = a @ b # Python 3.5+ d = np.dot(a, b) 的@运算符返回形状的阵列: c.shape (8, 13, 13) 当np.dot()函数返回时: d.shape (8, 13, 8, 13) 如何用numpy点重现相同的结果?还有其他重大区别吗?

4
如何在numpy中获得按元素矩阵乘法(Hadamard积)?
我有两个矩阵 a = np.matrix([[1,2], [3,4]]) b = np.matrix([[5,6], [7,8]]) 我想得到元素乘积[[1*5,2*6], [3*7,4*8]],等于 [[5,12], [21,32]] 我努力了 print(np.dot(a,b)) 和 print(a*b) 但两者都给出结果 [[19 22], [43 50]] 这是矩阵乘积,而不是元素乘积。如何使用内置函数获取按元素分类的产品(又名Hadamard产品)?

5
矩阵乘法:矩阵大小差异小,时序差异大
我有一个矩阵乘法代码,如下所示: for(i = 0; i < dimension; i++) for(j = 0; j < dimension; j++) for(k = 0; k < dimension; k++) C[dimension*i+j] += A[dimension*i+k] * B[dimension*k+j]; 在此,矩阵的大小由表示dimension。现在,如果矩阵的大小为2000,则运行此代码需要147秒,而如果矩阵的大小为2048,则需要447秒。所以虽然没有区别。的乘积为(2048 * 2048 * 2048)/(2000 * 2000 * 2000)= 1.073,时间差为447/147 =3。有人可以解释为什么会这样吗?我希望它可以线性扩展,但不会发生。我不是在尝试制作最快的矩阵乘法代码,只是在试图理解为什么会这样。 规格:AMD Opteron双核节点(2.2GHz),2G RAM,gcc v 4.5.0 程序编译为 gcc -O3 simple.c 我也在英特尔的icc编译器上运行了此命令,并且看到了类似的结果。 编辑: 正如评论/答案中所建议的那样,我运行的维度为2060的代码需要145秒。 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.