Picongpu: Multirun tool

Created on 10 Dec 2019  路  4Comments  路  Source: ComputationalRadiationPhysics/picongpu

Hello,

I am going to study the interaction of laser pulses with carbon nanotubes. Only laser alone comes with a few parameters such as wavelength, spot size, intensity, polarization and pulse duration. Then, there are various ways to arrange the tubes with respect to the laser beam. It becomes obvious that PIConGPU must be run for a large number of cases with these parameters being swapped over some range of interest.

How can this be approached? I need a tool that systematically:

  1. modifies .param files;
  2. adds them to a new folder together with copies of unchanged files;
  3. enters the first folder and builds, then runs that case;
  4. when the first case finishes (how to detect? maybe a process is present and then disappears) move to the second folder and follow the same process.
  5. do something similar to gather required data from all these folders.

Is there anything like this available? If not I can design a simple GUI to deal with these tasks. My experience is in JavaFX for Java, but I know Qt creator can be used for C++. I wish anyway to have your opinion first.

Thanks.
Regards

question

Most helpful comment

Also iirc PoGit that @no1r mentioned in another reply has a simple parameter scanning. Please keep in mind that this is a third-party tool tho.

All 4 comments

@cbontoiu this kind of parameter scans is of course useful.

For a simplistic command-line way of performing it, one can pass such varying parameters via build options and then assign to (often constexpr) variables in your .param files. Please see how we do it in examples. Then to invoke a particular set of flags use -t option of pic-build.

You could also have a look at a pipelining tool such as snakemake (documentation). I have only recently been introduced to it but it seems to be a very powerful, yet simple tool that can make the process of running parameter scans and chaining post-processing to it much easier for you.

We have a GUI project for Jupyter as well which is in a work-in-progress state but have so far refrained from a real GUI since the code is under constant development.

Also iirc PoGit that @no1r mentioned in another reply has a simple parameter scanning. Please keep in mind that this is a third-party tool tho.

Things that might be useful to consider:

We also have an experimental, in-code python parametrization tool that can speak to above options by @codingS3b and @jkelling (sphinx docs on it missing?), see:
https://github.com/ComputationalRadiationPhysics/picongpu/blob/dev/share/picongpu/examples/LaserWakefield/lib/python/picongpu/params.py
https://github.com/ComputationalRadiationPhysics/picongpu/tree/dev/lib/python/picongpu/input

Was this page helpful?
0 / 5 - 0 ratings

Related issues

ax3l picture ax3l  路  4Comments

psychocoderHPC picture psychocoderHPC  路  4Comments

HighIander picture HighIander  路  4Comments

cbontoiu picture cbontoiu  路  3Comments

ax3l picture ax3l  路  4Comments