C++ 有没有办法将这些功能与openMP并行?

C++ 有没有办法将这些功能与openMP并行?,c++,openmp,C++,Openmp,我有一个代码行,我认为我可以以某种方式并行,例如: int f1(a,b){ ..... } int f2(a1,b1,a2,b2){ //here we are calling f1 function twice int k = f1(a1,b1) * f1(a2,b2); ..... return k; } int main(){ int result = f2(.....); } 有没有办法使用“#pragma omp parallel”同时调用

我有一个代码行,我认为我可以以某种方式并行,例如:

int f1(a,b){
.....
}
int f2(a1,b1,a2,b2){
    //here we are calling f1 function twice
    int k = f1(a1,b1) * f1(a2,b2);
    .....
    return k;
}
int main(){

    int result = f2(.....);
}
有没有办法使用“#pragma omp parallel”同时调用这些f1函数?然后当然将结果放在“k”中。

如果
f1()
没有不良的副作用,例如,在没有正确锁定的情况下不会更改某些全局状态,您可以简单地将表达式一分为二,并使用
构造并行运行每个部分:

intf2(a1、b1、a2、b2){
int k11,k22;
#pragma-omp平行截面
{
#pragma-omp段
k11=f1(a1,b1);
#pragma-omp段
k22=f1(a2,b2);
}
int k=k11*k22;
...
返回k;
}