... | ... | @@ -8,17 +8,59 @@ The design, commission, and operation of an accelerator facility is an excellent |
|
|
|
|
|
Such a task involves significant computer modeling using accelerator simulation codes such as PSI’s OPAL (Object Oriented Parallel Accelerator Library) framework. Despite the fact that these codes are parallel, typical simulation parameters (e.g. a small number of macroparticles and mesh size) for individual runs, limit their scalability to several hundred or a few thousand processors. This represents a strong impediment in view of the petascale regime, therefore parallelisation on multiple levels, e.g. running multiple parallel simulations in parallel, becomes a necessity. On the other hand, introducing a low-dimensional scalable model enables multi-resolution simulation runs.
|
|
|
|
|
|
optPilot is a general-purpose framework for simulation-based multi-objective optimization methods that allows the automatic investigation of optimal sets of parameters. The implementation is based on a master/slave paradigm, employing several masters and groups of workers to prevent communication hotspots at master processes. In addition, we exploit information about the underlying network topology when placing master processes and assigning roles. Solution states are exchanged between masters in a "rumor routing" fashion on a social network graph using one-sided communication.
|
|
|
optPilot is a general-purpose framework for simulation-based multi-objective optimization methods that allows the automatic investigation of optimal sets of parameters.
|
|
|
|
|
|
The implementation is based on a Master/Slave paradigm, employing several masters and groups of workers to prevent communication hotspots at master processes. In addition, we exploit information about the underlying network topology when placing master processes and assigning roles. Solution states are exchanged between masters in a "rumor routing" fashion on a social network graph using one-sided communication.
|
|
|
Using evolutionary algorithms and OPAL simulations as optimizer and forward solver in our framework, we demonstrate the feasibility and scalability of our approach on real applications in the domain of particle accelerators.
|
|
|
|
|
|
optPilot Documentation & Help
|
|
|
========================
|
|
|
|
|
|
* [PhD Thesis of Y. Ineichen]( http://e-collection.library.ethz.ch/eserv/eth:7041/eth-7041-02.pdf)
|
|
|
* [ arXiv:1302.2889](https://arxiv.org/abs/1302.2889)
|
|
|
* [arXiv:1302.2889](https://arxiv.org/abs/1302.2889)
|
|
|
* Please use the OPAL mailing list opal@ … (opal AT lists.psi.ch) to discuss problems and issues. Add yourself to the [mailing list](https://psilists.ethz.ch/sympa/subscribe/opal)
|
|
|
* A very short introduction to MOO [moo-intro.pdf](/uploads/0139575bea3d80254929a1645909e50d/moo-intro.pdf)
|
|
|
|
|
|
Running
|
|
|
=======
|
|
|
|
|
|
- set ENV variables (only required for OPAL):
|
|
|
* `FIELDMAPS`: folder containing fieldmaps
|
|
|
* `TEMPLATES`: directory containing the template input file
|
|
|
* `SIMTMPDIR`: directory for temporary creation of simulation files (must exist)
|
|
|
|
|
|
- set program arguments:
|
|
|
* `--inputfile=fname`: input file containing optimization problem
|
|
|
* `--outfile=fname`: name used in output file generation
|
|
|
* `--outdir=dirname`: name of directory used to store generation output
|
|
|
files (generated if non-existing)
|
|
|
* `--initialPopulation=num`: size of the initial population
|
|
|
* `--num-masters=num`: number of master nodes
|
|
|
* `--num-coworkers=num`: number processors per worker
|
|
|
* `--selector=path`: path of the selector (PISA only)
|
|
|
* `--dump-dat=freq`: dump old generation data format with frequency (PISA only)
|
|
|
* `--num-ind-gen=num`: number of individuals in a generation (PISA only)
|
|
|
|
|
|
- and for convergence we support:
|
|
|
* `--maxGenerations=num`: number of generations to run
|
|
|
* `--epslion=num`: tolerance of hypervolume criteria
|
|
|
* `--expected-hypervol=num`: the reference hypervolume
|
|
|
* `--conv-hvol-prog=num`: converge if change in hypervolume is smaller
|
|
|
|
|
|
- run, stand-alone example:
|
|
|
|
|
|
mpirun -np 4 opt-pilot.exe \
|
|
|
--inputfile=FiPha3Opt1.tmpl --outfile=results.dat \
|
|
|
--maxGenerations=5 --initialPopulation=10 --num-masters=1
|
|
|
|
|
|
- run, OPAL equivalent (note the additional duplicated inputfile):
|
|
|
|
|
|
mpirun -np 4 opal \
|
|
|
--inputfile=FiPha3Opt1.tmpl --outfile=results.dat \
|
|
|
--maxGenerations=5 --initialPopulation=10 --num-masters=1 \
|
|
|
FiPha3Opt1.tmpl
|
|
|
|
|
|
|
|
|
FODO Example
|
|
|
===========
|
|
|
Setup your environment on merlin:
|
... | ... | @@ -68,7 +110,7 @@ ENDTRACK; |
|
|
QUIT;
|
|
|
```
|
|
|
|
|
|
With some random initial conditions we get the following solution (with the python script from [pyOpalTools](https://gitlab.psi.ch/OPAL/pyOPALTools/tree/master/optPilot)
|
|
|
With some random initial conditions we get the following solution (with the python script from [pyOpalTools](https://gitlab.psi.ch/OPAL/pyOPALTools/tree/master/optPilot))
|
|
|
|
|
|
`visualize_pf.py --objectives=drmsx,drmsy,QDX1_K1 --path=results-fodo-new --generation=500`
|
|
|
|
... | ... | |