Having changed to directory ~mstringe/python/modelPred, the following examples should show the possible usages of modelPred.py.
To plot the performance of an atmosphere only run at N216, type
$ python modelPred.py --submodels=atmosOnlyN216
which should produce
To make the y-axis `Time for one model year', instead of `Model years per day', add the --plot=1 argument, i.e.
$ python modelPred.py --submodels=atmosOnlyN216 --plot=1
which should produce
And to cap the x and y axis try something like
$ python modelPred.py --submodels=atmosOnlyN216 --xmax=1000 --ymax=3
which should produce
Use the --npes=<number of cores> argument to see how fast a component should go for a given number of cores, e.g.
$ python modelPred.py --submodels=atmosOnlyN216 --xmax=600 --ymax=2 --npes=400
which should produce
and to screen output
*** Decomposition stats *** The coupled code is expected to run at 1.526yrs/day on 400PEs, which are shared across - atmosOnlyN216 at 1.526yrs/day on 400PEs (16x25,20x20)
which indicates the component should run at about 1.526 model year on 400 cores, and the possible PE decomposition are 16x25 and 20x20.
To supress the pop-up plot, add --plot=0 argument, i.e.
$ python modelPred.py --submodels=atmosOnlyN216 --plot=0 --npes=400
which should still output the text shown above to screen.
The --speed=<model years per day> argument indicates how any cores are needed to achieve a given speed, e.g.
$ python modelPred.py --submodels=atmosOnlyN216 --plot=0 --speed=2.0
which should produce
*** Speed stats *** Number of PEs needed to reach 2.000yrs/day are - atmosOnlyN216 - 1.992yrs/day for 580PEs (20x29) - alternatively, 2.010yrs/day for 588PEs (14x42,28x21,42x14)
which indicates that 580 cores should run at just below 2 model years per day, and 588 cores should run at just above 2 model years per day.
And if you request a speed not possible, e.g.
$ python modelPred.py --submodels=atmosOnlyN216 --plot=0 --speed=4.0
you'll get something like
*** Speed stats *** Number of PEs needed to reach 4.000yrs/day are - atmosOnlyN216 - SORRY, the fastest speed that atmosOnlyN216 can reach is 3.097yrs/day for 2130PEs (30x71)which indicates that the fatest that the atmosphere at N216 can go is about 3.097 model years per day.
The code was written for work with coupled code, and coupled components can be listed, e.g. to plot atmosphere at N216 with NEMO + CICE at ORCA025
$ python modelPred.py --submodels=atmosOnlyN216,nemoCiceOrca025
which should produce
And all the options discussed above for one component should still be available for multiple components. For example, the number of cores required to run a coupled atmosphere (N216) and NEMO + CICE (ORCA025) at 2 model years per day should be given by
$ python modelPred.py --submodels=atmosOnlyN216,nemoCiceOrca025 --speed=2.0 --xmax=600 --ymax=3
where the entry above should be on one line, and this should produce the plot
and to screen output
*** Speed stats *** Number of PEs needed to reach 2.000yrs/day are - atmosOnlyN216 - 1.992yrs/day for 580PEs (20x29) - alternatively, 2.010yrs/day for 588PEs (14x42,28x21,42x14) - nemoCiceOrca025 - 2.001yrs/day for 272PEs (16x17) - alternatively, 1.988yrs/day for 270PEs (9x30,18x15)
which indicates that the atmosphere needs about 580 cores and the ocean needs about 272 cores - so at total of 580 + 272 = 852 cores.
At the time of writing the components available are
'atmosOnlyN96', 'atmosOnlyN96-dt30', 'atmosOnlyN216',
'fullChemN96', 'fullChemN216',
'medOrca025', 'nemoCiceOrca025',
'offOxN96', 'offOxN96-dt30' and 'offOxN216'.