到目前为止,我只使用OpenMP来并行化C++中的for循环。但是,我想知道是否可以执行其他代码行,这些代码不是用于并行循环的。
void minimization(int *a, int *x) {
// this part of the code is dependent of other library.
}
void checkForNaN(int *a){
// check nan points
}
int main() {
// read data
minimization (a,b);
checkForNaN(x);
}考虑上面的示例片段,其中minimization(,)和checkForNaN()是独立的,这是其中一个不影响另一个的结果。可以并行化吗?
我在想这样的事情:
int main() {
// read data
#pragma omp parallel
{
minimization (a,b);
checkForNaN(x);
}
}看上去对吗?
发布于 2015-10-14 15:55:05
这就是OMP部分的用途:)
int main() {
#pragma omp parallel sections
{
#pragma omp section
{
minimization(a,b);
}
#pragma omp section
{
checkForNaN(x);
}
}
}发布于 2015-10-14 15:57:22
不,看起来不对。它将在所有线程中执行minimization(a,b);和checkForNaN(x);。
相反,这将执行并行化:
int main() {
// read data
#pragma omp parallel sections
{
#pragma omp section
{
minimization (a,b);
}
#pragma omp section
{
checkForNaN(x);
}
}
}https://stackoverflow.com/questions/33130001
复制相似问题