Skip to content

Update with development#42

Merged
ajnonaka merged 180 commits intoAMReX-Microelectronics:developmentfrom
RevathiJambunathan:update_with_development
Oct 4, 2021
Merged

Update with development#42
ajnonaka merged 180 commits intoAMReX-Microelectronics:developmentfrom
RevathiJambunathan:update_with_development

Conversation

@RevathiJambunathan
Copy link
Collaborator

This PR merged warpx/development into artemis and fixes conflicts generated in the process.

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 28 commits September 24, 2021 02:56
* Try to exchange fewer guard cells with standard PSATD solver

* Add ng_afterPushPSATD variable in GuardCellManager
Print those quanitites both during setup and after restart.
* added tunable particle reflection from absorbing domain boundaries

* extended picmi.py to allow setting boundary reflection coefficients and added a CI test for the reflection implementation

* allow R(E) to be specified, except for embedded boundaries

* changed approach for particle reflection, now the ParticleBoundaries object will hold the reflection coefficient; reflection from EBs not implemented

* added functionality to reflect from EB; still needs to be tested for accuracy

* added support for energy dependent reflection models for domain boundaries

* fixed at least one issue causing CI fails - building reflection model parsers for not physical particle containers

* switched reflection coefficients to be functions of the velocity component perpendicular to the boundary rather than energy

* reverted initial work on reflecting from EBs

* changed naming convention for new CI test for particle reflection

* switched useMPI back to 1 in test

* breaking changes while trying to sort out GPU issue

* fixed issue with CUDA compilation - hopefully :)

* various code improvements from PR review suggestions

* fix of major issues

* no need to parse the reflection models at every step

* skip particles that are already flagged for removal in ApplyBoundaryConditions
* Python Install Env Vars: All CAPS

On Windows, environment variable names are case insensitive and often
mapped to all CAPS spelling.

- https://stackoverflow.com/questions/7797269/python-environment-case-senstivity-os-environ
- https://en.wikipedia.org/wiki/Environment_variable#Syntax

This leads to an inconsistency between Unix and Windows like systems
if we use case sensitive environment variable names for install
control in Python.

Luckily, it is quite common to use all-CAPS variables in UNIX for
environment controls as well, so we will make a breaking change to
unify on that. Existing usage will see a warning of an unused
variable with `python3 -m pip install -v .`

* setup.py: Caps Python Vars from Env
Sporadic segfaults in `dpcpp` with shared objects since last release.
Needs to be triaged. Disabled to unblock community devs.
* Restart: Handle Read Errors

`std::istringstream` does not throw automatically if errors occur.
This leads to silently skipped reads.

Enable throwing on all errors to avoid hard to debug follow-up errors.

* Fix: Write All Particle Containers

Forgot to write laser particle containers but then tried to read them
in.

The mass & charge of those are not essential for us to restore, but
it avoids confusion and extra logic if we just write them properly at
the general location.
* ParticleIO: Fix All Container Restart

* Fix comment
Document on how to disable CCache.
Add CCache control to Python builds.
```
./Tools/Release/updateAMReX.py
```
…342)

* Allow more work for OpenMP threads in AuxilaryData

* Better parallelization in stagger-to-nodal current interpolation
* Summit: Known Issues Since RHEL8

Document all known issues and work-arounds for Summit users.

* Summit: libfabric developer notes
* SumBoundary: Use Fewer Guard Cells for J/rho

* Account for Stencil of Bilinear Filter

* Revert Last Commit, Replace SumBoundary/Copy With ParallelAdd

* Account for Stencil of Bilinear Filter

* Reset Benchmarks of Averaged Galilean Hybrid Tests

* Revert Last Commit

This reverts commit 7963176b46708eb08e7c41e67a3b0a6fe6cb2147.

* Account for Stencil of Current Centering
* CI: HIP 2D

Add a HIP 2D Test to compilation.

* Stencil: Fix non-3D Compiles on GPU

Overlooked the `#else` branch severely.

* CI: HIP 2D DP
Thanks to @wyphan in
AMReX-Codes/amrex#2366

> This updates the repo line for HIP to the latest version as documented on
https://rocmdocs.amd.com/en/latest/Installation_Guide/Installation-Guide.html#installing-a-rocm-package-from-a-debian-repository
> Notably, `xenial` is now `ubuntu`.
Update pulls in:
- Intel DPC++ 2021.4.0 support (SYCL)
- Nvidia NVHPC 21.9 support (CUDA)
* Remove unused function

* Remove `focused` and `projected` for rigid particles
Sometimes a `git` executable can be found but is unusable.
Quoting the result for empty strings makes the build logic more
robust in such scenarios.

Mitigates:
```
CMake Error at cmake/WarpXFunctions.cmake:289 (string):
  string sub-command STRIP requires two arguments.
Call Stack (most recent call first):
  CMakeLists.txt:256 (get_source_version)
```

Provoked via: Mixing of brew and Spack (git from brew + Spack env
with
`export DYLD_LIBRARY_PATH=/Users/axel/src/spack/var/spack/environments/warpx-dev/.spack-env/view/lib`)
Add spaces before definitions in the old BTD.
Was just adding them as we looked for a solution to fix restarts with
the old particle BTD.
* Activate rigid injected species in restart tests

* Fix reading of injection position and velocity

* Update checksum

* Update Examples/Tests/restart/analysis_restart.py
* Initialize lasers when restarting + recalculate z position at each iteration

* Fix restart for rigid-injected particles

* Fix laser injection box at restart

* Use correct positions for the moving window of the BTD

* implement restart for laser particles

* add CI test for laser acceleration restarting

* writespace

* Revert "Fix restart for rigid-injected particles"

This reverts commit 33bf3a60126539b9566ead3115ff2bcdf4b80516.

* don't add lasers to all full diags, only checkpoints

* fix unused parameter warning

* move the call to reset the m_laser_injection_box into PostRestart

* bugfix for non-boosted frame simulations

* Read the mean velocity of the injected species

* Remove unused line

* Revert "Initialize lasers when restarting + recalculate z position at each iteration"

This reverts commit 322634c35aa996649d0e8fff9fb683d04f2ee121.

* Add new ReadHeader / WriteHeader functions

* Add WriteHeader/ReadHeader for laser particles

* Revert "add CI test for laser acceleration restarting"

This reverts commit 6ba0fb3c121027eecf8b5845f55080e5b187375d.

* Fix merge commit

* Correct reading of updated position

* Add laser in restart test

* Remove unused parameters

* Update regression tests

* Add benchmark files

* Update boundary conditions for restart_psatd

Co-authored-by: Remi Lehe <remi.lehe@normalesup.org>
* Update: AMReX/PICSAR to 21.10

* WarpX: 21.10
@ajnonaka ajnonaka merged commit 344b974 into AMReX-Microelectronics:development Oct 4, 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.