目前我正在開展一個項目,並希望提高執行速度。 我完全不熟悉並行編碼。我的程序最初有6個循環,我管理 將其優化爲三個循環,執行時間減少了300%。從我研究的 我認爲問題在於索引。我在之前的循環中已經使用了parfor,但是索引是i = 1:vs_max-1。如何在Matlab中優化用於並行化的嵌入循環索引?
在下面的代碼:
for i = 1:vs_max-1
for j = i+1:vs_max-1
d = max(abs(X(i,:)-X(j,:)));
DD = exp(-(d/r)^n);
D(i,j) = DD;
D(j,i) = DD;
while (i~=vs_max)
d2 = max(abs(X2(i,:)-X2(j,:)));
DD2 = exp(-(d2/r)^n);
D2(i,j) = DD2;
D2(j,i) = DD2;
break;
end
end
end
我相信這個問題是在第二循環的索引,其中j還要求我值 ,當我們有一個以上的線程,我們必須將這些值多址。
任何人都可以幫助我重新編制這個循環,以便parfor不提示或提供其他類型的代碼優化,以便上面的代碼變得更快?
非常感謝您的好意閱讀和回覆我的文章。