[讨论] 这个程式除了parfor还能更快吗?

楼主: a0683g10 (*~小瞇~*)   2014-04-22 22:16:48
我有一个程式已经用上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
作者: sunev (Veritas)   2014-04-22 22:28:00
example1为什么算了两次?为什么要算矩阵的norm?
楼主: a0683g10 (*~小瞇~*)   2014-04-22 23:09:00
抱歉因为我打错因为是一个自己写的模拟器,目的是算MIMO效能所以通道矩阵乘上预编码矩阵后要取norm问题在要找出最佳的使用者与编码矩阵组合不才只想到用四个for去搜寻,才想来问有没有更好的解法
作者: sunev (Veritas)   2014-04-23 03:30:00
example1 和 example2不是可以搬出最里面的循环吗?
楼主: a0683g10 (*~小瞇~*)   2014-04-23 10:48:00
感谢sunev大的意见,在我的code里example1、2都与uu3、4有关系,因此搬不出去QQ
作者: sunev (Veritas)   2014-04-23 14:48:00
本来想说exmp和examp的norm单独跑一个循环存起来,不过看来比想像中的更复杂。不然把常数提出norm好了,多少省一点时间。

Links booklink

Contact Us: admin [ a t ] ucptt.com