gpt4 book ai didi

c - 我想使用 openmp 并行运行两个单独的循环

转载 作者:行者123 更新时间:2023-11-30 20:17:15 26 4
gpt4 key购买 nike

两个不同的循环应使用 openmp 在 C 中并行运行。我是 openmp 的新手,并找到了单个循环的步骤并行运行而不是多个循环的解决方案。请有人建议如何去做。

#include<stdio.h>

int main()
{
// this loop must run on processor 1
for(int i=0;i<k;i++)
{ // work to be done in loop1
}

//this loop must run on processor 2
for(int i=0;i<k;i++)
{ //work to be done in loop2
}
}

最佳答案

您可以执行类似的操作,但请阅读下面的警告

int id;

#pragma omp parallel private(id) num_threads(2)
{
id = omp_get_thread_num();
if(id == 0) {
// Loop1
}

else if(id == 1) {
// Loop2
}
}

非常不言自明。创建两个线程,获取正在执行的线程的 id,并根据 id 选择要执行的操作。

但是,这是一种非常尴尬的做法。这不是您通常使用 OpenMP 并行化内容的方式。这更多的是Pthreads风格。

警告

请记住,num_threads(2) 不保证有两个线程。所以如果你想使用这个方法,你需要某种防护。

if(omp_get_num_threads() < 2) {
// Serial code
} else {
// Parallel code
}

突然之间,一切都变得非常笨拙。

关于c - 我想使用 openmp 并行运行两个单独的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58267617/

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