[問題] OpenMP thread wait
由於時間緊迫需用OpenMP平行運算的功能
剛接觸OpenMP大概兩天 對所有指令還不是很熟
建立兩個thread分別給兩個cpu運算
兩個thread分別算出a跟b
目前我只會用section做
第一個section是算出a
第二個section是算出b
然後停止平行的thread做c=a+b
然後結束main
大概如下
#include <omp.h>
#include <stdio.h>
double a=0,b=0,c,d;
void cal_a(){
//to do code
}
void cal_b(){
//to do code
}
void cal_c(){
//to do code
}
using namespace std;
int main(){
c=cal_c();
#pragma omp parallel sections
{
#pragma omp section{
cal_a();
}
#pragma omp section{
cal_b();
}
}
d=a+b+c;
}
做了一些程式測試後猜測
section應該是任意指定硬體中的兩個thread分別給cpu執行
目前的問題是
我不知道如何等兩個thread都執行過了才執行d=a+b+c;
導致有時候b還沒執行,就執行d=a+b+c
或a還沒執行,就執行d=a+b+c
懇請OpenMP方面的高手可以幫我解答一下
謝謝OTZ
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.121.58
→
12/19 22:03, , 1F
12/19 22:03, 1F
→
12/19 22:04, , 2F
12/19 22:04, 2F
→
12/20 02:50, , 3F
12/20 02:50, 3F
→
12/20 15:44, , 4F
12/20 15:44, 4F
→
12/20 15:45, , 5F
12/20 15:45, 5F
Programming 近期熱門文章
PTT數位生活區 即時熱門文章