Comment utiliser Mathematica dans un cluster haute performance géré ?
Informations générales
Les grands clusters de calcul se composent de nombreux nœuds, chaque nœud étant composé de plusieurs cœurs d’unité centrale. En outre, des logiciels spéciaux tels que Mathematica sont souvent disponibles sur le cluster. Les utilisateurs demandent ces ressources en se connectant à un nœud principal et en soumettant des travaux par lots au gestionnaire du cluster. Le travail s’exécute lorsque les ressources deviennent disponibles. Les deux gestionnaires de clusters les plus courants sont TORQUE et Slurm.
La parallélisation dans Mathematica utilise le modèle en étoile (hub-and-spoke) où un noyau de contrôle gère un certain nombre de noyaux subordonnés (sous-noyaux). Dans un environnement de cluster, le client exécute le noyau de contrôle et les hôtes fournissent les sous-noyaux. Le gestionnaire du cluster détermine quel nœud agit en tant que client et quels nœuds agissent en tant qu’hôtes.
Les avantages de l’exécution de Mathematica sur un cluster sont de deux ordres : Le nombre de cœurs d’unité centrale disponibles, même sur un seul nœud, est généralement plus élevé que sur un environnement de bureau d’ordinateur. De plus, la vitesse de chaque cœur d’unité centrale est individuellement plus rapide que celle d’un environnement de bureau d’ordinateur.
Exécution d’une interface utilisateur Mathematica distante
Une interface utilisateur à distance exige que l’utilisateur garde le contrôle des ressources du travail. C’est ce que l’on appelle une session interactive.
Bien que la vitesse du processeur soit généralement supérieure à celle d’un environnement de bureau d’ordinateur, l’interface utilisateur via une session interactive est plus lente que l’exécution d’une version locale de l’interface utilisateur. Cela s’explique par le fait que l’interface utilisateur fonctionne sur le cluster tandis que l’interface est transmise à l’ordinateur de l’utilisateur distant.
Une session interactive n’est pas destinée à exécuter des calculs intensifs sur l’unité centrale, mais elle sert plutôt à tester et à diagnostiquer le code. Il est typique de ne demander les ressources que d’un seul nœud.
- Connectez-vous au nœud principal via SSH avec la redirection X-Windows activée.
- Lancez une session interactive, en demandant toutes les ressources sur un seul nœud.
- Démarrez une session Mathematica.
Depuis un notebook Mathematica, utiliser la commande LaunchKernels[], ou toute autre fonctionnalité parallèle, va maintenant inclure des sous-noyaux s’exécutant depuis le cluster.
Exécution d’un script Mathematica distant
Il est supposé que
- vous êtes familier avec le lancement de sous-noyaux distants
- le cluster est un environnement Unix
- le cluster utilise un système de fichiers cloné de telle sorte que Mathematica est exécuté par le même fichier exécutable sur tous les nœuds
Si l’une des hypothèses ci-dessus n’est pas vraie, il faudra modifier ce qui suit, mais le schéma général reste le même :
- interroger le système pour trouver les noms des nœuds qui sont affectés à la tâche, et combien de noyaux par nœud sont disponibles
- lancer manuellement les noyaux distants
Par exemple, sur un cluster géré par Torque, dans un script Mathematica ou Wolfram Language, vous auriez :
(*get association of resources, name of local host and remove local host
from available resources*)
hosts = Counts[ReadList[Environment["PBS_NODEFILE"], "String"]];
local = First[StringSplit[Environment["HOSTNAME"],"."]];
hosts[local]--;
(*launch subkernels and connect them to the controlling Wolfram Kernel*)
Needs["SubKernels`RemoteKernels`"];
Map[If[hosts[#] > 0, LaunchKernels[RemoteMachine[#, hosts[#]]]]&, Keys[hosts]];
À ce stade, on peut maintenant utiliser des fonctions parallèles qui utilisent l’ensemble des ressources disponibles. Lorsque le code parallèle est complet, il est bon de fermer les noyaux Wolfram.
CloseKernels[];
[English]
Contacter l'assistance
Vous avez une question sur la facturation, l'activation ou quelque chose de plus technique, nous sommes prêts à vous aider.
1-800-WOLFRAM (+1-217-398-0700 pour les appels internationaux)
Assistance clients
Du lundi au vendredi
De 8 h à 17 h, heure du Centre des États-Unis
- Enregistrement ou activation du produit
- Informations avant la vente et commande
- Aide à l'installation et au premier lancement
Assistance technique avancée (pour les clients admissibles)
Du lundi au jeudi
De 8 h à 19 h, heure du Centre des États-Unis
Le vendredi
De 8 h 30 à 10 h et de 11 h à 17 h, heure du Centre des États-Unis
- Assistance technique prioritaire
- Assistance produits par des experts Wolfram
- Aide avec la programmation en Wolfram Language
- Assistance installation avancée