私は並列プログラミングに慣れていないので、起動できるスレッドの最大数を知りたいと思っていました。openMpの最大スレッド
私はこの
#include<stdio.h>
#include<omp.h>
void pooh(int id,int a[])
{
a[id]=a[id]-1 ;
printf("%d\n",id) ;
}
int main()
{
int a[1001] ;
int i ;
for(i=0;i<1000;i++)
{
a[i]=i+1 ;
}
omp_set_num_threads(1000) ;
#pragma omp parallel
{
int id=omp_get_thread_num() ;
pooh(id,a) ;
}
return 0 ;
}
を試みたが、私はOMP_SET_NUM_THREADS(10000)をしようとしたとき、 プログラムが実行されません。私はジョブを完了させるために起動できるスレッドの最大数を知りたかったのです。
アプローチが非常に分かりやすいかどうかわかりませんが、バイナリ検索を試すことができます - 動作するまでは500回、次に250回、次に125回試してみてください。次に、数字の下限と上限を知り、その間隔を再び半分に分割し始めます。 –