gpt4 book ai didi

multithreading - 我正在运行哪个 openmp 时间表?

转载 作者:行者123 更新时间:2023-12-02 08:13:53 25 4
gpt4 key购买 nike

如何在运行时检查 openmp 计划?

我使用并行循环和运行时计划编译我的代码

#pragma omp parallel for schedule(runtime) collapse(2)
for(j=1;j>-2;j-=2){
for(i=0;i<n;i++){
//nested loop code here
}
}

并且我指定了环境变量 OMP_SCHEDULE=dynamic,50

我如何在运行时检查我的程序是否实际采用了 OMP_SCHEDULE 变量?

我正在使用 openmp 3.1 和 gcc 4.7.3

最佳答案

我下载了http://www.openmp.org/wp-content/uploads/openmp-4.5.pdf

然后转到“C/C++ Stub Routines”部分,找到了这个

void omp_get_schedule(omp_sched_t *kind, int *chunk_size)
{
*kind = omp_sched_static;
*chunk_size = 0;
}

然后做了这个测试

/*                                                                                                                                                                            
typedef enum omp_sched_t {
omp_sched_static = 1,
omp_sched_dynamic = 2,
omp_sched_guided = 3,
omp_sched_auto = 4
} omp_sched_t;
*/

#include <omp.h>
#include <stdio.h>
int main(void) {
omp_sched_t kind;
int chunk;
omp_get_schedule(&kind, &chunk);
printf("%d %d\n", kind, chunk);
}

并编译

gcc -fopenmp -O3 foo.c

然后

export OMP_SCHEDULE=static,50
./a.out
1 50
export OMP_SCHEDULE=dynamic,100
2 100

请注意,omp_get_schedule 仅报告运行时调度定义 OMP_SCHEDULE。如果您更改日程安排,例如

#pragma omp parallel for schedule(static,1)

并定义 OMP_SCHEDULE=dynamic,100 然后 omp_get_schedule 仍然报告动态调度和 block 大小 100。

关于multithreading - 我正在运行哪个 openmp 时间表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43736622/

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