1
這是我的主要獵手的一部分。我想打破平行OMP爲儘快剛過條件滿足,B設定爲假:C++打破omp並行
#pragma omp parallel for
for(long l = 1; l <= n; l++) {
if (m % p[l] == 0) {
b = false;
*// Break omp parallel for*}
}
我試圖做循環來實現這一目標,但我無法弄清楚。有人可以爲我修改這個嗎?
還有我不知道你的●變量是正確的;你確定它應該是基於1而不是基於0的嗎?這是一個素數計算器嗎? – Dave 2013-03-17 22:47:04
是的,我通過do循環嘗試了第一個建議。但無論條件(失敗變量)是否滿足,它仍然等待完成'l'。我看到了同樣的文章,但是我的關卡非常複雜,以便跟蹤正在發生的事情...... – Flashbond 2013-03-17 22:51:38
基本上,其他答案將平行分割爲其組成部分;一個線程分割並在每個線程上循環。它不如內置功能,但在這種情況下,缺點不會顯而易見。我提出的第一個建議不會給你帶來任何好處,不(我說的太多了);它只會在你的循環體更復雜時纔有用。我認爲第二塊代碼對你來說是一個很好的妥協;很容易理解,並且如果您正確地分割它,將會避免大部分等待。 – Dave 2013-03-17 22:56:15