作者a0683g10 (*~小眯~*)
站内MATLAB
标题[讨论] 这个程式除了parfor还能更快吗?
时间Tue Apr 22 22:16:48 2014
我有一个程式已经用上parfor加速了
在我i7-3770 with 4-parpool的PC上面大概需要200s来完成一次计算
而我大概需要算至少7.5k次....Orz
请问在这个逻辑下还有办法更快吗?
我有560ti可用但我目前还没想到适合的算法,现在搬上GPU算不划算
先感谢各位了
程式大约如下:
parfor uu1=1:60
for uu2=1:60
if (uu2 == uu1)
continue
end
for uu3=1:60
if(uu3 == uu2)
continue
elseif(uu3 == uu1)
continue
end
for uu4=1:60
if(uu4 == uu3)
continue
elseif(uu4 == uu2)
continue
elseif(uu4 == uu1)
continue
example1 = norm(exmp(:,:,uu1)*ex(1,1,uu1)) / ...
norm(examp(:,:,uu1)*ex(2,1,uu2));
example2 = norm(exmp(:,:,uu2)*ex(2,1,uu2)) / ...
norm(examp(:,:,uu2)*ex(3,1,uu3));
example3 = norm(exmp(:,:,uu3)*ex(3,1,uu3)) / ...
norm(examp(:,:,uu3)*ex(4,1,uu4));
example4 = norm(exmp(:,:,uu3)*ex(4,1,uu4)) / ...
norm(examp(:,:,uu4)*ex(1,1,uu1));
end
end
end
end
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.115.152.185
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/MATLAB/M.1398176211.A.8D0.html
※ 编辑: a0683g10 (140.115.152.185), 04/22/2014 22:17:20
1F:推 sunev:example1为什麽算了两次?为什麽要算矩阵的norm? 04/22 22:28
※ 编辑: a0683g10 (140.115.152.185), 04/22/2014 23:09:10
2F:→ a0683g10:抱歉因为我打错 04/22 23:09
3F:→ a0683g10:因为是一个自己写的模拟器,目的是算MIMO效能 04/22 23:10
4F:→ a0683g10:所以通道矩阵乘上预编码矩阵後要取norm 04/22 23:12
5F:→ a0683g10:问题在要找出最佳的使用者与编码矩阵组合 04/22 23:13
6F:→ a0683g10:不才只想到用四个for去搜寻,才想来问有没有更好的解法 04/22 23:13
7F:推 sunev:example1 和 example2不是可以搬出最里面的回圈吗? 04/23 03:30
8F:→ a0683g10:感谢sunev大的意见,在我的code里example1、2都与 04/23 10:48
9F:→ a0683g10:uu3、4有关系,因此搬不出去QQ 04/23 10:49
10F:推 sunev:本来想说exmp和examp的norm单独跑一个回圈存起来,不过看来 04/23 14:48
11F:→ sunev:比想像中的更复杂。 04/23 14:49
12F:→ sunev:不然把常数提出norm好了,多少省一点时间。 04/23 14:49