Projet - Produit Matriciel Distribué

Description

Le but de ce projet est d'implémenter un produit matriciel de la forme C=A.B où A et B sont deux matrices carrées de taille NxN. Le calcul utilisera P machines grâce à MPI.

A rendre

Le projet est à déposer sur J@lon. Les contraintes suivantes sont à respecter

  • Un fichier nom.c où nom doit être remplacé par votre nom et un fichier nom.txt
  • Le fichier nom.txt décrira brièvement l'implémentation (structures, linéarisation des matrices, communications...) ainsi que la liste des fonctionnalités implémentées (voir à la fin).
  • Ce programme devra utiliser MPI pour le calcul distribué (circulation sur anneau), et openMP pour la parallélisation des calculs
  • Il devra prendre comme paramètre deux fichiers bien formés au format texte contenant la matrice A pour le premier, et la matrice B pour le second (valeurs séparées par des espaces, une ligne du fichier par ligne de matrice).
  • Il affichera la matrice résultante ligne par ligne
  • Chaque valeur dans la matrice de sortie sera séparé du suivant par un unique espace, pas d'alignement de données n'est demandé. Ça sera donc le même format qu'en entrée.
  • Le processus seront organisés en anneau et le programme doit pouvoir traiter le cas où la matrice a plus de lignes/colonnes qu'il n'y a de machines disponibles

La note sera fonction des fonctionnalités implémentées dans la liste ci-dessous. Les points sont indiqués à titre indicatif

  1. Calcul du produit matriciel avec N multiple de P (15/20)
  2. Gestion des matrices très grandes (+2 points)
  3. Gestion du déséquilibre dans le calcul, i.e N non multiple de P (+3 points)