Skip to content

Merge dev aug26#34

Merged
ajnonaka merged 86 commits intoAMReX-Microelectronics:developmentfrom
RevathiJambunathan:Merge_dev_Aug26
Aug 26, 2021
Merged

Merge dev aug26#34
ajnonaka merged 86 commits intoAMReX-Microelectronics:developmentfrom
RevathiJambunathan:Merge_dev_Aug26

Conversation

@RevathiJambunathan
Copy link
Collaborator

No description provided.

ax3l and others added 30 commits July 27, 2021 16:57
This is renaming the runtime added optical depth scalars for QED
physics just to create the same names in plotfile and openPMD output.
Did not intent to commit that into mainline.
* CI: Add Missing Python Analysis for EB Test

* Use 1 MPI Process for Azure
Written BTD buffers for lab snapshot data are reset to zero size
(count). When we do the final write of all partly filled buffers
in `FilterComputePackFlushLastTimestep`, we should not write such
already completed backtransformed lab snapshots again.
The `groupBased` iteration encoding (input: `g`) was not parsed.
By accident, the 2nd test did not use plotfile output.
…at particle creation in AddNParticles() (#2115)

* exposes AddRealComp to Python to allow extra particle attributes to be added at runtime; also includes a new function to grab a particle data array from the name of the component rather than the index

* added functionality to AddNParticles() to allow extra particle attributes to also be set during particle creation

* added function to get index of a particle component given the PID name

* changed new get component index and get_particle_arrays_from_comp_name functions to take species name as argument rather than species id

* changed warpx_addRealComp to accept a species name as input and only add the new component for that species

* added a test of the pywarpx bridge to get particle data and add new particle attributes at runtime

* changed all particle interacting functions in libwarpx to use the species name rather than id, also changed the functions to get particle array data to use the component name rather than index

* updated test according to PR #2119 changes

* removed unneeded BL_ASSERT(nattr == 1) statement

* fixed bug in add_particles to correctly determine the number of extra attributes

* fixed bug in AddNParticles if fewer attribute values are passed than the number of extra arrays for the species

* use isinstance(attr, ndarray) rather than type(attr) is np.ndarray

* generalize_runtime_comps_io

* fix OpenPMD

* fix OpenPMD

* fix plot flags in WritePlotFile

* fix offset and comment

* changed extra pid test to not use an underscore in the pid name

* switched _libwarpx.py::add_particles to use kwargs to accept the weight and extra attribute arrays

* License update in test file

Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>

* fix typo

* added a test with unique_particles=False

* Apply suggestions from code review

Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>

* updated docstring and comments

Co-authored-by: atmyers <atmyers2@gmail.com>
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* AMReX/PICSAR: 21.08
* WarpX: 21.08
In our code base, definitions and declarations of functions need a
space after their name. This makes them easy to search for.

Ref.:
  https://warpx.readthedocs.io/en/21.08/developers/contributing.html#style-and-conventions
* openPMD: Use Steps if != BTD

For all but back-transformed diagnostics, we can use efficient,
temporally sequentially increasing writes to iteration numbers
for iterations.

This allows us to give a guarantee to HPC I/O libraries on how
to arrange data, e.g., we can use ADIOS2 BeginStep() and
EndStep().

This enables paths to:
- streaming workflows, such as ADIOS2 SST or SSC, where we stage data
  over the network instead of using files
  https://openpmd-api.readthedocs.io/en/0.14.0/usage/streaming.html

This mitigates:
- host-side memory aggregation for ADIOS2 with openPMD `groupBased`
  iteration encoding
  https://openpmd-api.readthedocs.io/en/0.14.0/backends/adios2.html#memory-usage

* openPMD: Open Iterations Explicitly

Explicitly open iterations. Usually, file-open operations are delayed
until the first load/storeChunk operation is flush-ed. In parallel
contexts where we might want to do only particle writes from a few
ranks but no field wries in the future, this will avoid that we run
into hangs from the non-collective nature of the first flush.

The Streaming API (i.e., Series::writeIterations()) will call this
method implicitly as well, but back-transformed diags (particles)
might still need this.

* openPMD: 0.13.0+

Needed for streaming API and collective open.
Fix compile issue on Conda-Forge (Windows with Clang).
Fix a LGTM warning on unused imports in our PEC analysis scripts.
* Added B field to plasma lens

* Fix B field and updated CI test to include the B field

* Updated benchmark
…ticles() (#2161)

* added particle weight as an explicit argument for _libwarpx.py::add_particles()

* changes requested during code review
* RZ PSATD: Time Averaging for Multi-J Algorithm

* Fix Wrong Signs in Bm

* Use Time Averaging in CI Test, Update Benchmark

* Minor Fix
…table lookup (#2128)

* Shift parsing of physical/mathematical constants from hard-coding to table lookup
* Make constants map local and static for now, until there's a reason for it to be accessible/modifiable
* Accept rewording
* Accept rewording

Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Moved some routines to .cpp file

* Moved more stuff to a header file
Fix HIP:
```
/home/runner/work/WarpX/WarpX/Source/FieldSolver/ElectrostaticSolver.cpp:434:9: error: non-constant-expression cannot be narrowed from type 'double' to 'float' in initializer list [-Wc++11-narrowing]
        1.-beta[0]*beta[0], 1.-beta[1]*beta[1], 1.-beta[2]*beta[2])});
        ^~~~~~~~~~~~~~~~~~
/home/runner/work/WarpX/WarpX/build_sp/_deps/fetchedamrex-src/Src/Base/AMReX_SPACE.H:151:31: note: expanded from macro 'AMREX_D_DECL'
                              ^
/home/runner/work/WarpX/WarpX/Source/FieldSolver/ElectrostaticSolver.cpp:434:9: note: insert an explicit cast to silence this issue
        1.-beta[0]*beta[0], 1.-beta[1]*beta[1], 1.-beta[2]*beta[2])});
        ^~~~~~~~~~~~~~~~~~
```
Not an implementation yet, just adding aborts and silencing warnings.
NeilZaim and others added 29 commits August 20, 2021 13:47
* add plot_raw_rho in parameters doc

* Update Docs/source/usage/parameters.rst

Co-authored-by: Luca Fedeli <luca.fedeli@for.unipi.it>

Co-authored-by: Luca Fedeli <luca.fedeli@for.unipi.it>
Summit has undergone a major software update to RHEL8.
The default compilers and CUDA version have been modernized, among
others providing C++17 support by default.

Also, our scientific I/O stack is now system-provided, thanks to our
Spack and E4S efforts 🎉

Please update your `warpx.profile` on Summit, re-build your Python
virtual environment and re-compile your executables.
… be loaded (#2215)

* Improved error handling when the libwarpx shared library can't be loaded

* Removed extra newline

* Improved check and ended program on error
* Some prelimary refactoring.

* missing header

* implement scraping particles that leave the domain boundaries into buffers

* fix tabs

* missing return

* merging

* remove redefinition

* functor to work around cuda bug.

* handle 2D

* Add support for EB buffer

* protect for AMREX_USE_EB, static_assert that EB and RZ aren't both on.

* fix unused

* add inputs file

* add test

* fix bugs, remove print

* fix test

* fix test path.

* remove no-op code

* adding clear particles method

* attempt at adding time stamp

* Use integer step number instead of physical time to timestamp particles; also put shared code into named functor.

* move call to before apply boundary conditions

* use more descriptive inputs parameter

* Update Source/Particles/ParticleBoundaryBuffer.cpp

* fix comp bug

* move CopyAndTimestamp to cpp file

* also move IsOutsideProblemDomain functor

* Rename to m_particle_boundary_buffer

- Name: currently only used for boundary scraping
- Singular: only one instance

* Fix missing EOF newline

* Typo: author

* Param Read / Init: Cleanup For

Simplify

Co-authored-by: Roelof Groenewald <40245517+roelof-groenewald@users.noreply.github.com>
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
…n directions (#2220)

* Apply Silver-Mueller boundary only in requested direction

* Include a test with independent Silver-Mueller boundary conditions

* Correct typo in implementation
* Docs: Cori PICMI Instructions

Too tricky to get right to just cross-link - add documentation how to
build & run PICMI interfaces on Cori.

* Link: Jupyter Instructions
* default sort interval for particles if there are not species

* declare parmparse

Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>

* fix eol

* define and set sort_interval default to -1 and then reset them to 4 for GPU, -1 for CPU if there are species/lasers in the input

Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
Weekly update to latest AMReX.
No changes in PICSAR.
* refactored distance to EB calculation to have a more general function to interpolate from a scalar field on the grid to a given position

* changed RZ error message to general interpolation function

* changed function names to specify that scalar field interpolation is for a nodal field only
* Added check for unused 'WarpX' environment variables

* Changed the approach of this

- Go through environment variables as they are used to set cmake flags, and then
  check any remaining if they start with warpx.

* Improved the warning message

Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Ascent/SENSEI: Add Profiler

Add overall write profilers to Ascent & SENSEI.
Add detailed profile for sub-operaions (blueprint, publish, execute)
to Ascent as well.

* Simplify One-Time Profiler Vars
* Enable restart with PSATD

* Add new restart test

* Add new input file

* New CI Test: Fix Inputs, Fix Analysis Script

* Reuse input for Restart with FDTD

* Read time_of_last_gal_shift from Checkpoint

* Upload Benchmark for restart_psatd

* Update Benchmark for restart_psatd

Co-authored-by: Edoardo Zoni <ezoni@lbl.gov>
…c solver (#1811)

* Use `SyncRho` in Electrostatic solver

* Reuse rho_fp arrays

* Allocate arrays for rho

* Fix unused variable

* Fix bug in rho deposition

* Only use rho_fp in lab-frame Poisson solver

* Update test cases

* Incorporate PR comments
* Update inputs_3d

* Update inputs_2d

* Update inputs_2d

* Update inputs_3d

* fix nan
We cannot use an anaconda base package, since anaconda ships its
own libstdc++ for its compiler stack, which is not compatible
with our compiler choice.
* Fix: Missing Include Guards (FWD)

All header files need include guards to avoid double definitons.

* Fix copy-paste guard
In 2D3V, we currently assigned the y position a signaling NaN in
`GetPosition`, so that it cannot be used accidentially in functions.

When we call parser functions, this value is copied even if it is not
used, raising the signaling NaN.

Rethinking the strategy, we can write more general inputs files if
we instead write a sensible default for `y` in 2D3V: `y=0`. So this
PR changes the default, which also fixes the issue.
* OneStep_multiJ: Always Deposit rho in Component 0

* For Multi-J Algo Allocate only 1 Component

Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
* fix sensei component name in AMReX.cmake

* CMake: Fix Ascent/Conduit Component

Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Update AMReX to pull in new changes about:
- local variables in the parser are not reported as
  undefined
- SENSEI fixes on AMRLevel (now truly opt-in)
@ajnonaka ajnonaka merged commit 695316a into AMReX-Microelectronics:development Aug 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.