Lancement de Star-CCM+ avec SGE Lionel Meister IUSTI, UMR CNRS 6595 lionel.meister@polytech.univ-mrs.fr 28 septembre 2010 A ce jour, la partition Dix est la seule partition du parc sur laquelle on peut lancer Star-CCM+. Ce tutoriel explique donc comment faire pour lancer un job Star-CCM+ sur cette partition. On ne lance en réalité pas directement Star-CCM+ en batch, mais l exécution d une macro Java par Star-CCM+. 1 Préparation de la macro Java Commençons donc par préparer la macro Java. Le plus simple pour générer une macro Java à exécuter est de l enregistrer pas à pas sous Star-CCM+ en utilisant l enregistreur de macros. On peut bien sûr écrire un fichier soi-même à partir de rien. Dans notre exemple, la macro qu on lance va : charger la simulation donnée en argument ; initialiser la solution ; lancer la simulation. Ce fichier s appelle lancement.java : 1 // STAR - CCM + macro : lancement. java 2 package macro ; 3 4 import java. util.*; 5 import star. common.*; 6 7 public class lancement extends StarMacro { 8 public void execute () { 9 execute0 (); 10 } 11 private void execute0 () { 12 Simulation simulation_0 = getactivesimulation (); 13 Solution solution_0 = simulation_0. getsolution (); 14 solution_0. clearsolution (); 15 solution_0. initializesolution (); 16 simulation_0. getsimulationiterator ().run (); 17 } 18 } 1
Rappelons qu il n est pas nécessaire d écrire soi-même la macro Java : mieux vaut passer par l enregistreur de macros intégré dans l interface de Star-CCM+. Si vous ne voulez pas en savoir plus sur le contenu de cette macro, passez directement à la section 2. Détaillons les différentes parties de la macro. On précise tout d abord l utilisation du package macro, ainsi que l utilisation de différentes bibliothèques. 1 // STAR - CCM + macro : lancement. java 2 package macro ; 3 4 import java. util.*; 5 import star. common.*; On crée ensuite une classe qui contient la méthode execute. 7 public class lancement extends StarMacro { 8 public void execute () { 9 execute0 (); 10 } La méthode execute0 est la partie qui concerne directement les différentes opérations exécutées par Star-CCM+. getactivesimulation récupère la simulation donée en argument et la stocke dans l objet simulation 0. getsolution() permet de créer un objet solution 0. On efface et initialise solution 0 avec clearsolution() et initializesolution(). Enfin le calcul démarre pour simulation 0 avec l instruction getsimulationiterator().run() : 11 private void execute0 () { 12 Simulation simulation_0 = getactivesimulation (); 13 Solution solution_0 = simulation_0. getsolution (); 14 solution_0. clearsolution (); 15 solution_0. initializesolution (); 16 simulation_0. getsimulationiterator ().run (); 17 } 2 Préparation du script de lancement Le script de lancement est exactement du même genre que ceux utilisés pour lancer un job sur les partitions Seq, Sept, Huit ou Dix. Appelons ce fichier lancement.sh. Le fichier ci-dessous permet de lancer un calcul sur huit processeurs. 1 #!/ bin / bash 2 # 3 # $ - N starccm_ sge_ 8 4 #$ -cwd 5 #$ -j y 6 #$ -S / bin / bash 7 # 8 #$ -q Dix 9 #$ -pe cre 9 2
10 # 11 #$ -m be 12 # 13 14 / usr / local / bin / starccm + - batchsystem sge -batch / home / meister / starccm_sge / lancement. java / home / meister / starccm_sge / test_sge. sim Regardons le contenu du fichier, afin de pouvoir l adapter aux besoins rencontrés par chacun. Le fichier commence par le shell à utiliser pour exécuter le script. J utilise le bash, mais chacun peut utiliser le shell qu il préfère : 1 #!/ bin / bash L option -N permet de préciser le nom sous lequel le job soumis va apparaître dans le gestionnaire de batch (en tapant la commande status -a dans un terminal par exemple). Dans mon exemple, le job sera visible sous le nom starccm sge 8 3 # $ - N starccm_ sge_ 8 L option -cwd indique que l on travaille à partir du répertoire courant. Cette option permet de sauver les fichiers de sortie Star-CCM+ dans le répertoire à partir duquel on lance le job : 4 #$ -cwd L option -j y indique que les erreurs du job doivent être mélangés à la sortie standard. On peut le passer à -j n pour les séparer. 5 #$ -j y Spécifie le shell à utiliser pour le job : 6 #$ -S / bin / bash Ce sont maintenant les deux arguments indispensables du script. L option -q permet de préciser sur quelle queue on veut lancer son job. A la date de rédaction de ce document, seule la queue Dix est sous Linux parmi les noeuds disponibles pour le calcul parallèle, et donc on n a pas le choix pour cette option. Si la partition Huit était amenée à passer sous Linux, on pourrait alors préciser -q Huit. 8 #$ -q Dix L option suivante indique le nombre de processeurs souhaités pour le calcul. L option -pe signifie Parallel Environment et va indiquer au système quelle librairie on veut utiliser pour le calcul parallèle. Pour Star-CCM+ on a besoin de Sun HP, ce qui est précisé par cre. Le nombre de processeurs indique ensuite le nombre de processeurs utiles pour le calcul, auquel se rajoute un processeur maître. Ainsi dans notre exemple le calcul va prendre neuf processeurs, mais seulement huit seront utilisés par le calcul. Le neuvième sert à contrôler les autres, écrire les fichiers résultats, etc. 9 #$ -pe cre 9 La dernière option enfin concerne les mails envoyés par le système. Les options possibles sont : 3
b : un mail est envoyé au début du job ; e : un mail est envoyé à la fin du job ; a : un mail est envoyé lorsque le job est annulé ou reprogrammé ; s : un mail est envoyé lorsque le job est suspendu ; n : aucun mail n est envoyé. Par défaut, les mails sont envoyés au propriétaire du job. Si on veut les envoyer à d autres utilisateurs, on peut le faire avec l option -M suivi des adresses mails voulues. Dans notre cas, seul le propriétaire du job recevra un mail au début et à la fin du job : 11 #$ -m be Enfin, on écrit la commande à exécuter. Dans notre cas il s agit donc de Star-CCM+ qui se trouve à /usr/local/bin/starccm+ (pour le savoir, taper la commande which starccm+ dans un terminal, et utiliser le résultat de cette commande). On indique ensuite à Star-CCM+ qu on va tourner en batch (-batch) sous l environnement SGE (-batchsystem sge). Il faut lui préciser quel script Java utiliser : c est lancement.java et quel fichier simulation utiliser : c est test sge.sim. C est ce fichier qu on utilise dans le script Java avec l instruction getactivesimulation(). 14 / usr / local / bin / starccm + - batchsystem sge -batch / home / meister / starccm_sge / lancement. java / home / meister / starccm_sge / test_sge. sim 3 Soumission du job Maintenant que le fichier de simulation, la macro Java et le script de lancement sont prêts, il ne reste plus qu à ouvrir un terminal et se placer dans le répertoire qui les contient : 1 [ Loem : meister ]$ cd / home / meister / starccm_sge / 2 [ Loem : meister ]$ ls 3 lancement. java lancement. sh test_sge. sim Le script est lancé par la commande suivante : 1 [ Loem : meister ]$ qsub lancement.sh On peut voir le job tourner : 1 [ Loem : meister ]$ status -a 2 job - ID # name owner start time running in 3 ----------------------------------------------------------- 4 27611 9 starccm_sge_8 meister 09/10/2010 09:31:44 Dix 5... 6... Si l on veut arrêter le job, il suffit d effacer le job en indiquant son job-id (première colonne du résultat de la commande status -a), donc ici : 1 [ Loem : meister ]$ qdel 27611 4
Le job crée un fichiers dont le nom est le nom de soumission du job (ici starccm sge 8 suivi de.o et du numéro de job-id. Il contient la sortie standard. Donc, pendant que l on tourne : 1 [ Loem : meister ]$ ls 2 lancement. java lancement. sh starccm_sge. o27611 test_sge. sim Le fichier starccm sge.o27611 contient l ensemble des sorties affichées dans l interface de Star- CCM+ pendant les calculs : 1 [ Loem : meister ] $ more starccm_sge_8. o27611 2 / opt / starccm /5.04/ starccm +5.04.006/ star / bin / nbexec : WARNING : environment variable DISPLAY is not set 3 Starting local server : / opt / starccm / 5. 04/ starccm +5. 04. 006/ star / bin / starccm + - batchsystem sge - server / home / meister / starccm_sge / test_sge. sim 4 Info : Controller process will be placed on a unique batchsystem resource. 5 Starting STAR - CCM + parallel server 6 HP - MPI licensed for CD - adapco. 7 MPI Distribution : HP MPI -2.03.01.00 8 Master Process [0] @ Lana. iusti - recherche process 16602 9 Worker Process [1] @ Lana. iusti - recherche process 16571 10 Worker Process [2] @ Lana. iusti - recherche process 16605 11 Worker Process [3] @ Lana. iusti - recherche process 16585 12 Worker Process [4] @ Lana. iusti - recherche process 16606 13 Worker Process [5] @ Lana. iusti - recherche process 16607 14 Worker Process [6] @ Lana. iusti - recherche process 16582 15 Worker Process [7] @ Lana. iusti - recherche process 16559 16 Worker Process [8] @ Lana. iusti - recherche process 16590 17 18 STAR - CCM + Version 5. 04. 006 ( linux - x86_64-2. 3. 4/ gnu4.4) 19 License version : 23 Oct 2009 20 Required feature version set to 2010.06 or later 21 Checking license file : 1999 @ Leila 22 1 copies of ccmpsuite checked out from 1999 @ Leila 23 Feature ccmpsuite expires in 8 days 24 25 Server :: start - host Loem. iusti - recherche : 47827 26 Loading simulation database : / home / meister / starccm_sge / test_sge. sim 27 Loading module : CadModeler 28 Loading module : MeshingSurfaceRepair 29 Loading module : StarMeshing 30 Loading module : StarResurfacer 31 Loading module : StarDualMesher 32 Loading module : MetricsModel 33 Loading module : MotionModel 34 Loading module : MaterialModel 35 Loading module : CoupledFlowModel 36 Database saved by: 5
37 STAR - CCM + Version 5. 04. 006 ( linux - x86_64-2. 3. 4/ gnu4.4) Serial 38 Tag date = 2010-06 -03 02:47:02 GMT 39 Loading into : 40 STAR - CCM + Version 5. 04. 006 ( linux - x86_64-2. 3. 4/ gnu4.4) Np =8 41 Tag date = 2010-06 -03 02:47:02 GMT 42 Started Parasolid modeler version 22.00.196 43 Simulation database load completed. 44 Playing macro : / home / meister / starccm_sge / lancement. java 45 Partitioning from Serial into 8 partitions 46 Part : distributed 905806 out of 7246454 faces 47 Part : distributed 1811612 out of 7246454 faces 48 Part : distributed 2717418 out of 7246454 faces 49 Part : distributed 3623224 out of 7246454 faces 50 Part : distributed 4529030 out of 7246454 faces 51 Part : distributed 5434836 out of 7246454 faces 52 Part : distributed 6340642 out of 7246454 faces 53 Part : distributed 7246448 out of 7246454 faces 54 Part : distributed 7246454 out of 7246454 faces 55 Partitioning finished 56 7 copies of ccmpsuite checked out from 1999 @ Leila 57 Feature ccmpsuite expires in 8 days 58 Iteration Continuity X- momentum Y- momentum Z- momentum 59 1 1.000000 E +00 1.000000 E +00 1.000000 E +00 1.000000 E +00 60 sortie : reversed flow on 26851 faces 61 sortie : reversed flow on 26869 faces 62 2 6.528267 E -01 1.000000 E +00 1.000000 E +00 1.000000 E +00 63 sortie : reversed flow on 26932 faces 64 sortie : reversed flow on 26939 faces 65 --More - -(20\%) Ce fichier permet donc de suivre l évolution du calcul en direct. 4 Ressources Ce document et les fichiers peuvent être téléchargés à l adresse suivante : http://iusti. polytech.univ-mrs.fr/ meister. L adresse directe : du document est : http://iusti.polytech.univ-mrs.fr/ meister/documents/starccm sge.pdf de la macro Java et du script de lancement est : http://iusti.polytech.univ-mrs.fr/ meister/fichiers/starccm sge 6