2013-06-09 13 views
2

Je travaille sur un cluster avec beaucoup de nœuds, et chaque nœud a deux gpus. Dans le cluster, je ne peux pas lancer "nvidia-smi" pour vérifier quel périphérique est occupé. Mon code sélectionne le meilleur périphérique (avec cudaChooseDevice) en termes de capacité, mais lorsque le cluster m'attribue le même nœud pour deux tâches différentes, j'ai deux tâches en cours d'exécution sur le même GPU.Comment choisir un périphérique CUDA non occupé?

Ma question est: Il existe un moyen de vérifier au moment de l'exécution si le périphérique est occupé ou non?

Merci

Répondre

3

Vos gestionnaires de cluster doivent installer et à utiliser la gestion de cluster (travail-ordonnancement) un logiciel qui leur permet d'assigner et de suivre les GPU comme les processeurs et la mémoire. Il y a un certain nombre de planificateurs de travail qui peuvent le faire. Même sans prise en charge explicite du GPU dans le planificateur de travaux, il est possible de créer des scripts d'entrée/sortie de travail qui affecteront correctement les GPU.

Vous pouvez effectivement inclure la même fonctionnalité que nvidia-smi utilise en intégrant NVML dans vos applications. Toute requête ou élément de données rapporté par nvidia-smi est accessible par programmation via NVML.

Je ne comprends pas non plus pourquoi vous n'avez pas pu lancer un script pour votre travail qui vérifie quels périphériques sont occupés en utilisant nvidia-smi, puis choisit un périphérique non occupé. Mais gardez à l'esprit que toute vérification de l'exécution que vous pourriez faire serait soumise au comportement d'autres applications. Si ces applications (lancées par vous ou par d'autres utilisateurs) ont un comportement inhabituel, votre vérification de l'exécution peut facilement être rejetée.

+0

Merci beaucoup, je vais voir NVML. Le cluster utilise Slurm, et ne vérifie que s'il y a des ressources libres, mais je n'ai pas les informations d'ID GPU de Slurm avant de lancer ma tâche ... – Pablo

+0

SLURM peut gérer les GPU via la [ressource générique] (https: // computing. llnl.gov/linux/slurm/gres.html) mécanisme. Voici quelques instructions [étape par étape] (http://www.hpc-ch.org/wp/wp-content/uploads/2011/11/CSCS_Schedule_GRES_with_SLURM.pdf) pour vos gestionnaires de cluster. Si la configuration est correcte, il n'est pas nécessaire d'inspecter la situation du GPU depuis votre travail, car seuls les GPU demandés seront assignés, et vous ne pourrez même pas accéder à d'autres GPU sur le nœud. –

Questions connexes