更新时间:2023-11-28 23:43:22
我已经解决了这一问题,方法是打开一个嵌套的并行区域来查询所有线程:
I've solved it, by opening a nested parallel region to query all threads:
int get_nested_num_threads(){
int threads=1;
#pragma omp parallel shared(threads)
{
#pragma omp single
{
threads = omp_get_num_threads();
#pragma omp parallel shared(threads)
{
#pragma omp single
{
threads *= omp_get_num_threads();
}
}
}
}
return threads;
}
据我所知,在这种情况下,您无需在C中使用firstprivate
和lastprivate
.但是您必须在Fortran中做到这一点.
As far as I know, you do not need to use firstprivate
and lastprivate
in C for this case. But you have to do it in Fortran.