作者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://www.ptt.cc/bbs/MATLAB/M.1398176211.A.8D0.html
※ 編輯: a0683g10 (140.115.152.185), 04/22/2014 22:17:20
推 sunev:example1為什麼算了兩次?為什麼要算矩陣的norm? 04/22 22:28
※ 編輯: a0683g10 (140.115.152.185), 04/22/2014 23:09:10
→ a0683g10:抱歉因為我打錯 04/22 23:09
→ a0683g10:因為是一個自己寫的模擬器,目的是算MIMO效能 04/22 23:10
→ a0683g10:所以通道矩陣乘上預編碼矩陣後要取norm 04/22 23:12
→ a0683g10:問題在要找出最佳的使用者與編碼矩陣組合 04/22 23:13
→ a0683g10:不才只想到用四個for去搜尋,才想來問有沒有更好的解法 04/22 23:13
推 sunev:example1 和 example2不是可以搬出最裡面的迴圈嗎? 04/23 03:30
→ a0683g10:感謝sunev大的意見,在我的code裡example1、2都與 04/23 10:48
→ a0683g10:uu3、4有關係,因此搬不出去QQ 04/23 10:49
推 sunev:本來想說exmp和examp的norm單獨跑一個迴圈存起來,不過看來 04/23 14:48
→ sunev:比想像中的更複雜。 04/23 14:49
→ sunev:不然把常數提出norm好了,多少省一點時間。 04/23 14:49