i écrire un code C++ pour l'algorithme de tri Bubble et je ne sais pas comment le rendre parallèle à l'aide OpenMP donc s'il vous plaît aidez-moi ..... Voici le code:Bubble parallèle trier par OpenMP
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <omp.h>
using namespace std;
int a[40001];
void sortArray(int [], int);
int q=0;
int _tmain(int argc, _TCHAR* argv[])
{
int x=40000;
int values[40000];
for (int i=0;i<x;i++)
{
values[i]=rand();
}
cout << "Sorting Array .......\n";
clock_t start = clock();
sortArray(values, x);
cout << "The Array Now Sorted\n";
printf("Elapsed Time : %f\n", ((double)clock() - start)/CLOCKS_PER_SEC);
cout << "\n";
}
void sortArray(int array[], int size)
{
bool swap;
int temp;
do
{
swap = false;
for (int count = 0; count < (size - 1); count++)
{
if (array[count] > array[count + 1])
{
temp = array[count];
array[count] = array[count + 1];
array[count + 1] = temp;
swap = true;
}
}
}while (swap);
}
il faut maintenant environ 13 secondes, j'ai essayé de mettre ## pragma omp parallèle pour avant "pour la déclaration" dans la méthode sortArray et il n'a pas fait de différence, il faut aussi environ 13 secondes ..... alors s'il vous plaît aidez-moi aussi vite comme vous pouvez
Vous ne pourrez pas paralléliser la boucle, car chaque itération dépend du résultat de l'itération précédente. Si vous voulez l'accélérer, utilisez n'importe quel algorithme sauf Bubblesort. Ou, mieux encore, utilisez 'std :: sort'. –
Je pense que vous avez manqué quelque chose: vous ne pouvez pas demander à plusieurs processeurs d'exécuter chacun leur propre itération, mais vous pouvez paralléliser une itération. Fondamentalement, si vous avez 6 éléments [0,1,2,3,4,5], vous pouvez avoir un processeur sur [0,1], un sur [2,3] et un sur [4,5]. À l'itération suivante, vous en avez un sur [2,3] et un sur [4,5] et vous revenez à la case départ. –