Commit Graph

16 Commits

Author SHA1 Message Date
b96b6b9cd7 Fixing error checks 2017-06-19 14:04:16 -06:00
d5eceebf32 USER-DPD Kokkos: add support for full neighbor lists.
Note: "newton on" still required if using non-kokkos pair styles or fixes.
Non-kokkos pairs/fixes don't expect their half lists with newton off,
which happens if newton is turned off globally by kokkos via commandline.
Note2: Regardless, fix_shardlow* will still use half lists and newton on.
2017-03-13 01:56:00 -04:00
acc5bde0fe Removed printf's from FixRXKokkos and FixRX.
- Commented out the printf's in FixRXKokkos and FixRX used for
  active debugging.
2017-02-13 16:36:30 -05:00
799d55e097 Switched to operator()'s and Tag's for the Kokkos launch objects.
- Switched from using lambda functions to operator()'s with type tags
  in FixRxKokkos. The lambda's were giving big problems in Cuda with
  the memory objects. This required that all referenced views be members
  of the FixRXKokkos class.
- Add copymode controls to solve_reactions() to avoid the destructor
  freeing pointers carried forward from the copy constructor. Added
  the same to FixRX since its called, too.
2017-02-13 16:33:21 -05:00
4e9c8f4962 Update FixRXKokkos for Cuda build. Added inline and other KOKKOS macros.
- Updated the function prototypes to include the necessary KOKKOS
macros for __host__ and __device__ functions and inlined functions.
- Changed several View definitions to match the disjoint memory spaces
that only come up with Cuda builds.
2017-02-13 16:33:21 -05:00
2f32c1a9af Switched to using Kokkos device data for ODE scratch data.
- Finished porting all scratch arrays to using the StridedArrayType
  template.
- Created a single, large Kokkos device array and using that for all
  scratch data passed into the StridedArrayType objects.
2017-02-13 16:33:20 -05:00
4ac7a5d1f2 Added Kokkos-like array datatype into RK4 and RHS in FixRXKokkos.
- Created an Array class that provides stride access for operator[]
  w/o needing Kokkos views. This was designed to avoid the performance
  issues encountered with Views and sub-views throughout the RHS and
  ODE solver functions.
2017-02-13 16:33:20 -05:00
93d99ec8d0 Added ODE diagnostics to FixRxKokkos using Kokkos managed data.
- Added the diagnostics performance analysis routine to FixRxKokkos
  using Kokkos views.
TODO:
  - Switch to using Kokkos data for the per-iteration scratch data.
    How to allocate only enouch for each work-unit and not all
    iterations? Can the shared-memory scratch memory work for this,
    even for large sizes?
2017-02-13 16:33:19 -05:00
4e8351d9c8 Code clean-up for FixRxKokkos.
- Removed dead code and old errors.
TODO:
  - Per-thread scratch data in kokkos.
  - ODE Diagnostics in kokkos.
2017-02-13 16:33:19 -05:00
f2d005fb8d Fixed errors in FixRxKokkos kokkos neighbor lists initialization and
usage and calls to computeLocalTemperature.

- Created request for kokkos neighbor list for fix and switched to
  that neighbor list datatype in computeLocalTemperature.
- Reconfigured pre_force and setup_pre_force to call a common
  solve_reactions() method to avoid duplicate code.
TODO:
  - Clean-up
  - Provide per-problem scratch data within kokkos framework (instead
    of C++ new/delete data).
2017-02-13 16:33:18 -05:00
0d57a1d831 Added setup_pre_force, pack/unpack methods to FixRxKokkos.
- Added a kokkos version of setup_pre_force that only sets dvector
  and then communicates that.
- Converted all for loops to parallel_for's in computeLocalTemperator()
  and setup_pre_force.
- Added pack/unpack forward/reverse methods with Kokkos host views.

TODO:
 - The Kokkos neighbor list is not working. Need to request a Kokkos
   neighbor list in ::init(). Then, replace objects like list->ilist[]
   with k_list->d_ilist().
2017-02-13 16:33:18 -05:00
acba25c383 Added kokkos datatypes to FixRxKokkos::computeLocalTemperature(...)
Added kokkos dual-view datatypes used in computeLocalTemperature and
pre_force (e.g., dpdThetaLocal) but still using the original host
pointers for the pack/unpack operations.

TODO:
- The Kokkos neighbor list is not working. Need to request a Kokkos
  neighbor list in ::init(). Then, replace objects like list->ilist[]
  with k_list->d_ilist().
- Add another template parameter for HALFTHREAD and create (automatic)
  atomic view of dpdThetaLocal and sumWeights.
- Add modify/sync comments and replace the host-only pointers in the
  pack/unpack methods.
2017-02-13 16:33:17 -05:00
843f3a9192 Updates to FixRxKokkos ...
- Added templated computeLocalTemp<>() to FixRxKokkos but still
  using the original host data pointers.
- Updated the copy-back to dvector operation to be the same with
  RK4 and RKF45 per discussion with J. Larentzos.
TODO:
  - Add kokkos data for computeLocalTemp and parallel_for loop.
2017-02-13 16:33:15 -05:00
2ea900df00 Updated FixRxKokkos to use kokkos-managed data objects.
- Switched to use kokkos dvector, mask, and dpdTheta views
  from atomKK.
2017-02-13 16:33:13 -05:00
41d3903f5a Added kokkos-managed parameters for FixRxKokkos.
- Added kokkos-managed parameter data for the kinetics equations.
- Removed dependencies in rhs() on atom and domain objects.

TODO:
  1. Switch to using KOKKOS data for dvector.
  2. Port ComputeLocalTemp(...) to Kokkos (needs pairing algorithm).
2017-02-13 16:33:05 -05:00
43d61f313f Initial bare-bones port of FixRX to Kokkos.
Initial port of USER-DPD/fix_rx.cpp to KOKKOS/fix_rx_kokkos.cpp.
Using parallel_reduce(...) but still using host-only data.
TODO:
  1. Switch to KOKKOS datatypes for sparse-kinetics data; dense
     is finished.
  2. Switch to using KOKKOS data for dvector.
  3. Remove dependencies in rhs(...) on atom. Store those consts
     in UserData{} or as member constants.
  4. Port ComputeLocalTemp(...) to Kokkos (needs pairing algorithm).
2017-02-13 16:33:02 -05:00