sách gpt4 ai đã đi

openmp - 给定依赖图生成 OpenMP 代码

In lại 作者:行者123 更新时间:2023-12-04 15:20:06 29 4
mua khóa gpt4 Nike

我有一个关于如何在您考虑特定依赖关系图时生成 OpenMP 伪代码的问题。
所以假设我们有这个特定的图表:

Dependence graph

解决方案可能是这样的:

    #pragma omp parallel
{
#pragma omp single
{
A();
#pragma omp task B();
#pragma omp task C();
D();
#pragma omp taskwait
#pragma omp task E();
F();
}
}

现在的问题是,虽然上面的代码确实成功了重要的并行性,但任务 E 必须等待任务 D 完成,任务 F 必须等待任务 B 完成,根据图,这不是必需的。

所以我的问题是,有人可以为我提供 OpenMP 伪代码,其中 E 不会等待 D 并且 F 不会等待 B 以获取给定的依赖关系图?

1 Câu trả lời

为此,OpenMP 标准提出了 depend task的条款指示。

在您的具体情况下,我想这可以这样使用:

#include 

int a, b, c;

void A() {
a = b = c = 1;
printf( "[%d]In A: a=%d b=%d c=%d\n", omp_get_thread_num(), a, b, c );
}

void B() {
a++;
sleep( 3 );
printf( "[%d]In B: a=%d\n", omp_get_thread_num(), a );
}

void C() {
b++;
sleep( 2 );
printf( "[%d]In C: b=%d\n", omp_get_thread_num(), b );
}

void D() {
c++;
sleep( 1 );
printf( "[%d]In D: c=%d\n", omp_get_thread_num(), c );
}

void E() {
a++;
sleep( 3 );
printf( "[%d]In E: a=%d, b=%d\n", omp_get_thread_num(), a, b );
}

void F() {
c++;
sleep( 1 );
printf( "[%d]In F: b=%d c=%d\n", omp_get_thread_num(), b, c );
}

int chính() {

#pragma omp parallel num_threads( 8 )
{
#pragma omp single
{
#pragma omp task depend( out: a, b, c )
A();
#pragma omp task depend( inout: a )
B();
#pragma omp task depend( inout: b )
C();
#pragma omp task depend( inout: c )
D();
#pragma omp task depend( inout: a ) depend( in: b )
E();
#pragma omp task depend( inout: c ) depend( in: b )
F();
}
}
printf( "Finally a=%d b=%d c=%d\n", a, b, c );

trả về 0;
}

如你所见,我引入了一些变量 Một , bc我用它来定义跨任务的依赖关系。我也在调用中相应地修改它们,尽管这不是必需的(我这样做只是为了显示流程是如何处理的)。

这是我在我的机器上得到的:
~/tmp$ gcc -fopenmp depend.c
~/tmp$ ./a.out
[6]In A: a=1 b=1 c=1
[7]In D: c=2
[2]In C: b=2
[6]In B: a=2
[2]In F: b=2 c=3
[6]In E: a=3, b=2
Finally a=3 b=2 c=3

关于openmp - 给定依赖图生成 OpenMP 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35372619/

29 4 0
Bài viết được đề xuất: css - 将自定义 css 添加到 Jekyll
Bài viết được đề xuất: python - 实验数据的正态拟合
Bài viết được đề xuất: gulp - webpack uglify 的很多警告
Bài viết được đề xuất: oop - 何时以及如何为 DDD 中的实体分配唯一 ID?
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com