2010-07-29 3 views
3

J'essaie d'obtenir sun gridending (sge) pour exécuter les processus séparés d'un travail MPI sur tous les noeuds de mon cluster. Ce qui se passe, c'est que chaque nœud a 12 processeurs, donc SGE assigne 12 de mes 60 processus à 5 nœuds distincts. Je voudrais attribuer 2 processus à chacun des 30 nœuds disponibles, car avec 12 processus (alignements de séquences d'adn) s'exécutant sur chaque nœud, les nœuds manquent de mémoire.Diffusion d'un travail sur différents noeuds d'un cluster dans le moteur de grille solaire (SGE)

Donc je me demande s'il est possible d'obtenir explicitement que SGE affecte les processus à un nœud donné?

Merci,

Paul.

Répondre

0

Vérifiez "allocation_rule" dans la configuration de l'environnement parallèle; soit avec cela ou alors en spécifiant $ pe_slots pour allocation_rule et ensuite en utilisant l'option -pe pour qsub vous devriez être capable de faire ce que vous demandez ci-dessus. À partir d'un hôte administrateur, exécutez «qconf -msconf» pour modifier la configuration du planificateur.

0

Cela fera apparaître une liste d'options de configuration dans un éditeur. Cherchez-en un appelé "load_factor". Définissez la valeur sur "-slots" (sans les guillemets).

Ceci indique au planificateur que la machine est la moins chargée lorsqu'elle a le moins de slots utilisés. Si vos hôtes exec ont chacun un nombre similaire de slots, vous obtiendrez une distribution égale. Si vous avez des hôtes exec qui ont plus d'emplacements que les autres, ils seront préférés, mais votre distribution sera toujours plus égale que la valeur par défaut de load_factor (dont je ne me souviens pas, ayant changé cela dans mon cluster pendant un certain temps depuis).

Vous devrez peut-être définir les emplacements sur chaque hôte. Je l'ai fait moi-même parce que j'ai besoin de limiter le nombre de travaux sur un ensemble particulier de boîtes à leur maximum parce qu'ils n'ont pas autant de mémoire que certains autres. Je ne sais pas si c'est nécessaire pour cette configuration de load_factor, mais si c'est le cas, vous pouvez ajouter un consommable de slots à chaque hôte. Pour ce faire, avec "qconf -me hostname", ajoutez une valeur aux "complex_values" qui ressemblent à "slots = 16" où 16 est le nombre d'emplacements que vous voulez que cet hôte utilise.

1

Vous pouvez le faire en créant une file d'attente dans laquelle vous pouvez définir la file d'attente utilise seulement 2 processeurs sur 12 processeurs dans chaque nœud.

Vous pouvez voir la configuration de la file d'attente actuelle en utilisant la commande

qconf -sq queuename 

vous verrez ci-dessous dans la configuration de la file d'attente. Cette file d'attente est nommée de telle sorte qu'elle n'utilise que 5 hôtes d'exécution et 4 slots (processeurs) chacun.

.... 
slots     1,[master=4],[slave1=4],[slave2=4],[slave3=4],[slave4=4] 
.... 

utilisation de commande suivante pour modifier la configuration de la file d'attente

qconf -mq queuename 

puis modifiez les 4 en 2.

0

Ce que j'ai appris de notre sysadmin.Mettre cette demande de ressources dans votre script SGE d'emploi:

#$ -l nodes=30,ppn=2

Demandes 2 MPI p rocessus p er n ode (PPN) et 30 nœuds. Je pense qu'il n'y a aucune garantie que cette mise en page 30x2 fonctionnera sur un cluster de 30 nœuds si d'autres utilisateurs exécutent également beaucoup de tâches, mais peut-être que vous pouvez essayer.

+0

Cela ressemble à quelque chose en cours d'exécution d'un kludge de compatibilité PBS. Cela ne fonctionnera pas sur un SGE hors de la boîte. –

Questions connexes