[討論] 這個程式除了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