Dans le cadre de notre projet de mini cluster de calcul distribué, nous allons nous concentrer sur un problème spécifique qui nous permettra de mettre en évidence les capacités de Julia en matière de calcul parallèle et distribué. Le problème choisi est la résolution numérique de l’équation :
(x - 1)² + (y - 2)² = 1
qui s’écrit aussi
(x - 1)² + (y - 2)² - 1 = 0
Cette équation représente un cercle de rayon 1 centré au point (1, 2) dans un plan cartésien.
Pourquoi ce problème ?
-
Simplicité conceptuelle : L’équation d’un cercle est facile à comprendre, même pour ceux qui ne sont pas experts en mathématiques.
-
Complexité calculatoire ajustable : Bien que l’équation soit simple, nous pouvons ajuster la complexité du calcul en modifiant la précision requise et l’étendue de l’espace de recherche.
-
Parallélisation naturelle : La recherche de points satisfaisant cette équation peut être facilement divisée en tâches indépendantes, ce qui la rend idéale pour le calcul parallèle et distribué.
-
Visualisation possible : Les résultats peuvent être visualisés graphiquement, ce qui aide à vérifier la justesse de nos calculs.
-
Applicabilité réelle : Bien que simplifié, ce type de problème est représentatif de nombreuses tâches de recherche numérique en sciences et en ingénierie.
Notre approche
Nous allons résoudre ce problème en suivant ces étapes :
-
Définition de l’espace de recherche : Nous considérerons un espace où x et y varient chacun de -10 à 10.
-
Discrétisation : Nous diviserons cet espace en une grille fine de points.
-
Évaluation : Pour chaque point de la grille, nous évaluerons la proximité du résultat de l’équation à zéro.
-
Parallélisation : Nous distribuerons ces évaluations sur plusieurs threads et/ou machines.
-
Collecte des résultats : Nous rassemblerons les points qui satisfont l’équation (à une certaine tolérance près).
Cette approche nous permettra de démontrer :
- Comment Julia peut être utilisé pour exprimer ce problème de manière concise.
- Comment passer d’une implémentation séquentielle à une implémentation parallèle puis distribuée.
- L’impact de la parallélisation et de la distribution sur les performances de calcul.
Dans les sections suivantes, nous implémenterons cette solution d’abord de manière séquentielle, puis en utilisant les capacités de multithreading de Julia, et enfin en distribuant le calcul sur notre mini cluster.