Merge pull request #867 from stanmoore1/kk_tweaks
Tweaks to KOKKOS package
This commit is contained in:
@ -89,6 +89,17 @@ PairReaxCKokkos<DeviceType>::~PairReaxCKokkos()
|
|||||||
tmpid = NULL;
|
tmpid = NULL;
|
||||||
memoryKK->destroy_kokkos(k_tmpbo,tmpbo);
|
memoryKK->destroy_kokkos(k_tmpbo,tmpbo);
|
||||||
tmpbo = NULL;
|
tmpbo = NULL;
|
||||||
|
|
||||||
|
// deallocate views of views in serial to prevent race condition in profiling tools
|
||||||
|
|
||||||
|
for (int i = 0; i < k_LR.extent(0); i++) {
|
||||||
|
for (int j = 0; j < k_LR.extent(1); j++) {
|
||||||
|
k_LR.h_view(i,j).d_vdW = decltype(k_LR.h_view(i,j).d_vdW )();
|
||||||
|
k_LR.h_view(i,j).d_CEvd = decltype(k_LR.h_view(i,j).d_CEvd )();
|
||||||
|
k_LR.h_view(i,j).d_ele = decltype(k_LR.h_view(i,j).d_ele )();
|
||||||
|
k_LR.h_view(i,j).d_CEclmb = decltype(k_LR.h_view(i,j).d_CEclmb)();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
@ -376,47 +387,31 @@ void PairReaxCKokkos<DeviceType>::init_md()
|
|||||||
for (int j = i; j <= ntypes; ++j) {
|
for (int j = i; j <= ntypes; ++j) {
|
||||||
int n = LR[i][j].n;
|
int n = LR[i][j].n;
|
||||||
if (n == 0) continue;
|
if (n == 0) continue;
|
||||||
k_LR.h_view(i,j).xmin = LR[i][j].xmin;
|
|
||||||
k_LR.h_view(i,j).xmax = LR[i][j].xmax;
|
|
||||||
k_LR.h_view(i,j).n = LR[i][j].n;
|
|
||||||
k_LR.h_view(i,j).dx = LR[i][j].dx;
|
k_LR.h_view(i,j).dx = LR[i][j].dx;
|
||||||
k_LR.h_view(i,j).inv_dx = LR[i][j].inv_dx;
|
k_LR.h_view(i,j).inv_dx = LR[i][j].inv_dx;
|
||||||
k_LR.h_view(i,j).a = LR[i][j].a;
|
|
||||||
k_LR.h_view(i,j).m = LR[i][j].m;
|
|
||||||
k_LR.h_view(i,j).c = LR[i][j].c;
|
|
||||||
|
|
||||||
typename LR_lookup_table_kk<DeviceType>::tdual_LR_data_1d k_y = typename LR_lookup_table_kk<DeviceType>::tdual_LR_data_1d("lookup:LR[i,j].y",n);
|
|
||||||
typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d k_H = typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d("lookup:LR[i,j].H",n);
|
|
||||||
typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d k_vdW = typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d("lookup:LR[i,j].vdW",n);
|
typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d k_vdW = typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d("lookup:LR[i,j].vdW",n);
|
||||||
typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d k_CEvd = typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEvd",n);
|
typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d k_CEvd = typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEvd",n);
|
||||||
typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d k_ele = typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d("lookup:LR[i,j].ele",n);
|
typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d k_ele = typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d("lookup:LR[i,j].ele",n);
|
||||||
typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d k_CEclmb = typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEclmb",n);
|
typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d k_CEclmb = typename LR_lookup_table_kk<DeviceType>::tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEclmb",n);
|
||||||
|
|
||||||
k_LR.h_view(i,j).d_y = k_y.template view<DeviceType>();
|
|
||||||
k_LR.h_view(i,j).d_H = k_H.template view<DeviceType>();
|
|
||||||
k_LR.h_view(i,j).d_vdW = k_vdW.template view<DeviceType>();
|
k_LR.h_view(i,j).d_vdW = k_vdW.template view<DeviceType>();
|
||||||
k_LR.h_view(i,j).d_CEvd = k_CEvd.template view<DeviceType>();
|
k_LR.h_view(i,j).d_CEvd = k_CEvd.template view<DeviceType>();
|
||||||
k_LR.h_view(i,j).d_ele = k_ele.template view<DeviceType>();
|
k_LR.h_view(i,j).d_ele = k_ele.template view<DeviceType>();
|
||||||
k_LR.h_view(i,j).d_CEclmb = k_CEclmb.template view<DeviceType>();
|
k_LR.h_view(i,j).d_CEclmb = k_CEclmb.template view<DeviceType>();
|
||||||
|
|
||||||
for (int k = 0; k < n; k++) {
|
for (int k = 0; k < n; k++) {
|
||||||
k_y.h_view(k) = LR[i][j].y[k];
|
|
||||||
k_H.h_view(k) = LR[i][j].H[k];
|
|
||||||
k_vdW.h_view(k) = LR[i][j].vdW[k];
|
k_vdW.h_view(k) = LR[i][j].vdW[k];
|
||||||
k_CEvd.h_view(k) = LR[i][j].CEvd[k];
|
k_CEvd.h_view(k) = LR[i][j].CEvd[k];
|
||||||
k_ele.h_view(k) = LR[i][j].ele[k];
|
k_ele.h_view(k) = LR[i][j].ele[k];
|
||||||
k_CEclmb.h_view(k) = LR[i][j].CEclmb[k];
|
k_CEclmb.h_view(k) = LR[i][j].CEclmb[k];
|
||||||
}
|
}
|
||||||
|
|
||||||
k_y.template modify<LMPHostType>();
|
|
||||||
k_H.template modify<LMPHostType>();
|
|
||||||
k_vdW.template modify<LMPHostType>();
|
k_vdW.template modify<LMPHostType>();
|
||||||
k_CEvd.template modify<LMPHostType>();
|
k_CEvd.template modify<LMPHostType>();
|
||||||
k_ele.template modify<LMPHostType>();
|
k_ele.template modify<LMPHostType>();
|
||||||
k_CEclmb.template modify<LMPHostType>();
|
k_CEclmb.template modify<LMPHostType>();
|
||||||
|
|
||||||
k_y.template sync<DeviceType>();
|
|
||||||
k_H.template sync<DeviceType>();
|
|
||||||
k_vdW.template sync<DeviceType>();
|
k_vdW.template sync<DeviceType>();
|
||||||
k_CEvd.template sync<DeviceType>();
|
k_CEvd.template sync<DeviceType>();
|
||||||
k_ele.template sync<DeviceType>();
|
k_ele.template sync<DeviceType>();
|
||||||
@ -1216,7 +1211,7 @@ void PairReaxCKokkos<DeviceType>::operator()(PairReaxComputeTabulatedLJCoulomb<N
|
|||||||
|
|
||||||
const int tmin = MIN( itype, jtype );
|
const int tmin = MIN( itype, jtype );
|
||||||
const int tmax = MAX( itype, jtype );
|
const int tmax = MAX( itype, jtype );
|
||||||
const LR_lookup_table_kk<DeviceType> t = d_LR(tmin,tmax);
|
const LR_lookup_table_kk<DeviceType>& t = d_LR(tmin,tmax);
|
||||||
|
|
||||||
|
|
||||||
/* Cubic Spline Interpolation */
|
/* Cubic Spline Interpolation */
|
||||||
|
|||||||
@ -42,21 +42,11 @@ namespace LAMMPS_NS {
|
|||||||
template<class DeviceType>
|
template<class DeviceType>
|
||||||
struct LR_lookup_table_kk
|
struct LR_lookup_table_kk
|
||||||
{
|
{
|
||||||
typedef Kokkos::DualView<LR_data*,Kokkos::LayoutRight,DeviceType> tdual_LR_data_1d;
|
|
||||||
typedef typename tdual_LR_data_1d::t_dev t_LR_data_1d;
|
|
||||||
|
|
||||||
typedef Kokkos::DualView<cubic_spline_coef*,Kokkos::LayoutRight,DeviceType> tdual_cubic_spline_coef_1d;
|
typedef Kokkos::DualView<cubic_spline_coef*,Kokkos::LayoutRight,DeviceType> tdual_cubic_spline_coef_1d;
|
||||||
typedef typename tdual_cubic_spline_coef_1d::t_dev t_cubic_spline_coef_1d;
|
typedef typename tdual_cubic_spline_coef_1d::t_dev t_cubic_spline_coef_1d;
|
||||||
|
|
||||||
double xmin, xmax;
|
|
||||||
int n;
|
|
||||||
double dx, inv_dx;
|
double dx, inv_dx;
|
||||||
double a;
|
|
||||||
double m;
|
|
||||||
double c;
|
|
||||||
|
|
||||||
t_LR_data_1d d_y;
|
|
||||||
t_cubic_spline_coef_1d d_H;
|
|
||||||
t_cubic_spline_coef_1d d_vdW, d_CEvd;
|
t_cubic_spline_coef_1d d_vdW, d_CEvd;
|
||||||
t_cubic_spline_coef_1d d_ele, d_CEclmb;
|
t_cubic_spline_coef_1d d_ele, d_CEclmb;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -23,7 +23,7 @@ ARCHIVE = ar
|
|||||||
ARFLAGS = -rc
|
ARFLAGS = -rc
|
||||||
SHLIBFLAGS = -shared
|
SHLIBFLAGS = -shared
|
||||||
KOKKOS_DEVICES = Cuda
|
KOKKOS_DEVICES = Cuda
|
||||||
KOKKOS_ARCH = Kepler35
|
KOKKOS_ARCH = Kepler35
|
||||||
|
|
||||||
# ---------------------------------------------------------------------
|
# ---------------------------------------------------------------------
|
||||||
# LAMMPS-specific settings, all OPTIONAL
|
# LAMMPS-specific settings, all OPTIONAL
|
||||||
|
|||||||
Reference in New Issue
Block a user