Я должен сделать программу, которая рассчитывает Пи по методу Монте-Карло. Поэтому я использую библиотеку omp для создания потоков, ошибки не отображаются, и она действительно работает, если я установил количество потоков только в 1 поток. Но если я попытаюсь с 2 потоками или более, цикл полностью игнорируется. Любая идея, почему?
#pragma omp parallel num_threads(threads) private(nthreads,points_inside) //parallel region
{
int tid_set_clock = omp_get_thread_num() + 1;
srand(time(0)*tid_set_clock);
double coord[2];//coordinates
double dist_cent;//distance from center of a unitary circle to any point
nthreads = omp_get_num_threads();
for(int i=0;i<(num_points*(1/nthreads));i++){//generaion of N points
coord[0] = 2*((double)rand()/(double)(RAND_MAX));
coord[1] = 2*((double)rand()/(double)(RAND_MAX));
dist_cent = sqrt(pow((1-coord[0]),2)+pow((1-coord[1]),2));
if(dist_cent>=1){
points_inside--;
}
}
}
Это параллельная секция, если количество потоков равно 1, оно будет работать нормально, но если 2 или больше, то просто не вводится для цикл
Есть идеи о том, что происходит?