
Cela fait environ un an et demi que nous avons publié un Service cloud Azure réutilisable pour provisionner un simple cluster Windows MS-MPI sans avoir à installer HPC Pack. Azure a subi de nombreux changements depuis lors et nous avons pensé qu'il serait utile de revenir sur ce sujet pour voir à quoi ressemble le paysage actuel de l'exécution d'applications Windows MPI dans le cloud.
Premièrement, les services cloud et les « machines virtuelles IaaS v1 » ont été relégués au statut « Classique » dans le portail Azure. Microsoft recommande désormais que tous les nouveaux déploiements utilisent Azure Resource Manager (ARM). Azure Resource Manager permet aux clients de soumettre un modèle déclaratif écrit en json qui définit toutes les ressources cloud telles que les machines virtuelles, les équilibreurs de charge et les interfaces réseau, qui doivent être créées dans le cadre d'une application ou d'un cluster. Des dépendances peuvent être définies entre les ressources et le gestionnaire de ressources est suffisamment intelligent pour paralléliser le déploiement des ressources là où il le peut. Cela peut rendre le déploiement d'un nouveau cluster ou d'une nouvelle application beaucoup plus rapide que l'ancien modèle. Azure Resource Manager est essentiellement l'équivalent de CloudFormation sur AWS. Il y a cependant quelques subtilités supplémentaires ici, comme la possibilité de spécifier des boucles dans le modèle. Cependant, la gestion du déploiement conditionnel des ressources est plus difficile dans les modèles ARM que dans CloudFormation. Les deux services souffrent d'essayer de prendre en charge la logique de programmation depuis JSON. Dans l’ensemble, cependant, les déploiements ARM sont beaucoup plus faciles à gérer que les déploiements classiques.
Le Modèles de démarrage rapide Azure Le projet sur Github est une excellente ressource pour trouver des modèles ARM. Déployer une application est littéralement aussi simple que de cliquer sur un bouton Déployer sur Azure et de renseigner quelques valeurs de paramètres de modèle. Sur le plan HPC, il existe un outil pratique Exemple de pack HPC disponible qui peut être utilisé pour provisionner et configurer le planificateur.
Cependant, comme nous l'avons évoqué dans notre article de blog original, l'utilisation de HPC Pack n'est peut-être pas le meilleur choix si vous débutez avec MPI et souhaitez simplement lancer un nouveau cluster MPI, tester votre application, puis tout arrêter à nouveau. . Bien que HPC Pack offre les capacités d'un planificateur HPC complet, cette puissance supplémentaire se fait au prix d'une certaine surcharge de ressources sur le nœud de soumission (configuration d'Active Directory, installation de SQL Server, etc.). Cela peut s'avérer excessif si vous souhaitez simplement qu'un cluster unique exécute une application MPI.
Le service Azure Batch est une autre option potentiellement plus légère pour exécuter des applications Windows MPI dans le cloud. Récemment, Microsoft a annoncé son support pour exécuter des tâches MPI multi-instances sur un pool de VM. Cela semble être une option utile pour ceux qui souhaitent automatiser l'exécution des tâches MPI, mais cela nécessite un certain investissement de ressources de développement pour se familiariser avec le service avant que les tâches MPI puissent être exécutées.
Nous pensons qu'il reste encore de la place pour un modèle Azure Resource Manager qui 1) lance un cluster Windows MPI simple sans la surcharge de HPC Pack et 2) permet d'exécuter des tâches MPI à partir de la ligne de commande ou d'un script batch à partir de n'importe quel système d'exploitation. système.
Sur ce deuxième point ci-dessus, un autre développement intéressant depuis notre message initial est que Microsoft a décidé de supporte officiellement SSH pour un accès à distance. Depuis cette annonce, le version préliminaire du code a été mis à disposition sur GitHub.
Ainsi, compte tenu de ces éléments, nous avons décidé de créer un modèle ARM simple pour atteindre ces deux objectifs. Pour quelqu'un qui débute avec MS-MPI, nous pensons qu'il s'agit d'une option plus simple pour exécuter votre code sur un cluster Windows dans Azure.
Voici un exemple d'utilisation de base :
- Cliquez sur le bouton Déployer sur Azure dans la fenêtre Projet Github. Remplissez les paramètres du modèle. Ici, un cluster Standard_D2 à 2 nœuds est en cours de provisionnement :

- Notez l'adresse IP publique attribuée au cluster une fois le déploiement terminé.
- Le modèle activera SSH et SFTP sur tous les nœuds. Téléchargez votre application sur la première VM du cluster (N0). Ici, nous utilisons l'application hello world de ce blog.
$ sftp ryan@40.76.38.78 Mot de passe de ryan@40.76.38.78 : Connecté à 40.76.38.78. sftp> put MPIHelloworld.exe Téléchargement de MPIHelloworld.exe vers C:/Users/ryan/MPIHelloworld.exe MPIHelloworld.exe 100 % 8192 8.0 Ko/s 00:00 sftp> bye
- SSH dans N0, copiez le binaire MPI dans le répertoire SMB partagé (C:\shared) et exécutez-le. Entrez votre mot de passe comme
argument du commutateur -pwd (expurgé ci-dessous). L'argument de ligne de commande -savecreds enregistrera en toute sécurité vos informations d'identification sur
les nœuds de calcul afin que vous n'ayez pas à spécifier le mot de passe lors des futurs appels mpiexec. Voir ici pour plus de détails.$ ssh ryan@40.76.38.78 Mot de passe de ryan@40.76.38.78 : Microsoft Windows [Version 6.3.9600] (c) 2013 Microsoft Corporation. Tous droits réservés. ryan@N0 C:\Users\ryan>copy MPIHelloworld.exe C:\shared 1 fichier(s) copié(s). ryan@N0 C:\Users\ryan>cd C:\shared ryan@N0 C:\shared>mpiexec -hosts 2 n0 1 n1 1 -pwd ****** -savecreds MPIHelloworld.exe Rang 1 a reçu la chaîne Hello World de Rang 0
Et c'est tout! Pour ceux qui sont plus enclins à l'interface graphique, RDP est également ouvert à toutes les instances du cluster MPI. Dirigez-vous vers le Page du projet Github pour plus de détails.
