Contenu principal

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

Exécuter du code sur des pools parallèles

Qu'est-ce qu'un pool parallèle ?

Un pool parallèle est un ensemble de MATLAB® workers sur un cluster de calcul ou un desktop. Par défaut, un pool parallèle démarre automatiquement lorsque cela est nécessaire pour les fonctionnalités de langage parallèle telles que parfor. Vous pouvez spécifier le cluster par défaut dans vos préférences parallèles. Le panneau des préférences affiche votre cluster par défaut lorsque vous sélectionnez Parallel Preferences dans le menu Parallel. Vous pouvez également spécifier le cluster par défaut dans le menu Parallel. Alternativement, vous pouvez choisir la taille du cluster et du pool en utilisant respectivement parcluster et parpool, sur la ligne de commande MATLAB. Voir l'image pour plus de détails.

Les workers d'un pool parallèle peuvent être utilisés de manière interactive et communiquer entre eux pendant toute la durée du job. Vous pouvez afficher vos jobs parpool dans le Job Monitor. Bien que ces agents de pool soient réservés à votre usage interactif, ils ne sont pas disponibles pour les autres utilisateurs. Vous ne pouvez avoir qu'un seul pool parallèle à la fois à partir d'une session client MATLAB. Dans MATLAB, le pool parallèle actuel est représenté par un objet parallel.Pool.

Démarrer et arrêter automatiquement un pool parallèle

Par défaut, un pool parallèle démarre automatiquement lorsque cela est nécessaire pour certaines fonctionnalités de langage parallèle. De nombreuses fonctions peuvent démarrer automatiquement un pool parallèle, notamment :

Vos préférences parallèles spécifient sur quel cluster le pool s'exécute. Pour accéder à vos préférences, dans l'onglet Home, dans la section Environment, cliquez sur Parallel > Parallel Preferences .

Dans vos préférences parallèles, vous pouvez désactiver l'option d'ouverture ou de fermeture automatique du pool. Si vous désactivez l'option permettant d'ouvrir automatiquement un pool et que vous utilisez une fonctionnalité Parallel Computing Toolbox sans pool parallèle ouvert, votre code s'exécutera sur le client.

Autres méthodes pour démarrer et arrêter les pools

Si vous choisissez de ne pas ouvrir le pool automatiquement, vous pouvez contrôler le pool avec les techniques suivantes.

Contrôler le pool parallèle depuis le desktop MATLAB

Vous pouvez utiliser l'indicateur d'état parallèle dans le coin inférieur gauche du desktop MATLAB pour démarrer un pool parallèle manuellement.

The parallel status indicator, including a drop down menu showing options for starting a parallel pool and inspecting your parallel preferences.

Dans MATLAB Online, l'indicateur d'état parallèle n'est pas visible par défaut. Vous devez d’abord démarrer un pool parallèle en utilisant parpool ou l’une des fonctions qui démarrent automatiquement un pool parallèle.

Cliquez sur l’icône de l’indicateur et sélectionnez Start Parallel Pool . Le cluster de pool est spécifié par votre cluster par défaut. Votre cluster par défaut est indiqué par une coche dans le menu Parallel > Default Cluster.

Les options de menu sont différentes lorsqu'un pool est en cours d'exécution. Tu peux :

  • Afficher le nombre de workers et le nom du cluster

  • Modifier le délai jusqu'à l'arrêt automatique

  • Fermer le pool parallèle

The parallel status indicator, highlighted blue to indicate that a parallel pool is running. A tooltip shows that a parallel pool has been running for about one minute and will shut down if still idle in 29 minutes.

Pour arrêter un pool, vous pouvez également sélectionner Shut Down Parallel Pool .

The parallel status indicator, highlighted blue to indicate that a parallel pool is running and including a menu showing options for shutting down the parallel pool and inspecting your parallel preferences.

Interface de programmation

Démarrer un pool parallèle.  Vous pouvez démarrer et arrêter un pool parallèle par programmation en utilisant les paramètres par défaut ou en spécifiant des alternatives.

Pour ouvrir un pool parallèle en fonction de vos paramètres par défaut :

parpool

Pour ouvrir un pool d'une taille spécifique :

parpool(4)

Pour utiliser un cluster autre que celui par défaut et spécifier où le pool s'exécute :

parpool('MyCluster',4)

Vous pouvez exécuter un pool parallèle sur différents environnements parallèles. Pour plus d'informations, voir Choose Between Thread-Based and Process-Based Environments.

Fermer un pool parallèle.  Pour obtenir le pool parallèle actuel et utiliser cet objet lorsque vous souhaitez arrêter le pool :

p = gcp;
delete(p)

