[問題] OpenMP 多層平行疑問

看板C_and_CPP (C/C++)作者 (人生的轉捩點)時間16年前 (2010/01/11 11:15), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
想請問有使用過openmp的板友們 openmp是否可以支援 在 parallel sections 裡面再次使用 parallel for 如下 #pragma omp parallel sections { #pragma omp section { #pragma omp parallel for for( int i=0; i < 10; i++ ) a[i] += i; } #pragma omp section { #pragma omp parallel for for( int i=0; i < 10; i++ ) b[i] += i; } } 我知道上面這個 example code 很蠢 不會有人這樣寫 不過我所要表達的意思是 我可否在section內部 再使用一次parallel呢? 因為我每個section所做的事情差別很大 有些可能是在等待外部IO 所以不吃CPU 有些是真的在運算 期望可以平行得到最大的運算能力 我也試過以下的方法 不過無效 #pragma omp parallel sections { #pragma omp section { fun(a); } #pragma omp section { 等待外部IO sleeping.... } } void fun( int a[10] ) { #pragma omp parallel for num_threads(4) for( int i = 0; i < 10; i++ ) a[i] += i; } 代表即使是call另外的平行化的function 還是一樣不行平行運算 只有一個master thread在做運算而已 不知道是否可以開啟某個選項 可以做到我期望的事情呢?? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.71.218.214

01/11 19:42, , 1F
自問自答 omp_set_nested()
01/11 19:42, 1F
文章代碼(AID): #1BIfUyJY (C_and_CPP)
文章代碼(AID): #1BIfUyJY (C_and_CPP)