1
for (int i = 0; i < x_res; i++){
#pragma omp parallel for
for (int j = 0; j < y_res; j++) {
Ray hit = s.kd_tree->intersect(rays[i][j]);
}
}
Почему этот код не работает параллельно? Я не могу найти причину.Почему этот код дает SIGABRT с openMP?
трассировку выводят это:
#0 0x00007fff8ce03bf2 in __psynch_mutexwait()
#1 0x00007fff8cd331a1 in pthread_mutex_lock()
#2 0x00000001000027e4 in gomp_barrier_destroy()
#3 0x000000010000247b in gomp_team_end()
Ответ будет где-то в коде, который вы не показываете. Один из рабочих потоков, вероятно, прерывается с ошибкой. – talonmies
Не будучи выполненным параллельно, он работает хорошо. В функции пересечения отсутствует код openMP. – Luis
Таким образом, общий ответ скорее всего состоит в том, что функция пересечения не является потокобезопасной. – talonmies