Assurez-vous qu'aucun pool parallèle n'est en cours d'exécution.  Lorsque vous émettez la commande gcp sans arguments, vous risquez d’ouvrir un pool par inadvertance. Pour éviter ce problème :

delete(gcp('nocreate'))

Remarque

Pour arrêter un pool parallèle pendant son démarrage, appuyez sur Ctrl+C ou Ctrl+Pause. Sur Apple macOS, vous pouvez également utiliser Commande. (la touche Commande et la touche point).

Facteurs qui affectent la taille du pool

Parallel Computing Toolbox™ peut prendre en charge des pools parallèles avec jusqu'à 2 000 workers. Lorsque vous créez un pool parallèle, les valeurs des propriétés d’objet cluster NumWorkers et PreferredPoolNumWorkers affectent la taille du pool parallèle que vous obtenez.

Propriété NumWorkers du cluster

La propriété de cluster NumWorkers est une limite stricte sur le nombre de workers disponibles pour le cluster.

  • Pour les clusters MATLAB Job Scheduler, le logiciel détermine la valeur de la propriété NumWorkers à partir du nombre de workers exécutés dans le cluster.

  • Pour les clusters locaux exécutés sur le client et les clusters de planificateur tiers, vous pouvez spécifier la valeur de la propriété NumWorkers dans le profil du cluster.

Vous ne pouvez pas créer un pool parallèle plus grand que la valeur de la propriété NumWorkers.

Propriété PreferredPoolNumWorkers du cluster

La propriété d'objet cluster PreferredPoolNumWorkers spécifie une préférence pour la taille des pools que le logiciel crée avec l'objet cluster. Il ne s’agit pas d’une exigence ou d’une demande d’un nombre spécifique de workers. La valeur par défaut de la propriété PreferredPoolNumWorkers dépend du type de cluster. Vous pouvez modifier cette valeur dans le profil du cluster. Voici une liste des types de cluster et de leurs valeurs PreferredPoolNumWorkers par défaut :

  • MATLAB Planificateur de jobs, cloud partagé et clusters de planificateurs tiers — 32

  • Clusters de cloud personnels — Inf

  • clusters de processus locaux — Inf (depuis R2023b)

    Dans R2023a : Pour les profils locaux, la valeur par défaut est la valeur de la propriété NumWorkers.

Technique de création de pool

Les valeurs des propriétés NumWorkers et PreferredPoolNumWorkers combinées à la technique que vous utilisez pour créer le pool déterminent la taille réelle de votre pool parallèle.

Technique de création de poolTaille réelle du pool
  • Vous avez activé la création automatique de pool et vous exécutez une fonction qui peut démarrer automatiquement un pool.

  • Vous démarrez un pool parallèle manuellement à l'aide de l'indicateur d'état parallèle dans le coin inférieur gauche du desktop MATLAB

  • Vous appelez la fonction parpool sans spécifier d’argument de taille de pool.

MATLAB utilise la valeur de la propriété PreferredPoolNumWorkers du profil de cluster pour déterminer le nombre maximal de workers dans le pool. Si MATLAB ne peut pas démarrer un pool avec autant de workers que spécifié dans la propriété PreferredPoolNumWorkers, vous obtenez un pool plus petit sans aucune erreur. La taille du pool ne peut pas dépasser la valeur NumWorkers.

Vous exécutez la fonction parpool et spécifiez la taille du pool sous forme d’entier.

MATLAB tente de démarrer un pool avec le nombre exact de workers que vous demandez.

  • Si la valeur spécifiée ne dépasse pas la valeur de la propriété NumWorkers, vous obtenez un pool avec le nombre de workers spécifié.

  • Si la valeur spécifiée dépasse la valeur de la propriété NumWorkers, MATLAB génère une erreur.

Vous exécutez la fonction parpool et spécifiez la taille du pool sous la forme d’une plage d’entiers.

MATLAB tente de créer un pool avec la plus grande valeur possible dans cette plage sans dépasser la valeur de la propriété NumWorkers.

  • Si la limite inférieure de la plage est supérieure à la valeur de la propriété NumWorkers, MATLAB génère une erreur.

  • Si la limite supérieure de la plage dépasse la valeur de la propriété NumWorkers, vous obtenez la plus grande taille de pool possible jusqu'à la valeur de la propriété NumWorkers.

Priorité pour la sélection des clusters

Pour la sélection du cluster sur lequel le pool s'exécute, la priorité est déterminée par les éléments suivants :

  1. L'argument d'objet cluster de ligne de commande remplace le paramètre de profil par défaut et utilise le cluster identifié par le profil 'MyProfile'.

    c = parcluster('MyProfile');
    p = parpool(c);
  2. Le cluster est spécifié dans le profil par défaut.

    p = parpool;

Voir aussi

| | | | | | |

Rubriques