gpt4 book ai didi

c - omp_set_num_threads 我应该每次都使用它还是可以设置一次?

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:27 26 4
gpt4 key购买 nike

我有一个连续调用大约 100 个函数的程序 - 我想为每个函数使用 omp_set_num_threads。我应该在每次调用它之前使用它吗?或者我可以使用它一次吗,假设在 int main(int argc, char **argv) 之后它会被用于每个函数调用?

看起来像这样:

omp_set_num_threads(val);
if(call_me_i)
call_ith_function;


omp_set_num_threads(val);
if(call_me_i+1)
call_ith+1_function;
...

最佳答案

简答:你只需要设置一次线程数,除非你以后想改变它。一旦设置,它就会被“记住”。

在我看来,您似乎有一些单独的函数,其中包含一些并行代码,并且您想确保它们确实并行运行。当您有大量的 if 语句时,您通常需要考虑一个 switch

omp_set_num_threads(val); //<<< set just once
switch(whatFunction) {
case fun1:
callFunction1();
break;
case fun2:
callFunction2();
break;
default:
// etc
}

void callFunction1() {
int ii;
#pragma omp parallel
// <<<< just this for loop will run in parallel >>>>>
for(ii=0; ii<100; ii++) {
// do stuff
}
printf("done\n"); printf("really done\n"); printf("totally done\n"); // << NOT in parallel
}

void callFunction2() {
int jj;
for(jj=0; jj<100; jj++) {
// do stuff
} // <<<< this loop does NOT run in parallel since there is no #pragma in front of it
}

关于c - omp_set_num_threads 我应该每次都使用它还是可以设置一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22311851/

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