Meilleures pratiques pour l’utilisation de machines virtuelles HB et HC

Vue d’ensemble

Les machines virtuelles de série H sont les dernières offres HPC sur Azure. Les machines virtuelles de série HB offrent des processeurs AMD EPYC de 60 cœurs, optimisés pour l’exécution d’applications avec des exigences élevées en bande passante mémoire, telles que l’analyse explicite des éléments finis, la dynamique fluide et la modélisation météorologique. Les machines virtuelles de la série HC ont des processeurs Intel Skylake de 44 cœurs et sont optimisées pour les applications nécessitant des calculs de processeur intensifs, tels que la dynamique moléculaire et l’analyse implicite des éléments finis. Les machines virtuelles HB et HC sont dotées de 100 Go/s EDR InfiniBand et prennent en charge les derniers types et versions MPI. Le Guide des applications HPC de mise à l’échelle contient plus d’informations sur la mise à l’échelle des applications HPC sur des machines virtuelles HB et HC.

Azure CycleCloud prend en charge les nouvelles machines virtuelles de la série H hors de la boîte, mais pour une expérience et des performances optimales, suivez les instructions et les meilleures pratiques de cette page.

CentOS 7.6 HPC Marketplace Image

L’image de la Place de marché HPC CentOS 7.6 contient tous les pilotes pour activer l’interface InfiniBand ainsi que les versions pré-compilées de toutes les variantes MPI courantes installées dans /opt. Pour plus d’informations sur ce que l’image a à offrir, consultez ce billet de blog.

Pour utiliser l’image HPC CentOS 7.6 lors de la création de votre cluster, cochez la case Image personnalisée sur le paramètre Paramètres avancés et entrez la valeur OpenLogic:CentOS-HPC:7.6:latest.

CentOS HPC Image

Pour prendre en charge les anciennes séries de machines virtuelles H16r et conserver les nœuds principaux du cluster verrouillés dans la même version de CentOS, l’image par défaut « Cycle CentOS 7 » dans la liste déroulante du système d’exploitation de base déploie CentOS 7.4. Bien que cela soit correct pour la plupart des séries de machines virtuelles, LES machines virtuelles HB/HC nécessitent CentOS 7.6 ou une version ultérieure et un autre pilote Mellanox.

Désactiver SElinux dans CycleCloud < 7.7.4

Par défaut, SElinux considère uniquement /root et /home comme des chemins valides pour les répertoires d’accueil. Tous les utilisateurs disposant de répertoires d’accueil en dehors de ces chemins d’accès empêchent SElinux de bloquer SSH d’utiliser despairs de clés SSH dans le répertoire d’accueil de l’utilisateur. Dans les clusters CycleCloud, les répertoires d’accueil utilisateur sont créés dans /shared/home. Bien que Les versions cycleCloud antérieures à la version 7.7.4 définissent automatiquement le chemin /shared/home comme contexte SElinux homedir valide, les versions antérieures ne prennent pas en charge cela. Pour vous assurer que SSH fonctionne correctement pour les utilisateurs sur le cluster, vous devez désactiver SElinux dans le modèle de cluster :

[[node defaults]]
    [[[configuration]]]
    cyclecloud.selinux.policy = permissive

Exécution de travaux MPI avec Slurm

Les travaux MPI s’exécutant sur des machines virtuelles HB/HC doivent s’exécuter dans le même groupe de machines virtuelles identiques (VMSS). Pour garantir un positionnement de mise à l’échelle automatique appropriée des machines virtuelles pour les travaux MPI exécutés avec Slurm, veillez à définir l’attribut suivant dans votre modèle de cluster :

[[nodearray execute]]
Azure.SingleScaleset = true
Azure.MaxScalesetSize = 300
Azure.Overprovision = true

Obtention de clés à utiliser avec OpenMPI et MPICH

Certaines variantes MPI vous obligent à spécifier le PKEY InfiniBand lors de l’exécution du travail. La fonction Bash suivante peut être utilisée pour déterminer le PKEY :

get_ib_pkey()
{
    key0=$(cat /sys/class/infiniband/mlx5_0/ports/1/pkeys/0)
    key1=$(cat /sys/class/infiniband/mlx5_0/ports/1/pkeys/1)

    if [ $(($key0 - $key1)) -gt 0 ]; then
        export IB_PKEY=$key0
    else
        export IB_PKEY=$key1
    fi

    export UCX_IB_PKEY=$(printf '0x%04x' "$(( $IB_PKEY & 0x0FFF ))")
}