code série et parallèle (en utilisant mpi) pour l'histogramme d'une image

quelqu'un peut-il m'aider dans l'écriture de code pour la génération d'histogramme d'une image en langage C? Je connais la logique de base mais pas capable d'écrire du code. Je veux un programme parallèle pour le même.

 for(i=0; i<256;i++)
 histogram[i]=0;   
  for(i=0;i
0

2 Réponses

Je pense que j'utiliserais des threads (vs. process) pour paralléliser cette tâche (pthreads sur Unix). Ce faisant, tous les threads peuvent partager le même pool de données (plutôt que d'avoir à copier des quantités volumineuses de données d'image à travers les limites du processus).

Une approche consiste à interroger un appel système pour déterminer le nombre de threads de processeur (n) du système. Ensuite, allouez (n) des tableaux d'histogrammes séparés. Partitionner l'image en (n) tranches horizontales. Ensuite, créez (n) threads et passez un nombre différent (1..n) à chacun. Chaque thread traite les données de l'histogramme pour une tranche différente et place les résultats dans un tableau d'histogrammes différent.

Le thread principal attend que les threads de travail (n) se terminent, puis ajoute les matrices d'histogrammes (n) ensemble dans un tableau d'histogrammes final.

C'est une façon d'aborder le problème.

0
ajouté
merci beaucoup, c'est vraiment utile ..
ajouté l'auteur Dharmita bhatt, source

OpenMP makes this nice and simple:

#pragma omp for
 for(i=0; i<256;i++)
 histogram[i]=0;   
  for(i=0;i
0
ajouté
merci pour votre aide. Je dois l'implémenter en utilisant mpi sur windows os.
ajouté l'auteur Dharmita bhatt, source