5
我正在尋找一種方法來並行執行代碼段使用多個線程爲每個部分。例如,如果我有16個線程和兩個任務,我需要8個線程來同時執行這兩個任務。 OpenMP有幾個並行執行通用代碼的構造(section
,task
),但它們是單線程的。在我的場景中,使用section
或task
將導致一個線程執行兩個任務中的每一個,而14個線程則無效。我可以將多個線程分配給OpenMP中的代碼部分嗎?
就像OpenMP一樣可能嗎?如果是這樣,我該怎麼做,如果沒有,我可以用什麼來達到這個目的?
謝謝你的時間!
編輯2:
讓我在這個問題上擴大與示例代碼:
class some_class{
void task(){
cout<<"Entering the task method"<<endl;
#pragma openmp parallel for
for(int i=0; i < large_matrix.rows(); i++){
perform_thread_safe_operation(large_matrix.getRow(i));
}
}
matrix large_matrix;
};
void main(){
//I have 16 cores, so I want to spawn 16 threads
some_class o1;
some_class o2;
// I want 8 of the 16 threads to execute this line:
o1.task();
// and 8 remaining threads to execute this line:
o2.task();
}
我剛剛更新了我的一個解決方案的答覆。 – Mysticial