gpt4 book ai didi

c++ - pragma omp parallel for 与 pragma omp parallel

转载 作者:可可西里 更新时间:2023-11-01 18:36:43 28 4
gpt4 key购买 nike

在带有 openMP 的 C++ 中,两者之间有什么区别吗

#pragma omp parallel for
for(int i=0; i<N; i++) {
...
}

#pragma omp parallel
for(int i=0; i<N; i++) {
...
}

?

谢谢!

最佳答案

#pragma omp parallel
for(int i=0; i<N; i++) {
...
}

此代码创建一个并行区域,每个单独的线程执行循环中的内容。换句话说,您执行 N 次完整循环,而不是 N 个线程拆分循环并仅完成一次所有迭代。

你可以这样做:

#pragma omp parallel
{
#pragma omp for
for( int i=0; i < N; ++i )
{
}

#pragma omp for
for( int i=0; i < N; ++i )
{
}
}

这将创建一个并行区域(又名一个 fork/join,这是昂贵的,因此您不想为每个循环都这样做)并在该区域内并行运行多个循环。只要确保你已经有一个并行区域,你使用 #pragma omp for 而不是 #pragma omp parrallel for 因为后者意味着你的 N 个线程中的每一个都会产生N 个线程执行循环。

关于c++ - pragma omp parallel for 与 pragma omp parallel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38080818/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com