#!/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