ornladios / ADIOS2

Next generation of ADIOS developed in the Exascale Computing Program
https://adios2.readthedocs.io/en/latest/index.html
Apache License 2.0
268 stars 124 forks source link

`adios-campaign` directory #4148

Open ax3l opened 4 months ago

ax3l commented 4 months ago

Hi,

With the update to ADIOS v2.10 we see adios-campaign/ folders appearing in the current working directory of WarpX simulations. It contains some .db files it seems.

What is that and is that intentional?

I compiled for a V100 cluster w/ Intel CPUs using

$ cmake
  -S $HOME/src/adios2  \
  -B ${build_dir}/adios2-v100-build  \
  -DADIOS2_USE_Blosc2=ON   \
  -DADIOS2_USE_Fortran=OFF  \
  -DADIOS2_USE_Python=OFF  \
  -DADIOS2_USE_ZeroMQ=OFF  \
  -DCMAKE_INSTALL_PREFIX=${SW_DIR}/adios2-2.10.0

I think if this is needed in some form, we should put it into the ADIOS .bp directory because we might have multiple ADIOS2 writers active at the same time for various simulation diagnostics.

first seen in https://github.com/ECP-WarpX/WarpX/pull/4869

cc @pnorbert @guj @franzpoeschel

guj commented 4 months ago

I have the same question to ask @pnorbert

pnorbert commented 4 months ago

The Campaign Manager is on by default and records the ADIOS outputs (so far only the names) of an application. adios-campaign/ is the directory that contains one or more sqlite3 .db files, one per application/ADIOS/rank0 combo. So you can run multiple applications in the same directory, at once or one after the other. This directory should not affect anything besides your directory listing. You can deactivate it by creating an adios config in ~/.config/adios2/adios2.yaml and set active to false:

$ cat ~/.config/adios2/adios2.yaml

Campaign:
  active: false

Or you can turn off the whole thing at cmake configuration with -DADIOS2_USE_Campaign=OFF

ax3l commented 4 months ago

Thank you for the details @pnorbert !

Checking the code, it looks like it is auto-enabled when SQLLite is found, https://github.com/ornladios/ADIOS2/blob/v2.10.0/cmake/DetectOptions.cmake#L578-L583

which probably was the case on the system I saw it: https://github.com/ECP-WarpX/WarpX/pull/4869

Explained offline: the campaign is written serially, it creates a unique UUID for each entry. Thus, one can run multiple processes in the same directory as well as creating multiple adios files/file streams and they all get their own campaign databases in that folder.

It's generally a bit verbose, e.g., using a non-hidden directory in CWD and having no control with runtime options yet to store it elsewhere (or turning it off).

As an application person, where I would like to see such functionality would be more along the lines:

So

pnorbert commented 3 months ago

Fix will use .adios-campaign/ but it also deactivates recording by default and it can only be turned on in ~/.config/adios2/adios2.yaml.