如何在 C++ 中使用 openmp 并行 运行 两组代码
How to run two set of code in parallel using openmp in c++
我有两个互不相关的函数,例如:
int add(int num)
{
int sum=0;
for(i=0;i<num;++i)
sum+=i;
return sum;
}
int mul(int num)
{
int mul=1;
for(int i=1;i<num;++i)
mul * i;
return mul;
}
我要起诉他们如下:
auto x=add(100);
auto m=mul(200);
cout<<a<< " " <<m<<endl;
如何使用 OpenMP 运行 并行处理它们?我知道如果我创建一个新线程和 运行 该线程中的一个函数并实现同步机制以确保两个线程在调用 cout 时完成,我可以并行 运行 它们.
我也知道我可以为我的循环使用 openMP parallel,但假设它不存在。
在 OpenMP 中解决此问题的常用方法是 sections
构造。它使您能够定义可由不同线程并发计算的部分顺序代码。每个部分都以 omp section
directive/pragma.
开头
我有两个互不相关的函数,例如:
int add(int num)
{
int sum=0;
for(i=0;i<num;++i)
sum+=i;
return sum;
}
int mul(int num)
{
int mul=1;
for(int i=1;i<num;++i)
mul * i;
return mul;
}
我要起诉他们如下:
auto x=add(100);
auto m=mul(200);
cout<<a<< " " <<m<<endl;
如何使用 OpenMP 运行 并行处理它们?我知道如果我创建一个新线程和 运行 该线程中的一个函数并实现同步机制以确保两个线程在调用 cout 时完成,我可以并行 运行 它们.
我也知道我可以为我的循环使用 openMP parallel,但假设它不存在。
在 OpenMP 中解决此问题的常用方法是 sections
构造。它使您能够定义可由不同线程并发计算的部分顺序代码。每个部分都以 omp section
directive/pragma.