#!/bin/csh ####################################################################################################################################### # # # G E N E R A T I O N P A R A L L E L E D ' U N C H A M P F R A C T A L : # # # # # # Utilisation : # # # # $xci/fractal.01$vv$Z <CommandeArguments> <ImageR> <Ponderations> <MaillesX> <MaillesY> [<MaillesZ>] # # # # # # Author of '$xci/fractal.01$vv$Z' : # # # # Jean-Francois Colonna (LACTAMME, 20180707110119). # # # ####################################################################################################################################### set CommandeArguments=($1) set ImageR=($2) set Ponderations=($3) set MaillesX=($4) set MaillesY=($5) set MaillesZ=($6) set NImAgEs=$#Ponderations if ( ($#MaillesX == $NImAgEs) \ && ($#MaillesY == $NImAgEs) \ ) then if ( ("$MaillesZ" == "$K_VIDE") \ || ( ("$MaillesZ" != "$K_VIDE") \ && ($#MaillesZ == $NImAgEs) \ ) \ ) then FilSTmpB FGeNeRe_CoUcHeS FilSTmpB FImAgEs set NuMeRoS=`$xci/nombres$X A="$K_VIDE" premiere=1 derniere=$NImAgEs` set index=1 while ($index <= $NImAgEs) set MaIlLe_X="mX=$MaillesX[$index]" set MaIlLe_Y="mY=$MaillesY[$index]" if ("$MaillesZ" != "$K_VIDE") then set MaIlLe_Z="mZ=$MaillesZ[$index]" else set MaIlLe_Z="$K_VIDE" endif set ArGuMeNtS="$K_VIDE" set ArGuMeNtS="$ArGuMeNtS"" iterations=1" set ArGuMeNtS="$ArGuMeNtS"" $MaIlLe_X $MaIlLe_Y $MaIlLe_Z" set ArGuMeNtS="$ArGuMeNtS"" standard=FAUX" set ArGuMeNtS="$ArGuMeNtS"" Frenormaliser=VRAI origine=0 extremite=$Ponderations[$index]" set ArGuMeNtS="$ArGuMeNtS"" R=$FImAgEs.$NuMeRoS[$index]" echo "$CommandeArguments $ArGuMeNtS" \ >> $FGeNeRe_CoUcHeS @ index = $index + 1 end #20180707113227____: setenv TaillePaquetsLinda 8 # #20180707113227____: setenv FindExec_MessagesBP $NEXIST # #20180709094735____: setenv FindExec_MessagesBP $NEXIST # # La sortie des messages est retablie le 20180709094735 car, en effet, il peut y avoir # # des messages d'erreur issus de '$CommandeArguments'... # $xcg/ExecParallele.01$Z $FGeNeRe_CoUcHeS # On notera le 20180709074729 que malheureusement la duree du calcul de chaque couche # # augmente en meme temps que la taille des mailles diminue. Ainsi, par exemple, en format # # 'Puq', lors du calcul de '$xTV/NUAGES.0.1' dans 'v $xiirf/$Fnota CIEL_31_0017', le 'time' # # des differents '$xci/fract_3D.01$X' sur '$LACT1A' a donne : # # # # 0.896u 0.000s 0:00.89 100.0% 0+0k 0+440io 0pf+0w # # 1.132u 0.000s 0:01.13 100.0% 0+0k 0+440io 0pf+0w # # 1.228u 0.000s 0:01.23 99.1% 0+0k 0+440io 0pf+0w # # 1.616u 0.000s 0:01.61 100.0% 0+0k 0+440io 0pf+0w # # 2.652u 0.000s 0:02.65 100.0% 0+0k 40+440io 1pf+0w # # 4.792u 0.000s 0:04.79 100.0% 0+0k 0+440io 0pf+0w # # 9.092u 0.000s 0:09.09 100.0% 0+0k 0+440io 0pf+0w # # 17.644u 0.000s 0:17.64 100.0% 0+0k 0+440io 0pf+0w # # # # et on voit ainsi que la duree double pratiquement a chaque reduction des mailles, ce qui # # finalement rend le parallelisme quasiment inutile. N'oublions pas au passage que : # # # # 0 1 2 3 n n+1 0 # # 2 + 2 + 2 + 2 + ... + 2 = 2 - 2 # # # # ce qui fait que la duree en parallele sera grossierement la moitie (donc divise par 2 et # # non pas par 'N' -le nombre d'iteration, N=8 ci-dessus-) de ce qu'elle aurait ete en # # sequentiel. Grosse deception ! # #20180709094735____: unsetenv FindExec_MessagesBP # #20180707113227____: unsetenv FindExec_MessagesBP # #20180707113227____: unsetenv TaillePaquetsLinda # FilSTmpE FGeNeRe_CoUcHeS $xci/accumule.01$X A=$FImAgEs. \ premiere=1 derniere=$NImAgEs \ standard=FAUX \ $formatI | \ $xci/normalise.01$X \ R=$ImageR \ $formatI FilSTmpE FImAgEs else EROR "Le nombre de couches est incoherent -2-." endif else EROR "Le nombre de couches est incoherent -1-." endif