Open MP (niveau 3/3 TP final)

Europe/Paris
Universe

Universe

ITIS Evry
Description
Ecriture d'un code parallèle en utilisant les pragma openMP.

Le but est de calculer les 100 premières décimales de PI. L'étudiant à le choix de son algorithme, le site wikipédia pourra fournir l'essentiel des informations sur les méthodes de calcul.

Les pré-requis sont :
  1. utilisation de openMP
  2. programmation en C/C++ 
  3. fournir un algo séquentiel
  4. fournir 1 ou plusieurs implémentation openMP 
  5. donner pour l'algo séquentiel et la solution openMP une complexité algorithmique ainsi qu'une complexité totale.
Attention :

Comment vérifier que votre résultat est juste ? Il faut pour celà trouver un site qui vous donne les 100 premières décimales de PI pour comparer.

Comment encoder 100 décimales en utilisant les typages C/C++ ?

durée : 2h 30 mn. correction possible : void main() { const int kN = 100000000; long double top = 0.L; long double bottom = 0.L; long double kStep = 1.L/kN; long double sum = 0.L; #pragma omp parallel private(top, bottom) { #pragma omp for reduction(+:sum) for(int i = 0; i < kN; i++) { top = 4.L/(1.L + (kStep*i)*(kStep*i)); bottom = 4.L/(1.L + (kStep*(i+1))*(kStep*(i + 1))); sum += (top + bottom)*kStep/2.L; } // i } std::cout.precision(16); std::cout << "pi = " << sum << "\n"; }
L'ordre du jour de cette réunion est vide