Since there appears to be no interest by the LAMMPS and Kokkos developers in
incorporating ACKS2 into the Kokkos Reax package for LAMMPS, would someone
please at least direct me to the documentation necessary to do this myself?
I've read the LAMMPS Developer pdf file and that gives me some information.
Where would be the best information for me to read for the Kokkos package?
Also, are there any specific procedures and coding standards that must be
followed to implement this addition?
The best source of information about the LAMMPS coding style is the LAMMPS source code. More specifically, if you want to add ACKS2 to the KOKKOS package, then you should start by familiarizing yourself with src/KOKKOS/fix_qeq_reax_kokkos.cpp/.h. The most important requirements for any code contribution be that it has been tested and that it has a LAMMPS doc page. It would also be nice if users could easily switch fix qeq/reax from the current EEM style to the new ACKS2 style by adding a keyword. Another option might be to add ACKS2 as another variant of the fix qeq style. The source files for this are all in the src/QEQ directory, but this package has not yet been ported to KOKKOS.
Jim, another option would be for you to code ACKS2 cleanly in regular C++ and get that released in LAMMPS, and I'd be willing to add Kokkos support based on your working implementation.
That would be preferable, since we always like to have
a vanilla reference implementation (non-KOKKOS/GPU/OMP, etc)
in the code as well.
Thanks for working on this Jim …
Steve, Stan and Adian,
Should the C++ version include MPI parallelization or is a serial version OK?
Eventually it will need to be MPI parallel. But you
can start with serial, we can advise on how to make
it parallel. E.g. the only MPI operations in fix qeq/reax
are the forward/reverse comm operations (for ghost
atom quantities) and a few MPI_Allreduce() calls
for computing parallel dot products and the like.
Just FYI we are now working on implementing ACKS2 in LAMMPS.