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/standardandfield_advance/standardwere 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->geometrymust be set during initialization and before any calls tomove_p. E.g.,:Major changes
particle_mover_t->disp{x,y,z}has changed. Previously,dispreferred to a scaled displacement in terms of the grid spacing. It now refers to the unscaled Cartesian displacement.CHECKPT_VIEWto checkpoint the size/type of a view andCHECKPT_VIEW_DATAto checkpoint the contents. Restore has similar macros. Checkpoint/restore code relocated from main simulation class to objects.grid_t::neighborwas deprecated and removed in favor ofgrid_t::k_neighbor_h*_kokkosfunctions to*hydro_pported to gpu, similar tohydro_pbranch and addresses Port hydro_p to Kokkos #9Minor changes
set_region_fieldmacro.Kokkos::finalize()moved tohalt_services()field_advance/standard/borris.hrather than explicitly written.sample/bench/advance_pand added it as a build product to create a standard performance benchmark,vpic-benchmarkTest changes
rho_ptest since host-side accumulation was deprecated.Known Issues
devel. This branch raises an error.r=0, but could be implemented soonabsorb_fieldboundary 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
sorterandcompressorintospecies_advance/standard(optional)Weibel_driver)r=0?