Das ist, was ich bis jetzt habe, funktioniert die regelmäßige merge sort perfekt aber ich bin nicht sicher, ob was ich für die parallele merge sortierung mit dem openMP richtig gemacht habe oder nicht . Ziel ist es, die Merge-Sortierung zu optimieren, indem man openMP darin integriert und Daten aus einer Klasse von Anwendungen verwendet. Für die Daten nahm ich an, dass ich es Threads machen würde, da die Verwendung von mehreren Threads es zum Besseren optimieren sollte. Irgendwelche Tipps, wo ich die Threads hier umsetzen sollte oder Tipps?Wie merge merge sort zu parallel merge sort
void mergeSort(int arr[], int start, int end)
{
if(start < end)
{
int middle = (start + end)/2;
/* sort left half */
mergeSort(arr, start, middle);
/* sort right half */
mergeSort(arr, middle + 1, end);
/* merge the two halves */
merge(arr, start, end);
}
}
void mergesort_parallel_omp(int a[], int start, int end)//parallelized version
{
int threads = 2;
if(start < end)
{
int middle = (start + end)/2;
omp_set_nested(1); /////
omp_set_num_threads(threads);
#pragma omp parallel sections
{
#pragma omp section
mergesort_parallel_omp(a, start, middle);
#pragma omp section
mergesort_parallel_omp(a, middle + 1, end);
}
merge(a, start, end);
}
}
Mögliche Duplikate von [Parallel Merge-Sort in OpenMP] (https://stackoverflow.com/questions/13811114/parallel- merge-sort-in-openmp) – Zulan