Я пытаюсь распараллелить триангуляцию Гибаса Столфи Делоне с помощью openmp.
Здесь нужно распараллелить две вещи: mergesort(), которую я сделал, и divide(), где я застрял. Я испробовал все возможные подходы, но тщетно.
Используемый подход (разделяй и властвуй) в разделеть() такой же, как и в методе сортировки слиянием(), но применение той же техники распараллеливания (разделы omp) работает только для сортировки слиянием.
Я попробовал метод распараллеливания, показанный здесь, но даже он не работает. Я где-то читал о вложенном параллелизме, но не знаю, как его реализовать. Кто-нибудь может объяснить, как распараллеливается алгоритм «разделяй и властвуй»?
КОД: дважды вызывалась сортировка слиянием в основной функции и конструкции прикладных разделов. То же самое для функции разделения не работает
#pragma omp parallel
{
#pragma omp sections nowait
{
#pragma omp section
{
merge_sort(p_sorted, p_temp, 0, n/2);
}
#pragma omp section
{
merge_sort(p_sorted, p_temp, (n/2)+1, n-1);
}
}
}