[討論] 這個程式除了parfor還能更快嗎?

看板MATLAB作者 (*~小瞇~*)時間11年前 (2014/04/22 22:16), 11年前編輯推噓3(309)
留言12則, 2人參與, 最新討論串1/1
我有一個程式已經用上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

04/22 22:28, , 1F
example1為什麼算了兩次?為什麼要算矩陣的norm?
04/22 22:28, 1F
※ 編輯: a0683g10 (140.115.152.185), 04/22/2014 23:09:10

04/22 23:09, , 2F
抱歉因為我打錯
04/22 23:09, 2F

04/22 23:10, , 3F
因為是一個自己寫的模擬器,目的是算MIMO效能
04/22 23:10, 3F

04/22 23:12, , 4F
所以通道矩陣乘上預編碼矩陣後要取norm
04/22 23:12, 4F

04/22 23:13, , 5F
問題在要找出最佳的使用者與編碼矩陣組合
04/22 23:13, 5F

04/22 23:13, , 6F
不才只想到用四個for去搜尋,才想來問有沒有更好的解法
04/22 23:13, 6F

04/23 03:30, , 7F
example1 和 example2不是可以搬出最裡面的迴圈嗎?
04/23 03:30, 7F

04/23 10:48, , 8F
感謝sunev大的意見,在我的code裡example1、2都與
04/23 10:48, 8F

04/23 10:49, , 9F
uu3、4有關係,因此搬不出去QQ
04/23 10:49, 9F

04/23 14:48, , 10F
本來想說exmp和examp的norm單獨跑一個迴圈存起來,不過看來
04/23 14:48, 10F

04/23 14:49, , 11F
比想像中的更複雜。
04/23 14:49, 11F

04/23 14:49, , 12F
不然把常數提出norm好了,多少省一點時間。
04/23 14:49, 12F
文章代碼(AID): #1JLddJZG (MATLAB)
文章代碼(AID): #1JLddJZG (MATLAB)