2017-01-15 4 views
0

J'ai un cluster Sun Grid Engine sur AWS EC2 que j'ai configuré avec Starcluster. Chaque noeud a 4 processeurs et 16G RAM. Je voudrais soumettre un tableau de tâches qui enverra 2 tâches à la fois en utilisant chacune un nœud complet (les 4 processeurs et 16G RAM). Cependant, je ne veux pas créer un environnement parallèle avec des drapeaux comme -pe smp 4 car empiriquement cela réduit considérablement les performances. Existe-t-il un indicateur pour qsub qui indique quelque chose comme "soumettre un travail à un nœud qui a 16 Go de mémoire qui n'a été affecté à aucun autre travail"? Les drapeaux que je connais sontDemande de mémoire qui n'est pas déjà allouée dans SGE avec qsub

-l mem_free = 16g - soumettre un job au nœud si elle a 16g libre au moment -l h_vmem = 16g - tuer travail si l'utilisation de la mémoire passe au-dessus 16g

Ni de ces travaux pour mon problème. Avec mem_free = 16g, parce que les tâches utilisent initialement la mémoire lentement, qsub alloue toutes les tâches aux 2 nœuds, puis elles manquent toutes de mémoire en même temps.

Répondre

1

Je le fais avec une variable manuelle. Voici le StarCluster code to it.

Donc, fondamentalement, il crée une variable "da_mem_gb". Chaque machine a une valeur initiale égale à sa RAM. Ensuite, les travaux demandent combien de RAM ils ont besoin d'utiliser cette variable. S'ils ont besoin de toute la RAM d'une machine, alors un seul travail est assigné à cette machine à la fois.

+0

C'est génial, merci! – dylkot