-
Notifications
You must be signed in to change notification settings - Fork 14
[WIP] Abstract coordinate systems and general cleanup #46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: devel
Are you sure you want to change the base?
Conversation
…as cpp so they get compiled
…rticles can still be used
…sion code use this
…id possible cuda bug
Current performance benchmarks, all with 1x MPI rank and 1x 32GB V100. Overall, there is a small (at most 5%) difference in performance vs. Particle advancePair plasma in a 50^3 domain with 2000 particles / species / cell, advance for 100 steps. For cylindrical geometry,
Not sure why LPI sample
I have no idea why |
Conflicts: kokkos src/boundary/boundary_p.cc src/collision/binary.cc src/species_advance/species_advance.h src/species_advance/standard/advance_p.cc src/util/boot.cc src/vpic/advance.cc src/vpic/initialize.cc src/vpic/kokkos_helpers.h src/vpic/vpic.cc src/vpic/vpic.h
Restructures the code base to allow for general, orthogonal coordinate systems. Currently, Cartesian
(x, y, z)
and cylindrical(r, theta, z)
are implemented based on the cpu-based, cylindrical version.Coordinate system-specific operations are abstracted and specific implementations live in
src/grid/geometry
. In order to support this, significant and wide spread changes had to be made.species_advance/standard
andfield_advance/standard
were heavily restructured and DRY'ed. Most operations are only available in (renamed) Kokkos versions to avoid having to implement general geometries in both legacy and Kokkos code.By default, the coordinate system is set to Cartesian to support legacy code. To change the coordinate system,
grid->geometry
must be set during initialization and before any calls tomove_p
. E.g.,:Major changes
particle_mover_t->disp{x,y,z}
has changed. Previously,disp
referred to a scaled displacement in terms of the grid spacing. It now refers to the unscaled Cartesian displacement.CHECKPT_VIEW
to checkpoint the size/type of a view andCHECKPT_VIEW_DATA
to checkpoint the contents. Restore has similar macros. Checkpoint/restore code relocated from main simulation class to objects.grid_t::neighbor
was deprecated and removed in favor ofgrid_t::k_neighbor_h
*_kokkos
functions to*
hydro_p
ported to gpu, similar tohydro_p
branch and addresses Port hydro_p to Kokkos #9Minor changes
set_region_field
macro.Kokkos::finalize()
moved tohalt_services()
field_advance/standard/borris.h
rather than explicitly written.sample/bench/advance_p
and added it as a build product to create a standard performance benchmark,vpic-benchmark
Test changes
rho_p
test since host-side accumulation was deprecated.Known Issues
devel
. This branch raises an error.r=0
, but could be implemented soonabsorb_field
boundary conditions are not technically correct in cylindrical systems. The Higdon ABC assumes the wave equation is separable along the orthogonal direction, but this is not true in general coordinates. Not a huge problem, but should be documented.Remaining tasks
sorter
andcompressor
intospecies_advance/standard
(optional)Weibel_driver
)r=0
?