From f3acafa0e702fdceee6e004e84b897912904aa17 Mon Sep 17 00:00:00 2001 From: Berk Hess Date: Thu, 14 Nov 2013 09:59:50 +0100 Subject: [PATCH] Implemented nbnxn LJ switch functions The nbnxn C reference and SIMD kernels now support force and potential switching, which are selected through vdw_modifier. Both use analytical functions, since tables are expensive with SIMD. Made the nbnxn kernel naming consistent with the group scheme. Corresponding CUDA kernels will be added soon. Dispersion correction always needs table generation, which had always been a fortuitous side effect of something else, until this patch. Change-Id: I52a1cda5ec7c3bdce6f3f2735ff7b13303ea5880 --- share/html/online/mdp_opt.html | 14 +- src/gromacs/gmxlib/inputrec.c | 12 +- src/gromacs/gmxlib/names.c | 2 +- src/gromacs/gmxlib/nonbonded/nb_generic.c | 11 +- .../gmxlib/nonbonded/nb_generic_adress.c | 11 +- src/gromacs/gmxlib/nrnb.c | 74 ++++- src/gromacs/gmxpreprocess/calc_verletbuf.c | 64 +++- src/gromacs/gmxpreprocess/readir.c | 36 ++- src/gromacs/legacyheaders/types/enums.h | 2 +- .../legacyheaders/types/interaction_const.h | 41 ++- src/gromacs/legacyheaders/types/nrnb.h | 4 +- src/gromacs/mdlib/forcerec.c | 110 +++++-- src/gromacs/mdlib/nbnxn_atomdata.c | 16 +- src/gromacs/mdlib/nbnxn_atomdata.h | 3 +- src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda.cu | 26 +- .../mdlib/nbnxn_cuda/nbnxn_cuda_data_mgmt.cu | 9 +- .../mdlib/nbnxn_cuda/nbnxn_cuda_kernel.cuh | 8 +- .../mdlib/nbnxn_cuda/nbnxn_cuda_kernels.cuh | 12 +- .../make_verlet_simd_kernel_files.py | 67 ++-- .../nbnxn_kernel_simd_template.c.pre | 73 +++-- .../mdlib/nbnxn_kernels/nbnxn_kernel_ref.c | 171 +++++------ .../nbnxn_kernels/nbnxn_kernel_ref_includes.h | 54 ++++ .../nbnxn_kernels/nbnxn_kernel_ref_inner.h | 85 ++++-- .../nbnxn_kernels/nbnxn_kernel_ref_outer.h | 39 ++- ...rnel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn.c} | 32 +- ...nel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn.c} | 6 +- ..._ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn.c} | 6 +- ...kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn.c} | 9 +- ...ernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn.c} | 6 +- ...el_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn.c} | 6 +- ...nxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn.c | 88 ++++++ ...n_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn.c} | 10 +- ...kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn.c | 89 ++++++ ...nxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn.c | 88 ++++++ ...n_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn.c} | 8 +- ...ernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn.c} | 8 +- .../nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn.c | 87 ++++++ ...bnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn.c} | 9 +- ...n_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn.c} | 9 +- ...bnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn.c} | 10 +- ...nxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn.c} | 8 +- ..._kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn.c} | 8 +- ... nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn.c} | 30 +- .../nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn.c | 86 ++++++ ...xn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn.c} | 13 +- .../nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn.c | 87 ++++++ .../nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn.c | 87 ++++++ .../nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn.c | 88 ++++++ .../nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn.c | 87 ++++++ .../nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn.c | 87 ++++++ .../nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn.c | 88 ++++++ .../nbnxn_kernel_ElecEw_VdwLJ_F_2xnn.c | 86 ++++++ .../nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn.c | 86 ++++++ .../nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn.c | 87 ++++++ ...l_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn.c} | 8 +- ..._ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn.c} | 11 +- ...lecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn.c | 88 ++++++ ...nel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn.c} | 8 +- ...el_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn.c} | 9 +- ..._ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn.c | 88 ++++++ ..._kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn.c | 88 ++++++ ...ernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn.c} | 11 +- ...el_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn.c} | 36 +-- ..._kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn.c | 88 ++++++ ...ernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn.c} | 7 +- ...el_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn.c} | 7 +- ...nxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn.c | 87 ++++++ ...n_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn.c} | 9 +- ...ernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn.c} | 9 +- ...n_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn.c} | 6 +- ..._kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn.c} | 7 +- ...rnel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn.c} | 9 +- ...nxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn.c} | 6 +- ...xn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn.c} | 7 +- ...kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn.c} | 13 +- .../nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn.c | 87 ++++++ .../nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn.c | 87 ++++++ ...nxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn.c | 88 ++++++ .../nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn.c | 87 ++++++ .../nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn.c | 87 ++++++ ...nxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn.c | 88 ++++++ .../nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn.c | 86 ++++++ .../nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn.c | 86 ++++++ .../nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn.c | 87 ++++++ ...bnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn.c} | 8 +- ...nxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn.c} | 8 +- ..._kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn.c} | 10 +- ... nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn.c} | 8 +- ...nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn.c} | 8 +- ...xn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn.c} | 11 +- .../nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn.c | 87 ++++++ .../nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn.c | 87 ++++++ .../nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn.c | 88 ++++++ .../nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn.c | 87 ++++++ .../nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn.c | 87 ++++++ .../nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn.c | 88 ++++++ .../nbnxn_kernel_ElecRF_VdwLJ_F_2xnn.c | 86 ++++++ .../nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn.c | 86 ++++++ .../nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn.c | 87 ++++++ .../simd_2xnn/nbnxn_kernel_simd_2xnn.c | 190 +++++++----- .../simd_2xnn/nbnxn_kernel_simd_2xnn.h | 122 +++++--- .../simd_2xnn/nbnxn_kernel_simd_2xnn_common.h | 1 + ...kernel_simd_2xnn_ewald_comb_geom_energrp.c | 87 ------ ...rnel_simd_2xnn_ewald_twin_comb_lb_noener.c | 87 ------ ...rnel_simd_2xnn_ewald_twin_comb_none_ener.c | 87 ------ ...el_simd_2xnn_ewald_twin_comb_none_noener.c | 87 ------ .../simd_2xnn/nbnxn_kernel_simd_2xnn_inner.h | 223 ++++++++++---- .../simd_2xnn/nbnxn_kernel_simd_2xnn_outer.h | 127 ++++++-- ...xn_kernel_simd_2xnn_rf_comb_geom_energrp.c | 87 ------ ...bnxn_kernel_simd_2xnn_rf_comb_lb_energrp.c | 87 ------ ...kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn.c | 87 ++++++ ...rnel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn.c} | 6 +- ...l_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn.c} | 6 +- ..._kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn.c} | 9 +- ...kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn.c} | 6 +- ...nel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn.c} | 6 +- ...bnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn.c | 88 ++++++ ...xn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn.c} | 12 +- ..._kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn.c | 89 ++++++ ...bnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn.c | 88 ++++++ ...xn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn.c} | 8 +- ...kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn.c} | 8 +- .../nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn.c | 87 ++++++ ...nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn.c} | 9 +- ...xn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn.c} | 10 +- ...nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn.c} | 10 +- ...bnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn.c} | 8 +- ...n_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn.c} | 8 +- ...> nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn.c} | 30 +- .../nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn.c | 86 ++++++ ...bnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn.c | 87 ++++++ .../nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn.c | 87 ++++++ .../nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn.c | 87 ++++++ .../nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn.c | 88 ++++++ .../nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn.c | 87 ++++++ .../nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn.c | 87 ++++++ .../nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn.c | 88 ++++++ .../nbnxn_kernel_ElecEw_VdwLJ_F_4xn.c | 86 ++++++ .../nbnxn_kernel_ElecEw_VdwLJ_VF_4xn.c | 86 ++++++ .../nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn.c | 87 ++++++ ...el_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn.c} | 8 +- ...l_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn.c} | 11 +- ...ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn.c | 88 ++++++ ...rnel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn.c} | 8 +- ...nel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn.c} | 9 +- ...l_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn.c | 88 ++++++ ...n_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn.c | 88 ++++++ ...kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn.c} | 11 +- ...nel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn.c} | 34 ++- ..._kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn.c} | 35 +-- ...kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn.c} | 7 +- ...nel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn.c} | 7 +- ...nxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn.c} | 9 +- ...xn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn.c} | 10 +- ...kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn.c} | 9 +- ...xn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn.c} | 6 +- ...n_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn.c} | 7 +- ...ernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn.c} | 9 +- ...bnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn.c} | 6 +- ...nxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn.c} | 7 +- ..._kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn.c} | 13 +- .../nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn.c | 87 ++++++ .../nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn.c | 87 ++++++ ...bnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn.c | 88 ++++++ .../nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn.c | 87 ++++++ ... nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn.c} | 31 +- ...nxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn.c} | 32 +- .../nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn.c | 86 ++++++ .../nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn.c | 86 ++++++ .../nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn.c | 87 ++++++ ...nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn.c} | 8 +- ...bnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn.c} | 8 +- ...n_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn.c} | 10 +- ...> nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn.c} | 8 +- ... nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn.c} | 8 +- ...nxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn.c} | 11 +- .../nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn.c | 87 ++++++ .../nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn.c | 87 ++++++ .../nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn.c | 88 ++++++ .../nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn.c | 87 ++++++ .../nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn.c | 87 ++++++ .../nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn.c | 88 ++++++ .../nbnxn_kernel_ElecRF_VdwLJ_F_4xn.c | 86 ++++++ .../nbnxn_kernel_ElecRF_VdwLJ_VF_4xn.c | 86 ++++++ .../nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn.c | 87 ++++++ .../simd_4xn/nbnxn_kernel_simd_4xn.c | 191 +++++++----- .../simd_4xn/nbnxn_kernel_simd_4xn.h | 122 +++++--- .../simd_4xn/nbnxn_kernel_simd_4xn_common.h | 1 + ..._kernel_simd_4xn_ewald_comb_geom_energrp.c | 87 ------ ...ernel_simd_4xn_ewald_twin_comb_none_ener.c | 87 ------ .../simd_4xn/nbnxn_kernel_simd_4xn_inner.h | 285 +++++++++++++----- .../simd_4xn/nbnxn_kernel_simd_4xn_outer.h | 126 ++++++-- ...nxn_kernel_simd_4xn_rf_comb_geom_energrp.c | 87 ------ ...nbnxn_kernel_simd_4xn_rf_comb_lb_energrp.c | 87 ------ ...xn_kernel_simd_4xn_tab_twin_comb_lb_ener.c | 87 ------ ...ernel_simd_4xn_tab_twin_comb_none_noener.c | 87 ------ src/gromacs/mdlib/sim_util.c | 21 +- src/gromacs/mdlib/tables.c | 27 ++ src/programs/mdrun/runner.c | 28 +- 199 files changed, 8412 insertions(+), 2168 deletions(-) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_includes.h rename src/gromacs/mdlib/nbnxn_kernels/{simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener.c => simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn.c} (83%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener.c => nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn.c} (95%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp.c => nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn.c} (95%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_ewald_comb_none_noener.c => nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener.c => nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn.c} (95%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp.c => nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn.c} (95%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener.c => nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn.c} (92%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_ewald_comb_none_ener.c => nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp.c => nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn.c} (93%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_rf_comb_none_ener.c => nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_rf_comb_none_energrp.c => nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_rf_comb_geom_ener.c => nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener.c => nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp.c => nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener.c => nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn.c} (67%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_rf_comb_geom_noener.c => nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn.c} (92%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_F_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn.c} (93%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn.c} (94%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/{simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener.c => simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn.c} (82%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn.c} (94%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_tab_comb_none_noener.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_tab_comb_geom_noener.c => nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn.c} (95%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp.c => nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp.c => nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_tab_comb_lb_noener.c => nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn.c} (95%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp.c => nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener.c => nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn.c} (93%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_rf_comb_lb_noener.c => nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_tab_comb_geom_ener.c => nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_tab_comb_none_energrp.c => nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_rf_comb_lb_ener.c => nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_tab_comb_lb_ener.c => nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/{nbnxn_kernel_simd_2xnn_rf_comb_none_noener.c => nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn.c} (93%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_F_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn.c delete mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp.c delete mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener.c delete mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener.c delete mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener.c delete mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp.c delete mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener.c => nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn.c} (95%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp.c => nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn.c} (95%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_ewald_comb_geom_noener.c => nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener.c => nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn.c} (95%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp.c => nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn.c} (95%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_comb_none_noener.c => nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn.c} (92%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_ewald_comb_none_ener.c => nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_ewald_comb_none_energrp.c => nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn.c} (93%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_rf_comb_none_ener.c => nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_ewald_comb_geom_ener.c => nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn.c} (92%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_rf_comb_geom_ener.c => nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_ewald_comb_lb_ener.c => nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp.c => nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_ewald_comb_lb_noener.c => nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn.c} (68%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_F_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_VF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn.c} (93%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn.c} (94%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/{simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener.c => simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn.c} (82%) rename src/gromacs/mdlib/nbnxn_kernels/{simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener.c => simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn.c} (82%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_rf_comb_none_noener.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_rf_comb_none_energrp.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener.c => nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_comb_geom_noener.c => nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn.c} (95%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_comb_geom_energrp.c => nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp.c => nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_comb_lb_noener.c => nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_comb_lb_energrp.c => nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_ewald_comb_none_noener.c => nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn.c} (92%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_comb_none_ener.c => nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn.c} (68%) rename src/gromacs/mdlib/nbnxn_kernels/{simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_ener.c => simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn.c} (82%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn.c rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_rf_comb_lb_noener.c => nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_comb_geom_ener.c => nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_comb_none_energrp.c => nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn.c} (93%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_rf_comb_lb_ener.c => nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_tab_comb_lb_ener.c => nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn.c} (94%) rename src/gromacs/mdlib/nbnxn_kernels/simd_4xn/{nbnxn_kernel_simd_4xn_rf_comb_geom_noener.c => nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn.c} (93%) create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_F_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_VF_4xn.c create mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn.c delete mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp.c delete mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener.c delete mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_energrp.c delete mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_energrp.c delete mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener.c delete mode 100644 src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener.c diff --git a/share/html/online/mdp_opt.html b/share/html/online/mdp_opt.html index 874da1d556..deb3d287c4 100644 --- a/share/html/online/mdp_opt.html +++ b/share/html/online/mdp_opt.html @@ -710,7 +710,7 @@ affect the forces or the sampling.
rcoulomb-switch: (0) [nm]
-
where to start switching the Coulomb potential
+
where to start switching the Coulomb potential, only relevant when force or potential switching is used
rcoulomb: (1) [nm]
distance for the Coulomb cut-off
@@ -746,7 +746,8 @@ combination rules that are to be used by the reciprocal routine are set using lj-pme-comb-rule.
Shift
-
The LJ (not Buckingham) potential is decreased over the whole +
This functionality is deprecated and replaced by vdw-modifier = Force-switch. +The LJ (not Buckingham) potential is decreased over the whole range and the forces decay smoothly to zero between rvdw-switch and rvdw. The neighbor search cut-off rlist should be 0.1 to 0.3 nm larger than rvdw to accommodate for the size of @@ -754,7 +755,8 @@ charge groups and diffusion between neighbor list updates.
Switch
-
The LJ (not Buckingham) +
This functionality is deprecated and replaced by vdw-modifier = Potential-switch. +The LJ (not Buckingham) potential is normal out to rvdw-switch, after which it is switched off to reach zero at rvdw. Both the potential and force functions are continuously smooth, but be aware that all switch functions will give rise @@ -788,10 +790,14 @@ This makes the potential the integral of the force. Note that this does not affect the forces or the sampling.
None
Use an unmodified Van der Waals potential. With the group scheme this means no exact cut-off is used, energies and forces are calculated for all pairs in the neighborlist.
+
Force-switch
+
Smoothly switches the forces to zero between rvdw-switch and rvdw. This shifts the potential shift over the whole range and switches it to zero at the cut-off. Note that this is more expensive to calculate than a plain cut-off and it is not required for energy conservation, since Potential-shift conserves energy just as well.
+
Potential-switch
+
Smoothly switches the potential to zero between rvdw-switch and rvdw. Note that this introduces articifically large forces in the switching region and is much more expensive to calculate. This option should only be used if the force field you are using requires this.
rvdw-switch: (0) [nm]
-
where to start switching the LJ potential
+
where to start switching the LJ force and possibly the potential, only relevant when force or potential switching is used
rvdw: (1) [nm]
distance for the LJ or Buckingham cut-off
diff --git a/src/gromacs/gmxlib/inputrec.c b/src/gromacs/gmxlib/inputrec.c index 74e186cc40..1ba89ef3aa 100644 --- a/src/gromacs/gmxlib/inputrec.c +++ b/src/gromacs/gmxlib/inputrec.c @@ -203,12 +203,14 @@ gmx_bool ir_coulomb_switched(const t_inputrec *ir) ir->coulombtype == eelENCADSHIFT || ir->coulombtype == eelPMESWITCH || ir->coulombtype == eelPMEUSERSWITCH || - ir->coulomb_modifier == eintmodPOTSWITCH); + ir->coulomb_modifier == eintmodPOTSWITCH || + ir->coulomb_modifier == eintmodFORCESWITCH); } gmx_bool ir_coulomb_is_zero_at_cutoff(const t_inputrec *ir) { - return (ir_coulomb_switched(ir) || ir->coulomb_modifier != eintmodNONE || + return (ir->cutoff_scheme == ecutsVERLET || + ir_coulomb_switched(ir) || ir->coulomb_modifier != eintmodNONE || ir->coulombtype == eelRF_ZERO); } @@ -222,12 +224,14 @@ gmx_bool ir_vdw_switched(const t_inputrec *ir) return (ir->vdwtype == evdwSWITCH || ir->vdwtype == evdwSHIFT || ir->vdwtype == evdwENCADSHIFT || - ir->vdw_modifier == eintmodPOTSWITCH); + ir->vdw_modifier == eintmodPOTSWITCH || + ir->vdw_modifier == eintmodFORCESWITCH); } gmx_bool ir_vdw_is_zero_at_cutoff(const t_inputrec *ir) { - return (ir_vdw_switched(ir) || ir->vdw_modifier != eintmodNONE); + return (ir->cutoff_scheme == ecutsVERLET || + ir_vdw_switched(ir) || ir->vdw_modifier != eintmodNONE); } gmx_bool ir_vdw_might_be_zero_at_cutoff(const t_inputrec *ir) diff --git a/src/gromacs/gmxlib/names.c b/src/gromacs/gmxlib/names.c index afc9f16006..42670fe034 100644 --- a/src/gromacs/gmxlib/names.c +++ b/src/gromacs/gmxlib/names.c @@ -102,7 +102,7 @@ const char *econstr_names[econtNR+1] = { }; const char *eintmod_names[eintmodNR+1] = { - "Potential-shift-Verlet", "Potential-shift", "None", "Potential-switch", "Exact-cutoff", NULL + "Potential-shift-Verlet", "Potential-shift", "None", "Potential-switch", "Exact-cutoff", "Force-switch", NULL }; const char *egrp_nm[egNR+1] = { diff --git a/src/gromacs/gmxlib/nonbonded/nb_generic.c b/src/gromacs/gmxlib/nonbonded/nb_generic.c index 23991f979a..e81ca49723 100644 --- a/src/gromacs/gmxlib/nonbonded/nb_generic.c +++ b/src/gromacs/gmxlib/nonbonded/nb_generic.c @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2012, by the GROMACS development team, led by + * Copyright (c) 2012,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -92,7 +92,7 @@ gmx_nb_generic_kernel(t_nblist * nlist, int ewitab; real ewtabscale, eweps, sh_ewald, ewrt, ewtabhalfspace; real * ewtab; - real rcoulomb2, rvdw, rvdw2, sh_invrc6; + real rcoulomb2, rvdw, rvdw2, sh_dispersion, sh_repulsion; real rcutoff, rcutoff2; real rswitch_elec, rswitch_vdw, d, d2, sw, dsw, rinvcorr; real elec_swV3, elec_swV4, elec_swV5, elec_swF2, elec_swF3, elec_swF4; @@ -118,7 +118,8 @@ gmx_nb_generic_kernel(t_nblist * nlist, rcoulomb2 = fr->rcoulomb*fr->rcoulomb; rvdw = fr->rvdw; rvdw2 = rvdw*rvdw; - sh_invrc6 = fr->ic->sh_invrc6; + sh_dispersion = fr->ic->dispersion_shift.cpot; + sh_repulsion = fr->ic->repulsion_shift.cpot; if (fr->coulomb_modifier == eintmodPOTSWITCH) { @@ -335,7 +336,7 @@ gmx_nb_generic_kernel(t_nblist * nlist, fvdw = (vvdw_rep-vvdw_disp)*rinvsq; if (fr->vdw_modifier == eintmodPOTSHIFT) { - vvdw = (vvdw_rep-c12*sh_invrc6*sh_invrc6)*(1.0/12.0)-(vvdw_disp-c6*sh_invrc6)*(1.0/6.0); + vvdw = (vvdw_rep + c12*sh_repulsion)/12.0 - (vvdw_disp + c6*sh_dispersion)/6.0; } else { @@ -356,7 +357,7 @@ gmx_nb_generic_kernel(t_nblist * nlist, fvdw = (br*vvdw_rep-vvdw_disp)*rinvsq; if (fr->vdw_modifier == eintmodPOTSHIFT) { - vvdw = (vvdw_rep-cexp1*exp(-cexp2*rvdw))-(vvdw_disp-c6*sh_invrc6)/6.0; + vvdw = (vvdw_rep-cexp1*exp(-cexp2*rvdw))-(vvdw_disp + c6*sh_dispersion)/6.0; } else { diff --git a/src/gromacs/gmxlib/nonbonded/nb_generic_adress.c b/src/gromacs/gmxlib/nonbonded/nb_generic_adress.c index 0aaf27f4b7..1eb690c7df 100644 --- a/src/gromacs/gmxlib/nonbonded/nb_generic_adress.c +++ b/src/gromacs/gmxlib/nonbonded/nb_generic_adress.c @@ -3,7 +3,7 @@ * * Copyright (c) 2009 Christoph Junghans, Brad Lambeth. * Copyright (c) 2011 Christoph Junghans, Sebastian Fritsch. - * Copyright (c) 2011,2012,2013, by the GROMACS development team, led by + * Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -93,7 +93,7 @@ gmx_nb_generic_adress_kernel(t_nblist * nlist, int ewitab; real ewtabscale, eweps, sh_ewald, ewrt, ewtabhalfspace; real * ewtab; - real rcoulomb2, rvdw, rvdw2, sh_invrc6; + real rcoulomb2, rvdw, rvdw2, sh_dispersion, sh_repulsion; real rcutoff, rcutoff2; real rswitch_elec, rswitch_vdw, d, d2, sw, dsw, rinvcorr; real elec_swV3, elec_swV4, elec_swV5, elec_swF2, elec_swF3, elec_swF4; @@ -132,7 +132,8 @@ gmx_nb_generic_adress_kernel(t_nblist * nlist, rcoulomb2 = fr->rcoulomb*fr->rcoulomb; rvdw = fr->rvdw; rvdw2 = rvdw*rvdw; - sh_invrc6 = fr->ic->sh_invrc6; + sh_dispersion = fr->ic->dispersion_shift.cpot; + sh_repulsion = fr->ic->repulsion_shift.cpot; if (fr->coulomb_modifier == eintmodPOTSWITCH) { @@ -400,7 +401,7 @@ gmx_nb_generic_adress_kernel(t_nblist * nlist, fvdw = (vvdw_rep-vvdw_disp)*rinvsq; if (fr->vdw_modifier == eintmodPOTSHIFT) { - vvdw = (vvdw_rep-c12*sh_invrc6*sh_invrc6)*(1.0/12.0)-(vvdw_disp-c6*sh_invrc6)*(1.0/6.0); + vvdw = (vvdw_rep + c12*sh_repulsion)/12.0 - (vvdw_disp + c6*sh_dispersion)/6.0; } else { @@ -421,7 +422,7 @@ gmx_nb_generic_adress_kernel(t_nblist * nlist, fvdw = (br*vvdw_rep-vvdw_disp)*rinvsq; if (fr->vdw_modifier == eintmodPOTSHIFT) { - vvdw = (vvdw_rep-cexp1*exp(-cexp2*rvdw))-(vvdw_disp-c6*sh_invrc6)/6.0; + vvdw = (vvdw_rep-cexp1*exp(-cexp2*rvdw)) - (vvdw_disp + c6*sh_dispersion)/6.0; } else { diff --git a/src/gromacs/gmxlib/nrnb.c b/src/gromacs/gmxlib/nrnb.c index b65d1ed7ea..2f818ff252 100644 --- a/src/gromacs/gmxlib/nrnb.c +++ b/src/gromacs/gmxlib/nrnb.c @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013, by the GROMACS development team, led by + * Copyright (c) 2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -99,20 +99,25 @@ static const t_nrnb_data nbdata[eNRNB] = { * - GPU always does exclusions, which requires 2-4 flops, but as invsqrt * is always counted as 6 flops, this roughly compensates. */ - { "NxN RF Elec. + VdW [F]", 38 }, /* nbnxn kernel LJ+RF, no ener */ - { "NxN RF Elec. + VdW [V&F]", 54 }, - { "NxN QSTab Elec. + VdW [F]", 41 }, /* nbnxn kernel LJ+tab, no en */ - { "NxN QSTab Elec. + VdW [V&F]", 59 }, - { "NxN Ewald Elec. + VdW [F]", 66 }, /* nbnxn kernel LJ+Ewald, no en */ - { "NxN Ewald Elec. + VdW [V&F]", 107 }, - { "NxN VdW [F]", 33 }, /* nbnxn kernel LJ, no ener */ - { "NxN VdW [V&F]", 43 }, + { "NxN RF Elec. + LJ [F]", 38 }, /* nbnxn kernel LJ+RF, no ener */ + { "NxN RF Elec. + LJ [V&F]", 54 }, + { "NxN QSTab Elec. + LJ [F]", 41 }, /* nbnxn kernel LJ+tab, no en */ + { "NxN QSTab Elec. + LJ [V&F]", 59 }, + { "NxN Ewald Elec. + LJ [F]", 66 }, /* nbnxn kernel LJ+Ewald, no en */ + { "NxN Ewald Elec. + LJ [V&F]", 107 }, + { "NxN LJ [F]", 33 }, /* nbnxn kernel LJ, no ener */ + { "NxN LJ [V&F]", 43 }, { "NxN RF Electrostatics [F]", 31 }, /* nbnxn kernel RF, no ener */ { "NxN RF Electrostatics [V&F]", 36 }, { "NxN QSTab Elec. [F]", 34 }, /* nbnxn kernel tab, no ener */ { "NxN QSTab Elec. [V&F]", 41 }, { "NxN Ewald Elec. [F]", 61 }, /* nbnxn kernel Ewald, no ener */ { "NxN Ewald Elec. [V&F]", 84 }, + /* The switch function flops should be added to the LJ kernels above */ + { "NxN LJ add F-switch [F]", 12 }, /* extra cost for LJ F-switch */ + { "NxN LJ add F-switch [V&F]", 22 }, + { "NxN LJ add P-switch [F]", 27 }, /* extra cost for LJ P-switch */ + { "NxN LJ add P-switch [V&F]", 20 }, { "1,4 nonbonded interactions", 90 }, { "Born radii (Still)", 47 }, { "Born radii (HCT/OBC)", 183 }, @@ -305,9 +310,21 @@ void _inc_nrnb(t_nrnb *nrnb, int enr, int inc, char gmx_unused *file, int gmx_un #endif } +/* Returns in enr is the index of a full nbnxn VdW kernel */ +static gmx_bool nrnb_is_nbnxn_vdw_kernel(int enr) +{ + return (enr >= eNR_NBNXN_LJ_RF && enr <= eNR_NBNXN_LJ_E); +} + +/* Returns in enr is the index of an nbnxn kernel addition (switch function) */ +static gmx_bool nrnb_is_nbnxn_kernel_addition(int enr) +{ + return (enr >= eNR_NBNXN_LJ_FSW && enr <= eNR_NBNXN_LJ_PSW_E); +} + void print_flop(FILE *out, t_nrnb *nrnb, double *nbfs, double *mflop) { - int i; + int i, j; double mni, frac, tfrac, tflop; const char *myline = "-----------------------------------------------------------------------------"; @@ -367,13 +384,38 @@ void print_flop(FILE *out, t_nrnb *nrnb, double *nbfs, double *mflop) for (i = 0; (i < eNRNB); i++) { mni = 1e-6*nrnb->n[i]; - *mflop += mni*nbdata[i].flop; - frac = 100.0*mni*nbdata[i].flop/tflop; - tfrac += frac; - if (out && mni != 0) + /* Skip empty entries and nbnxn additional flops, + * which have been added to the kernel entry. + */ + if (mni > 0 && !nrnb_is_nbnxn_kernel_addition(i)) { - fprintf(out, " %-32s %16.6f %15.3f %6.1f\n", - nbdata[i].name, mni, mni*nbdata[i].flop, frac); + int flop; + + flop = nbdata[i].flop; + if (nrnb_is_nbnxn_vdw_kernel(i)) + { + /* Possibly add the cost of a switch function */ + for (j = eNR_NBNXN_LJ_FSW; j <= eNR_NBNXN_LJ_PSW; j += 2) + { + int e_kernel_add; + + /* Select the force or energy flop count */ + e_kernel_add = j + ((i - eNR_NBNXN_LJ_RF) % 2); + + if (nrnb->n[e_kernel_add] > 0) + { + flop += nbdata[e_kernel_add].flop; + } + } + } + *mflop += mni*flop; + frac = 100.0*mni*flop/tflop; + tfrac += frac; + if (out != NULL) + { + fprintf(out, " %-32s %16.6f %15.3f %6.1f\n", + nbdata[i].name, mni, mni*flop, frac); + } } } if (out) diff --git a/src/gromacs/gmxpreprocess/calc_verletbuf.c b/src/gromacs/gmxpreprocess/calc_verletbuf.c index 13baaf0ce5..6cebe7772e 100644 --- a/src/gromacs/gmxpreprocess/calc_verletbuf.c +++ b/src/gromacs/gmxpreprocess/calc_verletbuf.c @@ -546,7 +546,9 @@ static void approx_2dof(real s2, real x, real *shift, real *scale) static real ener_drift(const verletbuf_atomtype_t *att, int natt, const gmx_ffparams_t *ffp, real kT_fac, - real md_ljd, real md_ljr, real md_el, real dd_el, + real md_ljd, real dd_ljd, + real md_ljr, real dd_ljr, + real md_el, real dd_el, real r_buffer, real rlist, real boxvol) { @@ -584,7 +586,10 @@ static real ener_drift(const verletbuf_atomtype_t *att, int natt, md_el*att[i].prop.q*att[j].prop.q; /* d2V/dr2 at the cut-off for Coulomb, we neglect LJ */ - dd = dd_el*att[i].prop.q*att[j].prop.q; + dd = + dd_ljd*ffp->iparams[ti*ffp->atnr+tj].lj.c6 + + dd_ljr*ffp->iparams[ti*ffp->atnr+tj].lj.c12 + + dd_el*att[i].prop.q*att[j].prop.q; rsh = r_buffer; sc_fac = 1.0; @@ -726,7 +731,7 @@ void calc_verlet_buffer_size(const gmx_mtop_t *mtop, real boxvol, verletbuf_atomtype_t *att = NULL; int natt = -1, i; double reppow; - real md_ljd, md_ljr, md_el, dd_el; + real md_ljd, dd_ljd, md_ljr, dd_ljr, md_el, dd_el; real elfac; real kT_fac, mass_min; int ib0, ib1, ib; @@ -804,13 +809,48 @@ void calc_verlet_buffer_size(const gmx_mtop_t *mtop, real boxvol, reppow = mtop->ffparams.reppow; md_ljd = 0; + dd_ljd = 0; md_ljr = 0; + dd_ljr = 0; if (ir->vdwtype == evdwCUT) { - /* -dV/dr of -r^-6 and r^-repporw */ - md_ljd = -6*pow(ir->rvdw, -7.0); - md_ljr = reppow*pow(ir->rvdw, -(reppow+1)); - /* The contribution of the second derivative is negligible */ + real sw_range, sw_range2; + + switch (ir->vdw_modifier) + { + case eintmodNONE: + case eintmodPOTSHIFT: + /* -dV/dr of -r^-6 and r^-reppow */ + md_ljd = -6*pow(ir->rvdw, -7.0); + md_ljr = reppow*pow(ir->rvdw, -(reppow+1)); + /* The contribution of the second derivative is negligible */ + break; + case eintmodFORCESWITCH: + /* At the cut-off: V=V'=V''=0. + * We choose to approximate the potential over the switch + * region using a linear force, thus quadratic potential. + * This is a tight overestimate for too short switching + * regions and not more than a factor 2 higher otherwise. + */ + sw_range = ir->rvdw - ir->rvdw_switch; + dd_ljd = -6*pow(ir->rvdw_switch, -7.0 )/sw_range; + dd_ljr = reppow*pow(ir->rvdw_switch, -(reppow+1))/sw_range; + break; + case eintmodPOTSWITCH: + /* At the cut-off: V=V'=V''=0. + * We choose to approximate the potential over the switch + * region using a quadratic potential. + * This is an overestimate close to the cut-off and can be + * a slight underestimate close to rswitch. + */ + sw_range = ir->rvdw - ir->rvdw_switch; + sw_range2 = sw_range*sw_range; + dd_ljd = -12*pow(ir->rvdw_switch, -6.0 )/sw_range2; + dd_ljr = 2*reppow*pow(ir->rvdw_switch, -reppow)/sw_range2; + break; + default: + gmx_incons("Unimplemented VdW modifier"); + } } else if (EVDW_PME(ir->vdwtype)) { @@ -934,8 +974,9 @@ void calc_verlet_buffer_size(const gmx_mtop_t *mtop, real boxvol, if (debug) { - fprintf(debug, "md_ljd %e md_ljr %e\n", md_ljd, md_ljr); - fprintf(debug, "md_el %e dd_el %e\n", md_el, dd_el); + fprintf(debug, "md_ljd %9.2e dd_ljd %9.2e\n", md_ljd, dd_ljd); + fprintf(debug, "md_ljr %9.2e dd_ljr %9.2e\n", md_ljr, dd_ljr); + fprintf(debug, "md_el %9.2e dd_el %9.2e\n", md_el, dd_el); fprintf(debug, "sqrt(kT_fac) %f\n", sqrt(kT_fac)); fprintf(debug, "mass_min %f\n", mass_min); } @@ -955,7 +996,10 @@ void calc_verlet_buffer_size(const gmx_mtop_t *mtop, real boxvol, */ drift = ener_drift(att, natt, &mtop->ffparams, kT_fac, - md_ljd, md_ljr, md_el, dd_el, rb, + md_ljd, dd_ljd, + md_ljr, dd_ljr, + md_el, dd_el, + rb, rl, boxvol); /* Correct for the fact that we are using a Ni x Nj particle pair list diff --git a/src/gromacs/gmxpreprocess/readir.c b/src/gromacs/gmxpreprocess/readir.c index 4fde014d5f..853977c2ca 100644 --- a/src/gromacs/gmxpreprocess/readir.c +++ b/src/gromacs/gmxpreprocess/readir.c @@ -325,6 +325,25 @@ void check_ir(const char *mdparin, t_inputrec *ir, t_gromppopts *opts, { warning_error(wi, "With Verlet lists rcoulomb!=rvdw is not supported"); } + if (ir->vdwtype == evdwSHIFT || ir->vdwtype == evdwSWITCH) + { + if (ir->vdw_modifier == eintmodNONE || + ir->vdw_modifier == eintmodPOTSHIFT) + { + ir->vdw_modifier = (ir->vdwtype == evdwSHIFT ? eintmodFORCESWITCH : eintmodPOTSWITCH); + + sprintf(warn_buf, "Replacing vdwtype=%s by the equivalent combination of vdwtype=%s and vdw_modifier=%s", evdw_names[ir->vdwtype], evdw_names[evdwCUT], eintmod_names[ir->vdw_modifier]); + warning_note(wi, warn_buf); + + ir->vdwtype = evdwCUT; + } + else + { + sprintf(warn_buf, "Unsupported combination of vdwtype=%s and vdw_modifier=%s", evdw_names[ir->vdwtype], eintmod_names[ir->vdw_modifier]); + warning_error(wi, warn_buf); + } + } + if (ir->vdwtype != evdwCUT) { warning_error(wi, "With Verlet lists only cut-off LJ interactions are supported"); @@ -335,6 +354,12 @@ void check_ir(const char *mdparin, t_inputrec *ir, t_gromppopts *opts, { warning_error(wi, "With Verlet lists only cut-off, reaction-field, PME and Ewald electrostatics are supported"); } + if (!(ir->coulomb_modifier == eintmodNONE || + ir->coulomb_modifier == eintmodPOTSHIFT)) + { + sprintf(warn_buf, "coulomb_modifier=%s is not supported with the Verlet cut-off scheme", eintmod_names[ir->coulomb_modifier]); + warning_error(wi, warn_buf); + } if (ir->nstlist <= 0) { @@ -1185,8 +1210,7 @@ void check_ir(const char *mdparin, t_inputrec *ir, t_gromppopts *opts, if (ir_vdw_switched(ir)) { - sprintf(err_buf, "With vdwtype = %s rvdw-switch must be < rvdw. Or, better - use a potential modifier.", - evdw_names[ir->vdwtype]); + sprintf(err_buf, "With switched vdw forces or potentials, rvdw-switch must be < rvdw"); CHECK(ir->rvdw_switch >= ir->rvdw); } else if (ir->vdwtype == evdwCUT) @@ -1197,6 +1221,7 @@ void check_ir(const char *mdparin, t_inputrec *ir, t_gromppopts *opts, CHECK(ir->rlist > ir->rvdw); } } + if (ir->cutoff_scheme == ecutsGROUP) { if (((ir->coulomb_modifier != eintmodNONE && ir->rcoulomb == ir->rlist) || @@ -1256,7 +1281,7 @@ void check_ir(const char *mdparin, t_inputrec *ir, t_gromppopts *opts, evdw_names[evdwSHIFT]); warning_note(wi, warn_buf); } - if (!ir_coulomb_might_be_zero_at_cutoff(ir) && ir->rcoulomb > 0 && ir->coulomb_modifier == eintmodNONE) + if (!ir_coulomb_might_be_zero_at_cutoff(ir) && ir->rcoulomb > 0) { sprintf(warn_buf, "You are using a cut-off for electrostatics with NVE, for good energy conservation use coulombtype = %s or %s", eel_names[eelPMESWITCH], eel_names[eelRF_ZERO]); @@ -4206,7 +4231,7 @@ void check_chargegroup_radii(const gmx_mtop_t *mtop, const t_inputrec *ir, * since user defined interactions might purposely * not be zero at the cut-off. */ - if ((ir_vdw_is_zero_at_cutoff(ir) || ir->vdw_modifier != eintmodNONE) && + if (ir_vdw_is_zero_at_cutoff(ir) && rvdw1 + rvdw2 > ir->rlistlong - ir->rvdw) { sprintf(warn_buf, "The sum of the two largest charge group " @@ -4227,8 +4252,7 @@ void check_chargegroup_radii(const gmx_mtop_t *mtop, const t_inputrec *ir, warning_note(wi, warn_buf); } } - if ((ir_coulomb_is_zero_at_cutoff(ir) || - ir->coulomb_modifier != eintmodNONE) && + if (ir_coulomb_is_zero_at_cutoff(ir) && rcoul1 + rcoul2 > ir->rlistlong - ir->rcoulomb) { sprintf(warn_buf, "The sum of the two largest charge group radii (%f) is larger than %s (%f) - rcoulomb (%f).\n" diff --git a/src/gromacs/legacyheaders/types/enums.h b/src/gromacs/legacyheaders/types/enums.h index a77e714e36..5133ea4b73 100644 --- a/src/gromacs/legacyheaders/types/enums.h +++ b/src/gromacs/legacyheaders/types/enums.h @@ -90,7 +90,7 @@ enum { * Exactcutoff is only used by Reaction-field-zero, and is not user-selectable. */ enum eintmod { - eintmodPOTSHIFT_VERLET, eintmodPOTSHIFT, eintmodNONE, eintmodPOTSWITCH, eintmodEXACTCUTOFF, eintmodNR + eintmodPOTSHIFT_VERLET, eintmodPOTSHIFT, eintmodNONE, eintmodPOTSWITCH, eintmodEXACTCUTOFF, eintmodFORCESWITCH, eintmodNR }; /* diff --git a/src/gromacs/legacyheaders/types/interaction_const.h b/src/gromacs/legacyheaders/types/interaction_const.h index 3e4833ce5c..2f82b4956b 100644 --- a/src/gromacs/legacyheaders/types/interaction_const.h +++ b/src/gromacs/legacyheaders/types/interaction_const.h @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -40,10 +40,43 @@ extern "C" { #endif +/* Used with force switching or a constant potential shift: + * rsw = max(r - r_switch, 0) + * force/p = r^-(p+1) + c2*rsw^2 + c3*rsw^3 + * potential = r^-p + c2/3*rsw^3 + c3/4*rsw^4 + cpot + * With a constant potential shift c2 and c3 are both 0. + */ +typedef struct { + real c2; + real c3; + real cpot; +} shift_consts_t; + +/* Used with potential switching: + * rsw = max(r - r_switch, 0) + * sw = 1 + c3*rsw^3 + c4*rsw^4 + c5*rsw^5 + * dsw = 3*c3*rsw^2 + 4*c4*rsw^3 + 5*c5*rsw^4 + * force = force*dsw - potential*sw + * potential *= sw + */ +typedef struct { + real c3; + real c4; + real c5; +} switch_consts_t; + typedef struct { /* VdW */ - real rvdw; - real sh_invrc6; /* For shifting the LJ potential */ + int vdw_modifier; + real rvdw; + real rvdw_switch; + shift_consts_t dispersion_shift; + shift_consts_t repulsion_shift; + switch_consts_t vdw_switch; + /* TODO: remove this variable, used for not modyfing the group kernels, + * it is equal to -dispersion_shift->cpot + */ + real sh_invrc6; /* type of electrostatics (defined in enums.h) */ int eeltype; @@ -58,7 +91,7 @@ typedef struct { /* PME/Ewald */ real ewaldcoeff_q; real ewaldcoeff_lj; - real sh_ewald; /* For shifting the Ewald potential */ + real sh_ewald; /* -sh_ewald is added to the direct space potential */ /* Dielectric constant resp. multiplication factor for charges */ real epsilon_r; diff --git a/src/gromacs/legacyheaders/types/nrnb.h b/src/gromacs/legacyheaders/types/nrnb.h index 573bbf12d7..cd504aa273 100644 --- a/src/gromacs/legacyheaders/types/nrnb.h +++ b/src/gromacs/legacyheaders/types/nrnb.h @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013, by the GROMACS development team, led by + * Copyright (c) 2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -91,6 +91,8 @@ enum eNR_NBNXN_RF, eNR_NBNXN_RF_E, eNR_NBNXN_TAB, eNR_NBNXN_TAB_E, eNR_NBNXN_EWALD, eNR_NBNXN_EWALD_E, + eNR_NBNXN_LJ_FSW, eNR_NBNXN_LJ_FSW_E, + eNR_NBNXN_LJ_PSW, eNR_NBNXN_LJ_PSW_E, eNR_NB14, eNR_BORN_RADII_STILL, eNR_BORN_RADII_HCT_OBC, eNR_BORN_CHAINRULE, diff --git a/src/gromacs/mdlib/forcerec.c b/src/gromacs/mdlib/forcerec.c index f5ecbb1332..c88c0f4f77 100644 --- a/src/gromacs/mdlib/forcerec.c +++ b/src/gromacs/mdlib/forcerec.c @@ -74,6 +74,7 @@ #include "nbnxn_consts.h" #include "gmx_omp_nthreads.h" #include "gmx_detect_hardware.h" +#include "inputrec.h" #ifdef _MSC_VER /* MSVC definition for __cpuid() */ @@ -1835,11 +1836,52 @@ void init_interaction_const_tables(FILE *fp, } } -static void init_interaction_const(FILE *fp, - const t_commrec gmx_unused *cr, - interaction_const_t **interaction_const, - const t_forcerec *fr, - real rtab) +static void clear_force_switch_constants(shift_consts_t *sc) +{ + sc->c2 = 0; + sc->c3 = 0; + sc->cpot = 0; +} + +static void force_switch_constants(real p, + real rsw, real rc, + shift_consts_t *sc) +{ + /* Here we determine the coefficient for shifting the force to zero + * between distance rsw and the cut-off rc. + * For a potential of r^-p, we have force p*r^-(p+1). + * But to save flops we absorb p in the coefficient. + * Thus we get: + * force/p = r^-(p+1) + c2*r^2 + c3*r^3 + * potential = r^-p + c2/3*r^3 + c3/4*r^4 + cpot + */ + sc->c2 = ((p + 1)*rsw - (p + 4)*rc)/(pow(rc, p + 2)*pow(rc - rsw, 2)); + sc->c3 = -((p + 1)*rsw - (p + 3)*rc)/(pow(rc, p + 2)*pow(rc - rsw, 3)); + sc->cpot = -pow(rc, -p) + p*sc->c2/3*pow(rc - rsw, 3) + p*sc->c3/4*pow(rc - rsw, 4); +} + +static void potential_switch_constants(real rsw, real rc, + switch_consts_t *sc) +{ + /* The switch function is 1 at rsw and 0 at rc. + * The derivative and second derivate are zero at both ends. + * rsw = max(r - r_switch, 0) + * sw = 1 + c3*rsw^3 + c4*rsw^4 + c5*rsw^5 + * dsw = 3*c3*rsw^2 + 4*c4*rsw^3 + 5*c5*rsw^4 + * force = force*dsw - potential*sw + * potential *= sw + */ + sc->c3 = -10*pow(rc - rsw, -3); + sc->c4 = 15*pow(rc - rsw, -4); + sc->c5 = -6*pow(rc - rsw, -5); +} + +static void +init_interaction_const(FILE *fp, + const t_commrec gmx_unused *cr, + interaction_const_t **interaction_const, + const t_forcerec *fr, + real rtab) { interaction_const_t *ic; gmx_bool bUsesSimpleTables = TRUE; @@ -1855,16 +1897,41 @@ static void init_interaction_const(FILE *fp, ic->rlistlong = fr->rlistlong; /* Lennard-Jones */ - ic->rvdw = fr->rvdw; - if (fr->vdw_modifier == eintmodPOTSHIFT) - { - ic->sh_invrc6 = pow(ic->rvdw, -6.0); - } - else - { - ic->sh_invrc6 = 0; + ic->vdw_modifier = fr->vdw_modifier; + ic->rvdw = fr->rvdw; + ic->rvdw_switch = fr->rvdw_switch; + clear_force_switch_constants(&ic->dispersion_shift); + clear_force_switch_constants(&ic->repulsion_shift); + + switch (ic->vdw_modifier) + { + case eintmodPOTSHIFT: + /* Only shift the potential, don't touch the force */ + ic->dispersion_shift.cpot = -pow(ic->rvdw, -6.0); + ic->repulsion_shift.cpot = -pow(ic->rvdw, -12.0); + break; + case eintmodFORCESWITCH: + /* Switch the force, switch and shift the potential */ + force_switch_constants(6.0, ic->rvdw_switch, ic->rvdw, + &ic->dispersion_shift); + force_switch_constants(12.0, ic->rvdw_switch, ic->rvdw, + &ic->repulsion_shift); + break; + case eintmodPOTSWITCH: + /* Switch the potential and force */ + potential_switch_constants(ic->rvdw_switch, ic->rvdw, + &ic->vdw_switch); + break; + case eintmodNONE: + case eintmodEXACTCUTOFF: + /* Nothing to do here */ + break; + default: + gmx_incons("unimplemented potential modifier"); } + ic->sh_invrc6 = -ic->dispersion_shift.cpot; + /* Electrostatics */ ic->eeltype = fr->eeltype; ic->rcoulomb = fr->rcoulomb; @@ -1909,14 +1976,14 @@ static void init_interaction_const(FILE *fp, if (fp != NULL) { fprintf(fp, "Potential shift: LJ r^-12: %.3f r^-6 %.3f", - sqr(ic->sh_invrc6), ic->sh_invrc6); + ic->repulsion_shift.cpot, ic->dispersion_shift.cpot); if (ic->eeltype == eelCUT) { - fprintf(fp, ", Coulomb %.3f", ic->c_rf); + fprintf(fp, ", Coulomb %.3f", -ic->c_rf); } else if (EEL_PME(ic->eeltype)) { - fprintf(fp, ", Ewald %.3e", ic->sh_ewald); + fprintf(fp, ", Ewald %.3e", -ic->sh_ewald); } fprintf(fp, "\n"); } @@ -2082,13 +2149,19 @@ static void init_nb_verlet(FILE *fp, if (i == 0 || nbv->grp[0].kernel_type != nbv->grp[i].kernel_type) { + gmx_bool bSimpleList; + + bSimpleList = nbnxn_kernel_pairlist_simple(nbv->grp[i].kernel_type); + snew(nbv->grp[i].nbat, 1); nbnxn_atomdata_init(fp, nbv->grp[i].nbat, nbv->grp[i].kernel_type, + /* SIMD LJ switch kernels don't support LJ combination rules */ + bSimpleList && !(fr->vdw_modifier == eintmodFORCESWITCH || fr->vdw_modifier == eintmodPOTSWITCH), fr->ntype, fr->nbfp, ir->opts.ngener, - nbnxn_kernel_pairlist_simple(nbv->grp[i].kernel_type) ? gmx_omp_nthreads_get(emntNonbonded) : 1, + bSimpleList ? gmx_omp_nthreads_get(emntNonbonded) : 1, nb_alloc, nb_free); } else @@ -2740,7 +2813,8 @@ void init_forcerec(FILE *fp, * A little unnecessary to make both vdw and coul tables sometimes, * but what the heck... */ - bMakeTables = fr->bcoultab || fr->bvdwtab || fr->bEwald; + bMakeTables = fr->bcoultab || fr->bvdwtab || fr->bEwald || + (ir->eDispCorr != edispcNO && ir_vdw_switched(ir)); bMakeSeparate14Table = ((!bMakeTables || fr->eeltype != eelCUT || fr->vdwtype != evdwCUT || fr->bBHAM || fr->bEwald) && diff --git a/src/gromacs/mdlib/nbnxn_atomdata.c b/src/gromacs/mdlib/nbnxn_atomdata.c index 1abfe492e8..157f788e3f 100644 --- a/src/gromacs/mdlib/nbnxn_atomdata.c +++ b/src/gromacs/mdlib/nbnxn_atomdata.c @@ -359,10 +359,8 @@ void copy_rvec_to_nbat_real(const int *a, int na, int na_round, } } -/* Determines the combination rule (or none) to be used, stores it, - * and sets the LJ parameters required with the rule. - */ -static void set_combination_rule_data(nbnxn_atomdata_t *nbat) +/* Stores the LJ parameter data in a format convenient for the SIMD kernels */ +static void set_ljparam_simd_data(nbnxn_atomdata_t *nbat) { int nt, i, j; real c6, c12; @@ -516,6 +514,7 @@ nbnxn_atomdata_init_simple_exclusion_masks(nbnxn_atomdata_t *nbat) void nbnxn_atomdata_init(FILE *fp, nbnxn_atomdata_t *nbat, int nb_kernel_type, + gmx_bool bTryCombinationRule, int ntype, const real *nbfp, int n_energygroups, int nout, @@ -637,7 +636,7 @@ void nbnxn_atomdata_init(FILE *fp, simple = nbnxn_kernel_pairlist_simple(nb_kernel_type); - if (simple) + if (bTryCombinationRule) { /* We prefer the geometic combination rule, * as that gives a slightly faster kernel than the LB rule. @@ -669,8 +668,6 @@ void nbnxn_atomdata_init(FILE *fp, nbat->comb_rule == ljcrGEOM ? "geometric" : "Lorentz-Berthelot"); } } - - set_combination_rule_data(nbat); } else { @@ -679,6 +676,11 @@ void nbnxn_atomdata_init(FILE *fp, nbat->free(nbat->nbfp_comb); } + if (simple) + { + set_ljparam_simd_data(nbat); + } + nbat->natoms = 0; nbat->type = NULL; nbat->lj_comb = NULL; diff --git a/src/gromacs/mdlib/nbnxn_atomdata.h b/src/gromacs/mdlib/nbnxn_atomdata.h index 3ed443083e..989bd4b127 100644 --- a/src/gromacs/mdlib/nbnxn_atomdata.h +++ b/src/gromacs/mdlib/nbnxn_atomdata.h @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -75,6 +75,7 @@ void copy_rvec_to_nbat_real(const int *a, int na, int na_round, void nbnxn_atomdata_init(FILE *fp, nbnxn_atomdata_t *nbat, int nb_kernel_type, + gmx_bool bTryCombinationRule, int ntype, const real *nbfp, int n_energygroups, int nout, diff --git a/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda.cu b/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda.cu index d8be3de2e2..134b43e3a9 100644 --- a/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda.cu +++ b/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda.cu @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -155,18 +155,18 @@ static const int nPruneKernelTypes = 2; /* 0 - no prune, 1 - prune */ static const nbnxn_cu_kfunc_ptr_t nb_default_kfunc_ptr[eelCuNR][nEnergyKernelTypes][nPruneKernelTypes] = { - { { k_nbnxn_cutoff, k_nbnxn_cutoff_prune }, - { k_nbnxn_cutoff_ener, k_nbnxn_cutoff_ener_prune } }, - { { k_nbnxn_rf, k_nbnxn_rf_prune }, - { k_nbnxn_rf_ener, k_nbnxn_rf_ener_prune } }, - { { k_nbnxn_ewald_tab, k_nbnxn_ewald_tab_prune }, - { k_nbnxn_ewald_tab_ener, k_nbnxn_ewald_tab_ener_prune } }, - { { k_nbnxn_ewald_tab_twin, k_nbnxn_ewald_tab_twin_prune }, - { k_nbnxn_ewald_tab_twin_ener, k_nbnxn_ewald_twin_ener_prune } }, - { { k_nbnxn_ewald, k_nbnxn_ewald_prune }, - { k_nbnxn_ewald_ener, k_nbnxn_ewald_ener_prune } }, - { { k_nbnxn_ewald_twin, k_nbnxn_ewald_twin_prune }, - { k_nbnxn_ewald_twin_ener, k_nbnxn_ewald_twin_ener_prune } }, + { { nbnxn_kernel_ElecCut_VdwLJ_F_cuda, nbnxn_kernel_ElecCut_VdwLJ_F_prune_cuda }, + { nbnxn_kernel_ElecCut_VdwLJ_VF_cuda, nbnxn_kernel_ElecCut_VdwLJ_VF_prune_cuda } }, + { { nbnxn_kernel_ElecRF_VdwLJ_F_cuda, nbnxn_kernel_ElecRF_VdwLJ_F_prune_cuda }, + { nbnxn_kernel_ElecRF_VdwLJ_VF_cuda, nbnxn_kernel_ElecRF_VdwLJ_VF_prune_cuda } }, + { { nbnxn_kernel_ElecEwQSTab_VdwLJ_F_cuda, nbnxn_kernel_ElecEwQSTab_VdwLJ_F_prune_cuda }, + { nbnxn_kernel_ElecEwQSTab_VdwLJ_VF_cuda, nbnxn_kernel_ElecEwQSTab_VdwLJ_VF_prune_cuda } }, + { { nbnxn_kernel_ElecEwQSTabTwinCut_VdwLJ_F_cuda, nbnxn_kernel_ElecEwQSTabTwinCut_VdwLJ_F_prune_cuda }, + { nbnxn_kernel_ElecEwQSTabTwinCut_VdwLJ_VF_cuda, nbnxn_kernel_ElecEwQSTabTwinCut_VdwLJ_VF_prune_cuda } }, + { { nbnxn_kernel_ElecEw_VdwLJ_F_cuda, nbnxn_kernel_ElecEw_VdwLJ_F_prune_cuda }, + { nbnxn_kernel_ElecEw_VdwLJ_VF_cuda, nbnxn_kernel_ElecEw_VdwLJ_VF_prune_cuda } }, + { { nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_cuda, nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_prune_cuda }, + { nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_cuda, nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_prune_cuda } } }; /*! Return a pointer to the kernel version to be executed at the current step. */ diff --git a/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_data_mgmt.cu b/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_data_mgmt.cu index fd75a3d1f0..cae773528a 100644 --- a/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_data_mgmt.cu +++ b/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_data_mgmt.cu @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -279,6 +279,13 @@ static void init_nbparam(cu_nbparam_t *nbp, nbp->rlist_sq = ic->rlist * ic->rlist; nbp->sh_invrc6 = ic->sh_invrc6; + /* TODO: implemented LJ force- and potential-switch CUDA kernels */ + if (!(ic->vdw_modifier == eintmodNONE || + ic->vdw_modifier == eintmodPOTSHIFT)) + { + gmx_fatal(FARGS, "The CUDA kernels do not yet support switched LJ interactions"); + } + if (ic->eeltype == eelCUT) { nbp->eeltype = eelCuCUT; diff --git a/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_kernel.cuh b/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_kernel.cuh index 33214acd45..bc3dd5f43c 100644 --- a/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_kernel.cuh +++ b/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_kernel.cuh @@ -64,15 +64,15 @@ __launch_bounds__(64, 16) #endif #ifdef PRUNE_NBL #ifdef CALC_ENERGIES -__global__ void NB_KERNEL_FUNC_NAME(k_nbnxn, _ener_prune) +__global__ void NB_KERNEL_FUNC_NAME(nbnxn_kernel, _VF_prune_cuda) #else -__global__ void NB_KERNEL_FUNC_NAME(k_nbnxn, _prune) +__global__ void NB_KERNEL_FUNC_NAME(nbnxn_kernel, _F_prune_cuda) #endif #else #ifdef CALC_ENERGIES -__global__ void NB_KERNEL_FUNC_NAME(k_nbnxn, _ener) +__global__ void NB_KERNEL_FUNC_NAME(nbnxn_kernel, _VF_cuda) #else -__global__ void NB_KERNEL_FUNC_NAME(k_nbnxn) +__global__ void NB_KERNEL_FUNC_NAME(nbnxn_kernel, _F_cuda) #endif #endif (const cu_atomdata_t atdat, diff --git a/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_kernels.cuh b/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_kernels.cuh index 45640b17c1..8f8c53efe7 100644 --- a/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_kernels.cuh +++ b/src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_kernels.cuh @@ -46,14 +46,14 @@ /* Analytical plain cut-off kernels */ #define EL_CUTOFF -#define NB_KERNEL_FUNC_NAME(x, ...) x ## _cutoff ## __VA_ARGS__ +#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecCut_VdwLJ ## __VA_ARGS__ #include "nbnxn_cuda_kernel.cuh" #undef EL_CUTOFF #undef NB_KERNEL_FUNC_NAME /* Analytical reaction-field kernels */ #define EL_RF -#define NB_KERNEL_FUNC_NAME(x, ...) x ## _rf ## __VA_ARGS__ +#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecRF_VdwLJ ## __VA_ARGS__ #include "nbnxn_cuda_kernel.cuh" #undef EL_RF #undef NB_KERNEL_FUNC_NAME @@ -61,7 +61,7 @@ /* Analytical Ewald interaction kernels */ #define EL_EWALD_ANA -#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ewald ## __VA_ARGS__ +#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecEw_VdwLJ ## __VA_ARGS__ #include "nbnxn_cuda_kernel.cuh" #undef EL_EWALD_ANA #undef NB_KERNEL_FUNC_NAME @@ -70,7 +70,7 @@ */ #define EL_EWALD_ANA #define VDW_CUTOFF_CHECK -#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ewald_twin ## __VA_ARGS__ +#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecEwTwinCut_VdwLJ ## __VA_ARGS__ #include "nbnxn_cuda_kernel.cuh" #undef EL_EWALD_ANA #undef VDW_CUTOFF_CHECK @@ -78,7 +78,7 @@ /* Tabulated Ewald interaction kernels */ #define EL_EWALD_TAB -#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ewald_tab ## __VA_ARGS__ +#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecEwQSTab_VdwLJ ## __VA_ARGS__ #include "nbnxn_cuda_kernel.cuh" #undef EL_EWALD_TAB #undef NB_KERNEL_FUNC_NAME @@ -86,7 +86,7 @@ /* Tabulated Ewald interaction kernels with twin-range cut-off */ #define EL_EWALD_TAB #define VDW_CUTOFF_CHECK -#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ewald_tab_twin ## __VA_ARGS__ +#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecEwQSTabTwinCut_VdwLJ ## __VA_ARGS__ #include "nbnxn_cuda_kernel.cuh" #undef EL_EWALD_TAB #undef VDW_CUTOFF_CHECK diff --git a/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/make_verlet_simd_kernel_files.py b/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/make_verlet_simd_kernel_files.py index 2d6c91824a..68d9085079 100755 --- a/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/make_verlet_simd_kernel_files.py +++ b/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/make_verlet_simd_kernel_files.py @@ -79,7 +79,7 @@ import collections # Requires Python 2.7 sys.path.append('../../../../../admin') from copyright import create_copyright_header -FileHeader = create_copyright_header('2012,2013') +FileHeader = create_copyright_header('2012,2013,2014') FileHeader += """/* * Note: this file was generated by the Verlet kernel generator for * kernel type {0}. @@ -99,32 +99,34 @@ def read_kernel_template(filename): # The dict order must match the order of an enumeration in # nbnxn_kernel_simd_template.c.pre ElectrostaticsDict = collections.OrderedDict() -ElectrostaticsDict['rf'] = { 'define' : '#define CALC_COUL_RF' } -ElectrostaticsDict['tab'] = { 'define' : '#define CALC_COUL_TAB' } -ElectrostaticsDict['tab_twin'] = { 'define' : '#define CALC_COUL_TAB\n#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */' } -ElectrostaticsDict['ewald'] = { 'define' : '#define CALC_COUL_EWALD' } -ElectrostaticsDict['ewald_twin'] = { 'define' : '#define CALC_COUL_EWALD\n#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */' } - +ElectrostaticsDict['ElecRF'] = { 'define' : '#define CALC_COUL_RF' } +ElectrostaticsDict['ElecQSTab'] = { 'define' : '#define CALC_COUL_TAB' } +ElectrostaticsDict['ElecQSTabTwinCut'] = { 'define' : '#define CALC_COUL_TAB\n#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */' } +ElectrostaticsDict['ElecEw'] = { 'define' : '#define CALC_COUL_EWALD' } +ElectrostaticsDict['ElecEwTwinCut'] = { 'define' : '#define CALC_COUL_EWALD\n#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */' } + # The dict order must match the order of a C enumeration. -LJCombinationRuleDict = collections.OrderedDict() -LJCombinationRuleDict['geom'] = { 'define' : '#define LJ_COMB_GEOM' } -LJCombinationRuleDict['lb'] = { 'define' : '#define LJ_COMB_LB' } -LJCombinationRuleDict['none'] = { 'define' : '/* Use no LJ combination rule */' } +VdwTreatmentDict = collections.OrderedDict() +VdwTreatmentDict['VdwLJCombGeom'] = { 'define' : '#define LJ_COMB_GEOM' } +VdwTreatmentDict['VdwLJCombLB'] = { 'define' : '#define LJ_COMB_LB' } +VdwTreatmentDict['VdwLJ'] = { 'define' : '/* Use no LJ combination rule */' } +VdwTreatmentDict['VdwLJFSw'] = { 'define' : '/* Use no LJ combination rule */\n#define LJ_FORCE_SWITCH' } +VdwTreatmentDict['VdwLJPSw'] = { 'define' : '/* Use no LJ combination rule */\n#define LJ_POT_SWITCH' } # This is OK as an unordered dict EnergiesComputationDict = { - 'ener' : { + 'F' : { + 'function type' : 'nbk_func_noener', + 'define' : '/* Will not calculate energies */', + }, + 'VF' : { 'function type' : 'nbk_func_ener', 'define' : '#define CALC_ENERGIES', }, - 'energrp' : { + 'VgrpF' : { 'function type' : 'nbk_func_ener', 'define' : '#define CALC_ENERGIES\n#define ENERGY_GROUPS', }, - 'noener' : { - 'function type' : 'nbk_func_noener', - 'define' : '/* Will not calculate energies */', - }, } # This is OK as an unordered dict @@ -159,20 +161,21 @@ KernelsHeaderTemplate = read_kernel_template("nbnxn_kernel_simd_template.h.pre") # for each kernel, a file defining the single C function for that kernel for type in VerletKernelTypeDict: DirName = "../simd_{0}".format(type) - KernelNamePrefix = 'nbnxn_kernel_simd_{0}'.format(type) - KernelsHeaderFileName = "{0}.h".format(KernelNamePrefix) + KernelNamePrefix = 'nbnxn_kernel' + KernelsName = "{0}_simd_{1}".format(KernelNamePrefix,type) + KernelsHeaderFileName = "{0}.h".format(KernelsName,type) KernelFunctionLookupTable = {} KernelDeclarations = '' - KernelTemplate = read_kernel_template("{0}_kernel.c.pre".format(KernelNamePrefix)) + KernelTemplate = read_kernel_template("{0}_kernel.c.pre".format(KernelsName)) # Loop over all kernels for ener in EnergiesComputationDict: KernelFunctionLookupTable[ener] = '{\n' for elec in ElectrostaticsDict: KernelFunctionLookupTable[ener] += ' {\n' - for ljcomb in LJCombinationRuleDict: - KernelName = ('{0}_{1}_comb_{2}_{3}' - .format(KernelNamePrefix,elec,ljcomb,ener)) + for ljtreat in VdwTreatmentDict: + KernelName = ('{0}_{1}_{2}_{3}_{4}' + .format(KernelNamePrefix,elec,ljtreat,ener,type)) # Declare the kernel function KernelDeclarations += ('{1:21} {0};\n' @@ -185,7 +188,7 @@ for type in VerletKernelTypeDict: kernelfp.write(KernelTemplate .format(VerletKernelTypeDict[type]['Define'], ElectrostaticsDict[elec]['define'], - LJCombinationRuleDict[ljcomb]['define'], + VdwTreatmentDict[ljtreat]['define'], EnergiesComputationDict[ener]['define'], KernelsHeaderFileName, KernelName, @@ -206,13 +209,13 @@ for type in VerletKernelTypeDict: with open('{0}/{1}'.format(DirName,KernelsHeaderFileName),'w') as fp: fp.write(FileHeader.format(type)) fp.write(KernelsHeaderTemplate - .format(KernelNamePrefix, - " " * (len(KernelNamePrefix) + 1), + .format(KernelsName, + " " * (len(KernelsName) + 1), KernelDeclarations)) # Write the file defining the kernel dispatcher # function for this type - with open('{0}/{1}'.format(DirName,"{0}.c".format(KernelNamePrefix)),'w') as fp: + with open('{0}/{1}'.format(DirName,"{0}.c".format(KernelsName,type)),'w') as fp: fp.write(FileHeader.format(type)) fp.write(KernelDispatcherTemplate .format(VerletKernelTypeDict[type]['Define'], @@ -220,11 +223,11 @@ for type in VerletKernelTypeDict: VerletKernelTypeDict[type]['WidthCheck'], VerletKernelTypeDict[type]['UnrollSize'], KernelsHeaderFileName, - KernelNamePrefix, - ' ' * (len(KernelNamePrefix)+1), - KernelFunctionLookupTable['ener'], - KernelFunctionLookupTable['energrp'], - KernelFunctionLookupTable['noener'], + KernelsName, + ' ' * (len(KernelsName)+1), + KernelFunctionLookupTable['F'], + KernelFunctionLookupTable['VF'], + KernelFunctionLookupTable['VgrpF'], ) ) diff --git a/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_template.c.pre b/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_template.c.pre index 2b5419414d..bbc8188528 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_template.c.pre +++ b/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_file_generator/nbnxn_kernel_simd_template.c.pre @@ -41,14 +41,15 @@ #ifdef {0} {1} -#include "gmx_simd_macros.h" -#include "gmx_simd_vec.h" +#include "gromacs/simd/macros.h" +#include "gromacs/simd/vector_operations.h" {2} #define GMX_SIMD_J_UNROLL_SIZE {3} #include "{4}" #include "../nbnxn_kernel_common.h" #include "gmx_omp_nthreads.h" #include "types/force_flags.h" +#include "gmx_fatal.h" /*! \brief Kinds of electrostatic treatments in SIMD Verlet kernels */ @@ -56,12 +57,15 @@ enum {{ coultRF, coultTAB, coultTAB_TWIN, coultEWALD, coultEWALD_TWIN, coultNR }}; -/* Declare and define the kernel function pointer lookup tables. */ -static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR] = +/* Declare and define the kernel function pointer lookup tables. + * The minor index of the array goes over both the LJ combination rules, + * which is only supported by plain cut-off, and the LJ switch functions. + */ +static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR+2] = {7} -static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR] = +static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR+2] = {8} -static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR] = +static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR+2] = {9} static void @@ -125,7 +129,7 @@ void {{ int nnbl; nbnxn_pairlist_t **nbl; - int coult; + int coult, ljtreatment = 0; int nb; nnbl = nbl_list->nnbl; @@ -161,6 +165,23 @@ void }} }} + switch (ic->vdw_modifier) + {{ + case eintmodNONE: + case eintmodPOTSHIFT: + ljtreatment = nbat->comb_rule; + break; + /* Switch functions follow after cut-off combination rule kernels */ + case eintmodFORCESWITCH: + ljtreatment = ljcrNR; + break; + case eintmodPOTSWITCH: + ljtreatment = ljcrNR + 1; + break; + default: + gmx_incons("Unsupported VdW interaction modifier"); + }} + #pragma omp parallel for schedule(static) num_threads(gmx_omp_nthreads_get(emntNonbonded)) for (nb = 0; nb < nnbl; nb++) {{ @@ -191,11 +212,11 @@ void if (!(force_flags & GMX_FORCE_ENERGY)) {{ /* Don't calculate energies */ - p_nbk_noener[coult][nbat->comb_rule](nbl[nb], nbat, - ic, - shift_vec, - out->f, - fshift_p); + p_nbk_noener[coult][ljtreatment](nbl[nb], nbat, + ic, + shift_vec, + out->f, + fshift_p); }} else if (out->nV == 1) {{ @@ -203,13 +224,13 @@ void out->Vvdw[0] = 0; out->Vc[0] = 0; - p_nbk_ener[coult][nbat->comb_rule](nbl[nb], nbat, - ic, - shift_vec, - out->f, - fshift_p, - out->Vvdw, - out->Vc); + p_nbk_ener[coult][ljtreatment](nbl[nb], nbat, + ic, + shift_vec, + out->f, + fshift_p, + out->Vvdw, + out->Vc); }} else {{ @@ -225,13 +246,13 @@ void out->VSc[i] = 0; }} - p_nbk_energrp[coult][nbat->comb_rule](nbl[nb], nbat, - ic, - shift_vec, - out->f, - fshift_p, - out->VSvdw, - out->VSc); + p_nbk_energrp[coult][ljtreatment](nbl[nb], nbat, + ic, + shift_vec, + out->f, + fshift_p, + out->VSvdw, + out->VSc); reduce_group_energies(nbat->nenergrp, nbat->neg_2log, out->VSvdw, out->VSc, diff --git a/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref.c b/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref.c index 08cf984af9..e659e5a262 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref.c +++ b/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -49,6 +49,14 @@ /*! \brief Typedefs for declaring lookup tables of kernel functions. */ + +typedef void (*p_nbk_func_noener)(const nbnxn_pairlist_t *nbl, + const nbnxn_atomdata_t *nbat, + const interaction_const_t *ic, + rvec *shift_vec, + real *f, + real *fshift); + typedef void (*p_nbk_func_ener)(const nbnxn_pairlist_t *nbl, const nbnxn_atomdata_t *nbat, const interaction_const_t *ic, @@ -58,72 +66,37 @@ typedef void (*p_nbk_func_ener)(const nbnxn_pairlist_t *nbl, real *Vvdw, real *Vc); -typedef void (*p_nbk_func_noener)(const nbnxn_pairlist_t *nbl, - const nbnxn_atomdata_t *nbat, - const interaction_const_t *ic, - rvec *shift_vec, - real *f, - real *fshift); - /* Analytical reaction-field kernels */ #define CALC_COUL_RF - -/* Include the force+energy kernels */ -#define CALC_ENERGIES -#include "nbnxn_kernel_ref_outer.h" -#undef CALC_ENERGIES - -/* Include the force+energygroups kernels */ -#define CALC_ENERGIES -#define ENERGY_GROUPS -#include "nbnxn_kernel_ref_outer.h" -#undef ENERGY_GROUPS -#undef CALC_ENERGIES - -/* Include the force only kernels */ -#include "nbnxn_kernel_ref_outer.h" - +#include "nbnxn_kernel_ref_includes.h" +#define VDW_FORCE_SWITCH +#include "nbnxn_kernel_ref_includes.h" +#undef VDW_FORCE_SWITCH +#define VDW_POT_SWITCH +#include "nbnxn_kernel_ref_includes.h" +#undef VDW_POT_SWITCH #undef CALC_COUL_RF /* Tabulated exclusion interaction electrostatics kernels */ #define CALC_COUL_TAB - -/* Include the force+energy kernels */ -#define CALC_ENERGIES -#include "nbnxn_kernel_ref_outer.h" -#undef CALC_ENERGIES - -/* Include the force+energygroups kernels */ -#define CALC_ENERGIES -#define ENERGY_GROUPS -#include "nbnxn_kernel_ref_outer.h" -#undef ENERGY_GROUPS -#undef CALC_ENERGIES - -/* Include the force only kernels */ -#include "nbnxn_kernel_ref_outer.h" - +#include "nbnxn_kernel_ref_includes.h" +#define VDW_FORCE_SWITCH +#include "nbnxn_kernel_ref_includes.h" +#undef VDW_FORCE_SWITCH +#define VDW_POT_SWITCH +#include "nbnxn_kernel_ref_includes.h" +#undef VDW_POT_SWITCH /* Twin-range cut-off kernels */ #define VDW_CUTOFF_CHECK - -/* Include the force+energy kernels */ -#define CALC_ENERGIES -#include "nbnxn_kernel_ref_outer.h" -#undef CALC_ENERGIES - -/* Include the force+energygroups kernels */ -#define CALC_ENERGIES -#define ENERGY_GROUPS -#include "nbnxn_kernel_ref_outer.h" -#undef ENERGY_GROUPS -#undef CALC_ENERGIES - -/* Include the force only kernels */ -#include "nbnxn_kernel_ref_outer.h" - +#include "nbnxn_kernel_ref_includes.h" +#define VDW_FORCE_SWITCH +#include "nbnxn_kernel_ref_includes.h" +#undef VDW_FORCE_SWITCH +#define VDW_POT_SWITCH +#include "nbnxn_kernel_ref_includes.h" +#undef VDW_POT_SWITCH #undef VDW_CUTOFF_CHECK - #undef CALC_COUL_TAB @@ -131,25 +104,29 @@ enum { coultRF, coultTAB, coultTAB_TWIN, coultNR }; -p_nbk_func_ener p_nbk_c_ener[coultNR] = +enum { + vdwtCUT, vdwtFSWITCH, vdwtPSWITCH, vdwtNR +}; + +p_nbk_func_noener p_nbk_c_noener[coultNR][vdwtNR] = { - nbnxn_kernel_ref_rf_ener, - nbnxn_kernel_ref_tab_ener, - nbnxn_kernel_ref_tab_twin_ener + { nbnxn_kernel_ElecRF_VdwLJ_F_ref, nbnxn_kernel_ElecRF_VdwLJFsw_F_ref, nbnxn_kernel_ElecRF_VdwLJPsw_F_ref }, + { nbnxn_kernel_ElecQSTab_VdwLJ_F_ref, nbnxn_kernel_ElecQSTab_VdwLJFsw_F_ref, nbnxn_kernel_ElecQSTab_VdwLJPsw_F_ref }, + { nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJFsw_F_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJPsw_F_ref } }; -p_nbk_func_ener p_nbk_c_energrp[coultNR] = +p_nbk_func_ener p_nbk_c_ener[coultNR][vdwtNR] = { - nbnxn_kernel_ref_rf_energrp, - nbnxn_kernel_ref_tab_energrp, - nbnxn_kernel_ref_tab_twin_energrp + { nbnxn_kernel_ElecRF_VdwLJ_VF_ref, nbnxn_kernel_ElecRF_VdwLJFsw_VF_ref, nbnxn_kernel_ElecRF_VdwLJPsw_VF_ref }, + { nbnxn_kernel_ElecQSTab_VdwLJ_VF_ref, nbnxn_kernel_ElecQSTab_VdwLJFsw_VF_ref, nbnxn_kernel_ElecQSTab_VdwLJPsw_VF_ref }, + { nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJFsw_VF_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJPsw_VF_ref } }; -p_nbk_func_noener p_nbk_c_noener[coultNR] = +p_nbk_func_ener p_nbk_c_energrp[coultNR][vdwtNR] = { - nbnxn_kernel_ref_rf_noener, - nbnxn_kernel_ref_tab_noener, - nbnxn_kernel_ref_tab_twin_noener + { nbnxn_kernel_ElecRF_VdwLJ_VgrpF_ref, nbnxn_kernel_ElecRF_VdwLJFsw_VgrpF_ref, nbnxn_kernel_ElecRF_VdwLJPsw_VgrpF_ref }, + { nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_ref, nbnxn_kernel_ElecQSTab_VdwLJFsw_VgrpF_ref, nbnxn_kernel_ElecQSTab_VdwLJPsw_VgrpF_ref }, + { nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJFsw_VgrpF_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJPsw_VgrpF_ref } }; void @@ -166,6 +143,7 @@ nbnxn_kernel_ref(const nbnxn_pairlist_set_t *nbl_list, int nnbl; nbnxn_pairlist_t **nbl; int coult; + int vdwt; int nb; nnbl = nbl_list->nnbl; @@ -187,6 +165,23 @@ nbnxn_kernel_ref(const nbnxn_pairlist_set_t *nbl_list, } } + switch (ic->vdw_modifier) + { + case eintmodPOTSHIFT: + case eintmodNONE: + vdwt = vdwtCUT; + break; + case eintmodFORCESWITCH: + vdwt = vdwtFSWITCH; + break; + case eintmodPOTSWITCH: + vdwt = vdwtPSWITCH; + break; + default: + gmx_incons("Unsupported VdW modifier"); + break; + } + #pragma omp parallel for schedule(static) num_threads(gmx_omp_nthreads_get(emntNonbonded)) for (nb = 0; nb < nnbl; nb++) { @@ -217,11 +212,11 @@ nbnxn_kernel_ref(const nbnxn_pairlist_set_t *nbl_list, if (!(force_flags & GMX_FORCE_ENERGY)) { /* Don't calculate energies */ - p_nbk_c_noener[coult](nbl[nb], nbat, - ic, - shift_vec, - out->f, - fshift_p); + p_nbk_c_noener[coult][vdwt](nbl[nb], nbat, + ic, + shift_vec, + out->f, + fshift_p); } else if (out->nV == 1) { @@ -229,13 +224,13 @@ nbnxn_kernel_ref(const nbnxn_pairlist_set_t *nbl_list, out->Vvdw[0] = 0; out->Vc[0] = 0; - p_nbk_c_ener[coult](nbl[nb], nbat, - ic, - shift_vec, - out->f, - fshift_p, - out->Vvdw, - out->Vc); + p_nbk_c_ener[coult][vdwt](nbl[nb], nbat, + ic, + shift_vec, + out->f, + fshift_p, + out->Vvdw, + out->Vc); } else { @@ -251,13 +246,13 @@ nbnxn_kernel_ref(const nbnxn_pairlist_set_t *nbl_list, out->Vc[i] = 0; } - p_nbk_c_energrp[coult](nbl[nb], nbat, - ic, - shift_vec, - out->f, - fshift_p, - out->Vvdw, - out->Vc); + p_nbk_c_energrp[coult][vdwt](nbl[nb], nbat, + ic, + shift_vec, + out->f, + fshift_p, + out->Vvdw, + out->Vc); } } diff --git a/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_includes.h b/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_includes.h new file mode 100644 index 0000000000..91447143a8 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_includes.h @@ -0,0 +1,54 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ + + +/* This file includes all required (non-)energy flavors of the kernel + * outer and inner loops, given a Coulomb and VdW treatment. + */ + +/* Include the force only kernels */ +#include "nbnxn_kernel_ref_outer.h" + +/* Include the force+energy kernels */ +#define CALC_ENERGIES +#include "nbnxn_kernel_ref_outer.h" +#undef CALC_ENERGIES + +/* Include the force+energygroups kernels */ +#define CALC_ENERGIES +#define ENERGY_GROUPS +#include "nbnxn_kernel_ref_outer.h" +#undef ENERGY_GROUPS +#undef CALC_ENERGIES diff --git a/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_inner.h b/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_inner.h index a4adc825b2..6c9c89dec4 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_inner.h +++ b/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_inner.h @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -69,7 +69,11 @@ real rsq, rinv; real rinvsq, rinvsix; real c6, c12; - real FrLJ6 = 0, FrLJ12 = 0, VLJ = 0; + real FrLJ6 = 0, FrLJ12 = 0, frLJ = 0, VLJ = 0; +#if defined VDW_FORCE_SWITCH || defined VDW_POT_SWITCH + real r, rsw; +#endif + #ifdef CALC_COULOMB real qq; real fcoul; @@ -90,9 +94,7 @@ * (if appropriate) the i and j indices are * unsuitable for this kind of inner loop. */ real skipmask; -#ifdef VDW_CUTOFF_CHECK - real skipmask_rvdw; -#endif + #ifdef CHECK_EXCLS /* A multiply mask used to zero an interaction * when that interaction should be excluded @@ -151,26 +153,71 @@ { rinvsix = interact*rinvsq*rinvsq*rinvsq; -#ifdef VDW_CUTOFF_CHECK - skipmask_rvdw = (rsq < rvdw2); - rinvsix *= skipmask_rvdw; -#endif - c6 = nbfp[type_i_off+type[aj]*2 ]; c12 = nbfp[type_i_off+type[aj]*2+1]; FrLJ6 = c6*rinvsix; FrLJ12 = c12*rinvsix*rinvsix; - /* 6 flops for r^-2 + LJ force */ -#ifdef CALC_ENERGIES - VLJ = (FrLJ12 - c12*sh_invrc6*sh_invrc6)/12 - - (FrLJ6 - c6*sh_invrc6)/6; + frLJ = FrLJ12 - FrLJ6; + /* 7 flops for r^-2 + LJ force */ +#if defined CALC_ENERGIES || defined VDW_POT_SWITCH + VLJ = (FrLJ12 + c12*ic->repulsion_shift.cpot)/12 - + (FrLJ6 + c6*ic->dispersion_shift.cpot)/6; + /* 7 flops for LJ energy */ +#endif + +#if defined VDW_FORCE_SWITCH || defined VDW_POT_SWITCH + /* Force or potential switching from ic->rvdw_switch */ + r = rsq*rinv; + rsw = r - ic->rvdw_switch; + rsw = (rsw >= 0.0 ? rsw : 0.0); +#endif +#ifdef VDW_FORCE_SWITCH + frLJ += + -c6*(ic->dispersion_shift.c2 + ic->dispersion_shift.c3*rsw)*rsw*rsw*r + + c12*(ic->repulsion_shift.c2 + ic->repulsion_shift.c3*rsw)*rsw*rsw*r; +#if defined CALC_ENERGIES + VLJ += + -c6*(-ic->dispersion_shift.c2/3 - ic->dispersion_shift.c3/4*rsw)*rsw*rsw*rsw + + c12*(-ic->repulsion_shift.c2/3 - ic->repulsion_shift.c3/4*rsw)*rsw*rsw*rsw; +#endif +#endif + +#if defined CALC_ENERGIES || defined VDW_POT_SWITCH + /* Masking shoule be done after force switching, + * but before potential switching. + */ /* Need to zero the interaction if r >= rcut * or there should be exclusion. */ VLJ = VLJ * skipmask * interact; - /* 9 flops for LJ energy */ + /* 2 more flops for LJ energy */ +#endif + +#ifdef VDW_POT_SWITCH + { + real sw, dsw; + + sw = 1.0 + (swV3 + (swV4+ swV5*rsw)*rsw)*rsw*rsw*rsw; + dsw = (swF2 + (swF3 + swF4*rsw)*rsw)*rsw*rsw; + + frLJ = frLJ*sw - r*VLJ*dsw; + VLJ *= sw; + } +#endif + #ifdef VDW_CUTOFF_CHECK - VLJ *= skipmask_rvdw; + /* Mask for VdW cut-off shorter than Coulomb cut-off */ + { + real skipmask_rvdw; + + skipmask_rvdw = (rsq < rvdw2); + frLJ *= skipmask_rvdw; +#ifdef CALC_ENERGIES + VLJ *= skipmask_rvdw; #endif + } +#endif + +#ifdef CALC_ENERGIES #ifdef ENERGY_GROUPS Vvdw[egp_sh_i[i]+((egp_cj>>(nbat->neg_2log*j)) & egp_mask)] += VLJ; #else @@ -244,8 +291,8 @@ if (i < UNROLLI/2) #endif { - fscal = (FrLJ12 - FrLJ6)*rinvsq + fcoul; - /* 3 flops for scalar LJ+Coulomb force */ + fscal = frLJ*rinvsq + fcoul; + /* 2 flops for scalar LJ+Coulomb force */ } #ifdef HALF_LJ else @@ -254,7 +301,7 @@ } #endif #else - fscal = (FrLJ12 - FrLJ6)*rinvsq; + fscal = frLJ*rinvsq; #endif fx = fscal*dx; fy = fscal*dy; diff --git a/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_outer.h b/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_outer.h index 8d4c358ec7..e68a300d05 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_outer.h +++ b/src/gromacs/mdlib/nbnxn_kernels/nbnxn_kernel_ref_outer.h @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -53,27 +53,38 @@ #define CALC_SHIFTFORCES #ifdef CALC_COUL_RF -#define NBK_FUNC_NAME(base, ene) base ## _rf_ ## ene +#define NBK_FUNC_NAME2(ljt, feg) nbnxn_kernel ## _ElecRF ## ljt ## feg ## _ref #endif #ifdef CALC_COUL_TAB #ifndef VDW_CUTOFF_CHECK -#define NBK_FUNC_NAME(base, ene) base ## _tab_ ## ene +#define NBK_FUNC_NAME2(ljt, feg) nbnxn_kernel ## _ElecQSTab ## ljt ## feg ## _ref #else -#define NBK_FUNC_NAME(base, ene) base ## _tab_twin_ ## ene +#define NBK_FUNC_NAME2(ljt, feg) nbnxn_kernel ## _ElecQSTabTwinCut ## ljt ## feg ## _ref +#endif +#endif + +#ifdef VDW_FORCE_SWITCH +#define NBK_FUNC_NAME(feg) NBK_FUNC_NAME2(_VdwLJFsw, feg) +#else +#ifdef VDW_POT_SWITCH +#define NBK_FUNC_NAME(feg) NBK_FUNC_NAME2(_VdwLJPsw, feg) +#else +#define NBK_FUNC_NAME(feg) NBK_FUNC_NAME2(_VdwLJ, feg) #endif #endif static void #ifndef CALC_ENERGIES -NBK_FUNC_NAME(nbnxn_kernel_ref, noener) +NBK_FUNC_NAME(_F) #else #ifndef ENERGY_GROUPS -NBK_FUNC_NAME(nbnxn_kernel_ref, ener) +NBK_FUNC_NAME(_VF) #else -NBK_FUNC_NAME(nbnxn_kernel_ref, energrp) +NBK_FUNC_NAME(_VgrpF) #endif #endif #undef NBK_FUNC_NAME +#undef NBK_FUNC_NAME2 (const nbnxn_pairlist_t *nbl, const nbnxn_atomdata_t *nbat, const interaction_const_t *ic, @@ -122,7 +133,10 @@ NBK_FUNC_NAME(nbnxn_kernel_ref, energrp) int egp_mask; int egp_sh_i[UNROLLI]; #endif - real sh_invrc6; +#endif +#ifdef VDW_POT_SWITCH + real swV3, swV4, swV5; + real swF2, swF3, swF4; #endif #ifdef CALC_COUL_RF @@ -150,8 +164,13 @@ NBK_FUNC_NAME(nbnxn_kernel_ref, energrp) int npair = 0; #endif -#ifdef CALC_ENERGIES - sh_invrc6 = ic->sh_invrc6; +#ifdef VDW_POT_SWITCH + swV3 = ic->vdw_switch.c3; + swV4 = ic->vdw_switch.c4; + swV5 = ic->vdw_switch.c5; + swF2 = 3*ic->vdw_switch.c3; + swF3 = 4*ic->vdw_switch.c4; + swF4 = 5*ic->vdw_switch.c5; #endif #ifdef CALC_COUL_RF diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn.c similarity index 83% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn.c index 0612705233..f7c004ad48 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -34,30 +34,30 @@ */ /* * Note: this file was generated by the Verlet kernel generator for - * kernel type 4xn. + * kernel type 2xnn. */ /* Some target architectures compile kernels for only some NBNxN * kernel flavours, but the code is generated before the target * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub * function definition when the kernel will never be called. */ -#define GMX_SIMD_J_UNROLL_SIZE 1 -#include "nbnxn_kernel_simd_4xn.h" +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" #define CALC_COUL_EWALD #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -#define LJ_COMB_LB +#define LJ_COMB_GEOM /* Will not calculate energies */ -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_common.h" -#endif /* GMX_NBNXN_SIMD_4XN */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,21 +67,21 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_un real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, real gmx_unused *f, real gmx_unused *fshift) #endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_outer.h" -#else /* GMX_NBNXN_SIMD_4XN */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ { /* No need to call gmx_incons() here, because the only function * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and * instead call gmx_incons(). */ } -#endif /* GMX_NBNXN_SIMD_4XN */ +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn.c similarity index 95% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn.c index f54451618d..4eb790ac54 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -57,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +67,7 @@ nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_u real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn.c similarity index 95% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn.c index 540a2cf469..9f681e1870 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -58,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -68,7 +68,7 @@ nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t gm real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn.c index f252fb0564..90d0155000 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,7 +47,8 @@ #include "nbnxn_kernel_simd_2xnn.h" #define CALC_COUL_EWALD -/* Use no LJ combination rule */ +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +#define LJ_COMB_LB /* Will not calculate energies */ #ifdef GMX_NBNXN_SIMD_2XNN @@ -56,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_ewald_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +67,7 @@ nbnxn_kernel_simd_2xnn_ewald_comb_none_noener(const nbnxn_pairlist_t gmx_unus real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_ewald_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn.c similarity index 95% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn.c index fd8be60cb2..0081117f94 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -57,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +67,7 @@ nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unu real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn.c similarity index 95% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn.c index b86316f59a..57237425ad 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -58,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -68,7 +68,7 @@ nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_ real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn.c new file mode 100644 index 0000000000..8895d918c7 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn.c similarity index 92% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn.c index ecf093f80f..85b3598445 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,7 +47,9 @@ #include "nbnxn_kernel_simd_2xnn.h" #define CALC_COUL_EWALD -#define LJ_COMB_GEOM +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH #define CALC_ENERGIES #ifdef GMX_NBNXN_SIMD_2XNN @@ -56,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +68,7 @@ nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn.c new file mode 100644 index 0000000000..d91b063c27 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn.c @@ -0,0 +1,89 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn.c new file mode 100644 index 0000000000..82757f0f78 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn.c index b15376ce3a..24728fc6ae 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,7 +47,9 @@ #include "nbnxn_kernel_simd_2xnn.h" #define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ +#define LJ_POT_SWITCH #define CALC_ENERGIES #ifdef GMX_NBNXN_SIMD_2XNN @@ -56,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_ewald_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +68,7 @@ nbnxn_kernel_simd_2xnn_ewald_comb_none_ener(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_ewald_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn.c index 0ebfc5a97e..28d416be28 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,7 +47,9 @@ #include "nbnxn_kernel_simd_2xnn.h" #define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ +#define LJ_POT_SWITCH #define CALC_ENERGIES #define ENERGY_GROUPS @@ -57,7 +59,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +69,7 @@ nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp(const nbnxn_pairlist_t gmx_unu real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn.c new file mode 100644 index 0000000000..6f51d8b1f2 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +/* Use no LJ combination rule */ +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn.c index a3fcd10ca2..3a207fab06 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,7 +46,8 @@ #define GMX_SIMD_J_UNROLL_SIZE 2 #include "nbnxn_kernel_simd_2xnn.h" -#define CALC_COUL_RF +#define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ #define CALC_ENERGIES @@ -56,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_rf_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +67,7 @@ nbnxn_kernel_simd_2xnn_rf_comb_none_ener(const nbnxn_pairlist_t gmx_unused *n real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_rf_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn.c index bdaaa78193..465d5496ee 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,7 +46,8 @@ #define GMX_SIMD_J_UNROLL_SIZE 2 #include "nbnxn_kernel_simd_2xnn.h" -#define CALC_COUL_RF +#define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ #define CALC_ENERGIES #define ENERGY_GROUPS @@ -57,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_rf_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +68,7 @@ nbnxn_kernel_simd_2xnn_rf_comb_none_energrp(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_rf_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn.c index 0382522584..86ae343358 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,9 +46,9 @@ #define GMX_SIMD_J_UNROLL_SIZE 2 #include "nbnxn_kernel_simd_2xnn.h" -#define CALC_COUL_RF +#define CALC_COUL_EWALD #define LJ_COMB_GEOM -#define CALC_ENERGIES +/* Will not calculate energies */ #ifdef GMX_NBNXN_SIMD_2XNN #include "nbnxn_kernel_simd_2xnn_common.h" @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_rf_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_rf_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *n real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_rf_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn.c index 4ad09a93be..00f8513f9b 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,7 +47,7 @@ #include "nbnxn_kernel_simd_2xnn.h" #define CALC_COUL_EWALD -#define LJ_COMB_LB +#define LJ_COMB_GEOM #define CALC_ENERGIES #ifdef GMX_NBNXN_SIMD_2XNN @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener(const nbnxn_pairlist_t gmx_unused * real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn.c index 3152d80c62..3f84925291 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,7 +47,7 @@ #include "nbnxn_kernel_simd_2xnn.h" #define CALC_COUL_EWALD -#define LJ_COMB_LB +#define LJ_COMB_GEOM #define CALC_ENERGIES #define ENERGY_GROUPS @@ -57,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +67,7 @@ nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp(const nbnxn_pairlist_t gmx_unuse real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn.c similarity index 67% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn.c index cd32ddd7e4..716b4edacb 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -56,22 +56,22 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift, - real gmx_unused *Vvdw, - real gmx_unused *Vc) +nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift) +nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) #endif /* CALC_ENERGIES */ #ifdef GMX_NBNXN_SIMD_2XNN #include "nbnxn_kernel_simd_2xnn_outer.h" diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn.c new file mode 100644 index 0000000000..7ce3508f9e --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn.c @@ -0,0 +1,86 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_EWALD +#define LJ_COMB_LB +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn.c similarity index 92% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn.c index a2bd295058..9640186d88 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,9 +46,10 @@ #define GMX_SIMD_J_UNROLL_SIZE 2 #include "nbnxn_kernel_simd_2xnn.h" -#define CALC_COUL_RF -#define LJ_COMB_GEOM -/* Will not calculate energies */ +#define CALC_COUL_EWALD +#define LJ_COMB_LB +#define CALC_ENERGIES +#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_2XNN #include "nbnxn_kernel_simd_2xnn_common.h" @@ -56,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_rf_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +67,7 @@ nbnxn_kernel_simd_2xnn_rf_comb_geom_noener(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_rf_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn.c new file mode 100644 index 0000000000..f674e48c44 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn.c new file mode 100644 index 0000000000..804ea6d34a --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn.c new file mode 100644 index 0000000000..4f3f460fa0 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn.c new file mode 100644 index 0000000000..2638c41d5f --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn.c new file mode 100644 index 0000000000..b82482b57c --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn.c new file mode 100644 index 0000000000..b2132351f6 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_F_2xnn.c new file mode 100644 index 0000000000..ddec21cc08 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_F_2xnn.c @@ -0,0 +1,86 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn.c new file mode 100644 index 0000000000..681ec8953b --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn.c @@ -0,0 +1,86 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn.c new file mode 100644 index 0000000000..0d768fb5c0 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn.c index f2d0b0c02a..e2e7597f2d 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,7 +46,7 @@ #define GMX_SIMD_J_UNROLL_SIZE 2 #include "nbnxn_kernel_simd_2xnn.h" -#define CALC_COUL_EWALD +#define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ #define LJ_COMB_GEOM /* Will not calculate energies */ @@ -57,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +67,7 @@ nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t gmx real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn.c index 6f30bb074e..4e824957e4 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,11 +46,10 @@ #define GMX_SIMD_J_UNROLL_SIZE 2 #include "nbnxn_kernel_simd_2xnn.h" -#define CALC_COUL_EWALD +#define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -/* Use no LJ combination rule */ +#define LJ_COMB_GEOM #define CALC_ENERGIES -#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_2XNN #include "nbnxn_kernel_simd_2xnn_common.h" @@ -58,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -68,7 +67,7 @@ nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t gm real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn.c new file mode 100644 index 0000000000..5d2aede12b --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_TAB +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +#define LJ_COMB_GEOM +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn.c index d61345d16e..ec1fac3e2b 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -48,7 +48,7 @@ #define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -#define LJ_COMB_GEOM +#define LJ_COMB_LB /* Will not calculate energies */ #ifdef GMX_NBNXN_SIMD_2XNN @@ -57,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +67,7 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_u real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn.c index 25e8a310ae..59f6715d73 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -48,9 +48,8 @@ #define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -#define LJ_COMB_GEOM +#define LJ_COMB_LB #define CALC_ENERGIES -#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_2XNN #include "nbnxn_kernel_simd_2xnn_common.h" @@ -58,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -68,7 +67,7 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_ real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn.c new file mode 100644 index 0000000000..3b72339c7f --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_TAB +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +#define LJ_COMB_LB +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn.c new file mode 100644 index 0000000000..80ce35a2f2 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_TAB +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn.c index 1f82c1b19f..a4926d6b8e 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -48,8 +48,9 @@ #define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -#define LJ_COMB_LB -/* Will not calculate energies */ +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES #ifdef GMX_NBNXN_SIMD_2XNN #include "nbnxn_kernel_simd_2xnn_common.h" @@ -57,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +68,7 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unu real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn.c similarity index 82% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn.c index a14866ab97..ab06e42f5e 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -34,30 +34,32 @@ */ /* * Note: this file was generated by the Verlet kernel generator for - * kernel type 4xn. + * kernel type 2xnn. */ /* Some target architectures compile kernels for only some NBNxN * kernel flavours, but the code is generated before the target * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub * function definition when the kernel will never be called. */ -#define GMX_SIMD_J_UNROLL_SIZE 1 -#include "nbnxn_kernel_simd_4xn.h" +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" -#define CALC_COUL_EWALD +#define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ -/* Will not calculate energies */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES +#define ENERGY_GROUPS -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_common.h" -#endif /* GMX_NBNXN_SIMD_4XN */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,21 +69,21 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t gmx_ real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, real gmx_unused *f, real gmx_unused *fshift) #endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_outer.h" -#else /* GMX_NBNXN_SIMD_4XN */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ { /* No need to call gmx_incons() here, because the only function * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and * instead call gmx_incons(). */ } -#endif /* GMX_NBNXN_SIMD_4XN */ +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn.c new file mode 100644 index 0000000000..534ae93b08 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_TAB +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn.c index 43ba84ca65..1ac9b6d23e 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -49,6 +49,7 @@ #define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ +#define LJ_POT_SWITCH #define CALC_ENERGIES #ifdef GMX_NBNXN_SIMD_2XNN @@ -57,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +68,7 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unu real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn.c index f2ac6d9131..c556a73988 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -49,6 +49,7 @@ #define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ +#define LJ_POT_SWITCH #define CALC_ENERGIES #define ENERGY_GROUPS @@ -58,7 +59,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -68,7 +69,7 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_ real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn.c new file mode 100644 index 0000000000..6eaddccdfc --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_TAB +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +/* Use no LJ combination rule */ +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn.c index b344bea510..91a0ace251 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,8 +47,9 @@ #include "nbnxn_kernel_simd_2xnn.h" #define CALC_COUL_TAB +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ -/* Will not calculate energies */ +#define CALC_ENERGIES #ifdef GMX_NBNXN_SIMD_2XNN #include "nbnxn_kernel_simd_2xnn_common.h" @@ -56,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +67,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_none_noener(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn.c index 400ba408c4..c80763901b 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -48,8 +48,9 @@ #define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -#define LJ_COMB_GEOM +/* Use no LJ combination rule */ #define CALC_ENERGIES +#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_2XNN #include "nbnxn_kernel_simd_2xnn_common.h" @@ -57,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +68,7 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unu real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn.c similarity index 95% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn.c index b8fbdd847c..1b52825a43 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_geom_noener(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn.c index 375f2dd21a..563e1da1ea 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -49,7 +49,6 @@ #define CALC_COUL_TAB #define LJ_COMB_GEOM #define CALC_ENERGIES -#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_2XNN #include "nbnxn_kernel_simd_2xnn_common.h" @@ -57,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +66,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp(const nbnxn_pairlist_t gmx_unuse real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn.c index 8204254a76..80a707326d 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,8 +47,7 @@ #include "nbnxn_kernel_simd_2xnn.h" #define CALC_COUL_TAB -#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -#define LJ_COMB_LB +#define LJ_COMB_GEOM #define CALC_ENERGIES #define ENERGY_GROUPS @@ -58,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -68,7 +67,7 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_un real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn.c similarity index 95% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn.c index a47e406170..373ebba108 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_lb_noener(const nbnxn_pairlist_t gmx_unused * real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn.c index d8f08dfa5d..1d2c22646c 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -49,7 +49,6 @@ #define CALC_COUL_TAB #define LJ_COMB_LB #define CALC_ENERGIES -#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_2XNN #include "nbnxn_kernel_simd_2xnn_common.h" @@ -57,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +66,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn.c index 471c309e34..e7ffea2082 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,9 +46,10 @@ #define GMX_SIMD_J_UNROLL_SIZE 2 #include "nbnxn_kernel_simd_2xnn.h" -#define CALC_COUL_EWALD -#define LJ_COMB_GEOM -/* Will not calculate energies */ +#define CALC_COUL_TAB +#define LJ_COMB_LB +#define CALC_ENERGIES +#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_2XNN #include "nbnxn_kernel_simd_2xnn_common.h" @@ -56,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +67,7 @@ nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener(const nbnxn_pairlist_t gmx_unus real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn.c new file mode 100644 index 0000000000..39a5862d89 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn.c new file mode 100644 index 0000000000..434336051c --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn.c new file mode 100644 index 0000000000..845bd4d8fd --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn.c new file mode 100644 index 0000000000..8bd93fffe7 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn.c new file mode 100644 index 0000000000..bc4d924684 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn.c new file mode 100644 index 0000000000..05999b60d6 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn.c new file mode 100644 index 0000000000..b9b2a31df6 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn.c @@ -0,0 +1,86 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn.c new file mode 100644 index 0000000000..a09db67a2e --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn.c @@ -0,0 +1,86 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn.c new file mode 100644 index 0000000000..356f91b60a --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn.c index b909404b62..fb2313d28f 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,7 +47,7 @@ #include "nbnxn_kernel_simd_2xnn.h" #define CALC_COUL_RF -#define LJ_COMB_LB +#define LJ_COMB_GEOM /* Will not calculate energies */ #ifdef GMX_NBNXN_SIMD_2XNN @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_rf_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_rf_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *n real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_rf_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn.c index 8f37ddfa29..7408d07765 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_geom_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,7 +46,7 @@ #define GMX_SIMD_J_UNROLL_SIZE 2 #include "nbnxn_kernel_simd_2xnn.h" -#define CALC_COUL_TAB +#define CALC_COUL_RF #define LJ_COMB_GEOM #define CALC_ENERGIES @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_geom_ener(const nbnxn_pairlist_t gmx_unused * real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn.c index e3d5badad9..cd2046279d 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,8 +46,8 @@ #define GMX_SIMD_J_UNROLL_SIZE 2 #include "nbnxn_kernel_simd_2xnn.h" -#define CALC_COUL_TAB -/* Use no LJ combination rule */ +#define CALC_COUL_RF +#define LJ_COMB_GEOM #define CALC_ENERGIES #define ENERGY_GROUPS @@ -57,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +67,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_none_energrp(const nbnxn_pairlist_t gmx_unuse real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn.c index 2b7fa1d1e0..907749b668 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -48,7 +48,7 @@ #define CALC_COUL_RF #define LJ_COMB_LB -#define CALC_ENERGIES +/* Will not calculate energies */ #ifdef GMX_NBNXN_SIMD_2XNN #include "nbnxn_kernel_simd_2xnn_common.h" @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_rf_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_rf_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_rf_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn.c index 7fd3e29188..3c502ef07c 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_lb_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,7 +46,7 @@ #define GMX_SIMD_J_UNROLL_SIZE 2 #include "nbnxn_kernel_simd_2xnn.h" -#define CALC_COUL_TAB +#define CALC_COUL_RF #define LJ_COMB_LB #define CALC_ENERGIES @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_2xnn_tab_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nb real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn.c index 51c7673cd3..32875e796a 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_none_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,8 +47,9 @@ #include "nbnxn_kernel_simd_2xnn.h" #define CALC_COUL_RF -/* Use no LJ combination rule */ -/* Will not calculate energies */ +#define LJ_COMB_LB +#define CALC_ENERGIES +#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_2XNN #include "nbnxn_kernel_simd_2xnn_common.h" @@ -56,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_rf_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +67,7 @@ nbnxn_kernel_simd_2xnn_rf_comb_none_noener(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_rf_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn.c new file mode 100644 index 0000000000..52fecc8eb2 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn.c new file mode 100644 index 0000000000..af5acc0d10 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn.c new file mode 100644 index 0000000000..c3bfe09194 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn.c new file mode 100644 index 0000000000..6d31b573b1 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn.c new file mode 100644 index 0000000000..f79dc11822 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn.c new file mode 100644 index 0000000000..636d393696 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_F_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_F_2xnn.c new file mode 100644 index 0000000000..a97714cb72 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_F_2xnn.c @@ -0,0 +1,86 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn.c new file mode 100644 index 0000000000..354ac6f11b --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn.c @@ -0,0 +1,86 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn.c new file mode 100644 index 0000000000..ebe2a88d1c --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 2xnn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 2 +#include "nbnxn_kernel_simd_2xnn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_common.h" +#endif /* GMX_NBNXN_SIMD_2XNN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_2XNN +#include "nbnxn_kernel_simd_2xnn_outer.h" +#else /* GMX_NBNXN_SIMD_2XNN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.c index 660c12cfc2..4bf21fa824 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.c @@ -46,6 +46,7 @@ #ifdef GMX_NBNXN_SIMD_2XNN /* Include the full-width SIMD macros */ + #include "gromacs/simd/macros.h" #include "gromacs/simd/vector_operations.h" @@ -58,6 +59,7 @@ #include "../nbnxn_kernel_common.h" #include "gmx_omp_nthreads.h" #include "types/force_flags.h" +#include "gmx_fatal.h" /*! \brief Kinds of electrostatic treatments in SIMD Verlet kernels */ @@ -65,91 +67,124 @@ enum { coultRF, coultTAB, coultTAB_TWIN, coultEWALD, coultEWALD_TWIN, coultNR }; -/* Declare and define the kernel function pointer lookup tables. */ -static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR] = +/* Declare and define the kernel function pointer lookup tables. + * The minor index of the array goes over both the LJ combination rules, + * which is only supported by plain cut-off, and the LJ switch functions. + */ +static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR+2] = { { - nbnxn_kernel_simd_2xnn_rf_comb_geom_ener, - nbnxn_kernel_simd_2xnn_rf_comb_lb_ener, - nbnxn_kernel_simd_2xnn_rf_comb_none_ener, + nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn, + nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn, + nbnxn_kernel_ElecRF_VdwLJ_F_2xnn, + nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn, + nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn, }, { - nbnxn_kernel_simd_2xnn_tab_comb_geom_ener, - nbnxn_kernel_simd_2xnn_tab_comb_lb_ener, - nbnxn_kernel_simd_2xnn_tab_comb_none_ener, + nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn, + nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn, + nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn, + nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn, + nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn, }, { - nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener, - nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener, - nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn, }, { - nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener, - nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener, - nbnxn_kernel_simd_2xnn_ewald_comb_none_ener, + nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn, + nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn, + nbnxn_kernel_ElecEw_VdwLJ_F_2xnn, + nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn, + nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn, }, { - nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener, - nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener, - nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener, + nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn, + nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn, + nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn, + nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn, + nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn, }, }; -static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR] = +static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR+2] = { { - nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp, - nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp, - nbnxn_kernel_simd_2xnn_rf_comb_none_energrp, + nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn, + nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn, + nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn, + nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn, + nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn, }, { - nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp, - nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp, - nbnxn_kernel_simd_2xnn_tab_comb_none_energrp, + nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn, + nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn, + nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn, + nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn, + nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn, }, { - nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp, - nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp, - nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn, }, { - nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp, - nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp, - nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp, + nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn, + nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn, + nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn, + nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn, + nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn, }, { - nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp, - nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp, - nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp, + nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn, + nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn, + nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn, + nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn, + nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn, }, }; -static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR] = +static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR+2] = { { - nbnxn_kernel_simd_2xnn_rf_comb_geom_noener, - nbnxn_kernel_simd_2xnn_rf_comb_lb_noener, - nbnxn_kernel_simd_2xnn_rf_comb_none_noener, + nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn, + nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn, + nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn, + nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn, + nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn, }, { - nbnxn_kernel_simd_2xnn_tab_comb_geom_noener, - nbnxn_kernel_simd_2xnn_tab_comb_lb_noener, - nbnxn_kernel_simd_2xnn_tab_comb_none_noener, + nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn, + nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn, + nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn, + nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn, + nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn, }, { - nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener, - nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener, - nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn, }, { - nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener, - nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener, - nbnxn_kernel_simd_2xnn_ewald_comb_none_noener, + nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn, + nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn, + nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn, + nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn, + nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn, }, { - nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener, - nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener, - nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener, + nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn, + nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn, + nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn, + nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn, + nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn, }, }; @@ -215,7 +250,7 @@ nbnxn_kernel_simd_2xnn(nbnxn_pairlist_set_t gmx_unused *nbl_list, { int nnbl; nbnxn_pairlist_t **nbl; - int coult; + int coult, ljtreatment = 0; int nb; nnbl = nbl_list->nnbl; @@ -251,6 +286,23 @@ nbnxn_kernel_simd_2xnn(nbnxn_pairlist_set_t gmx_unused *nbl_list, } } + switch (ic->vdw_modifier) + { + case eintmodNONE: + case eintmodPOTSHIFT: + ljtreatment = nbat->comb_rule; + break; + /* Switch functions follow after cut-off combination rule kernels */ + case eintmodFORCESWITCH: + ljtreatment = ljcrNR; + break; + case eintmodPOTSWITCH: + ljtreatment = ljcrNR + 1; + break; + default: + gmx_incons("Unsupported VdW interaction modifier"); + } + #pragma omp parallel for schedule(static) num_threads(gmx_omp_nthreads_get(emntNonbonded)) for (nb = 0; nb < nnbl; nb++) { @@ -281,11 +333,11 @@ nbnxn_kernel_simd_2xnn(nbnxn_pairlist_set_t gmx_unused *nbl_list, if (!(force_flags & GMX_FORCE_ENERGY)) { /* Don't calculate energies */ - p_nbk_noener[coult][nbat->comb_rule](nbl[nb], nbat, - ic, - shift_vec, - out->f, - fshift_p); + p_nbk_noener[coult][ljtreatment](nbl[nb], nbat, + ic, + shift_vec, + out->f, + fshift_p); } else if (out->nV == 1) { @@ -293,13 +345,13 @@ nbnxn_kernel_simd_2xnn(nbnxn_pairlist_set_t gmx_unused *nbl_list, out->Vvdw[0] = 0; out->Vc[0] = 0; - p_nbk_ener[coult][nbat->comb_rule](nbl[nb], nbat, - ic, - shift_vec, - out->f, - fshift_p, - out->Vvdw, - out->Vc); + p_nbk_ener[coult][ljtreatment](nbl[nb], nbat, + ic, + shift_vec, + out->f, + fshift_p, + out->Vvdw, + out->Vc); } else { @@ -315,13 +367,13 @@ nbnxn_kernel_simd_2xnn(nbnxn_pairlist_set_t gmx_unused *nbl_list, out->VSc[i] = 0; } - p_nbk_energrp[coult][nbat->comb_rule](nbl[nb], nbat, - ic, - shift_vec, - out->f, - fshift_p, - out->VSvdw, - out->VSc); + p_nbk_energrp[coult][ljtreatment](nbl[nb], nbat, + ic, + shift_vec, + out->f, + fshift_p, + out->VSvdw, + out->VSc); reduce_group_energies(nbat->nenergrp, nbat->neg_2log, out->VSvdw, out->VSc, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.h b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.h index 36301cef41..9b84f84909 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.h +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.h @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -83,53 +83,83 @@ typedef void (nbk_func_noener)(const nbnxn_pairlist_t *nbl, typedef nbk_func_noener *p_nbk_func_noener; #endif -nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp; -nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp; -nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_none_energrp; -nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp; -nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp; -nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_none_energrp; -nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp; -nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp; -nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp; -nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp; -nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp; -nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp; -nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp; -nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp; -nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn; -nbk_func_noener nbnxn_kernel_simd_2xnn_rf_comb_geom_noener; -nbk_func_noener nbnxn_kernel_simd_2xnn_rf_comb_lb_noener; -nbk_func_noener nbnxn_kernel_simd_2xnn_rf_comb_none_noener; -nbk_func_noener nbnxn_kernel_simd_2xnn_tab_comb_geom_noener; -nbk_func_noener nbnxn_kernel_simd_2xnn_tab_comb_lb_noener; -nbk_func_noener nbnxn_kernel_simd_2xnn_tab_comb_none_noener; -nbk_func_noener nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener; -nbk_func_noener nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener; -nbk_func_noener nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener; -nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener; -nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener; -nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_comb_none_noener; -nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener; -nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener; -nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn; -nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_geom_ener; -nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_lb_ener; -nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_none_ener; -nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_geom_ener; -nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_lb_ener; -nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_none_ener; -nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener; -nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener; -nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener; -nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener; -nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener; -nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_none_ener; -nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener; -nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener; -nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener; +nbk_func_noener nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecRF_VdwLJ_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecEw_VdwLJ_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn; +nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn; diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_common.h b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_common.h index 6dbfb97502..588472bed6 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_common.h +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_common.h @@ -33,6 +33,7 @@ * the research papers on the package. Check out http://www.gromacs.org. */ #include "gromacs/simd/macros.h" +#include "gromacs/simd/four_wide_macros.h" #include "gromacs/simd/vector_operations.h" #include "../../nbnxn_consts.h" #ifdef CALC_COUL_EWALD diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp.c deleted file mode 100644 index a5d290161e..0000000000 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the GROMACS molecular simulation package. - * - * Copyright (c) 2012,2013, by the GROMACS development team, led by - * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, - * and including many others, as listed in the AUTHORS file in the - * top-level source directory and at http://www.gromacs.org. - * - * GROMACS is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * of the License, or (at your option) any later version. - * - * GROMACS is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with GROMACS; if not, see - * http://www.gnu.org/licenses, or write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * If you want to redistribute modifications to GROMACS, please - * consider that scientific software is very special. Version - * control is crucial - bugs must be traceable. We will be happy to - * consider code for inclusion in the official distribution, but - * derived work must not be called official GROMACS. Details are found - * in the README & COPYING files - if they are missing, get the - * official version at http://www.gromacs.org. - * - * To help us fund GROMACS development, we humbly ask that you cite - * the research papers on the package. Check out http://www.gromacs.org. - */ -/* - * Note: this file was generated by the Verlet kernel generator for - * kernel type 2xnn. - */ - -/* Some target architectures compile kernels for only some NBNxN - * kernel flavours, but the code is generated before the target - * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub - * function definition when the kernel will never be called. - */ -#define GMX_SIMD_J_UNROLL_SIZE 2 -#include "nbnxn_kernel_simd_2xnn.h" - -#define CALC_COUL_EWALD -#define LJ_COMB_GEOM -#define CALC_ENERGIES -#define ENERGY_GROUPS - -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_common.h" -#endif /* GMX_NBNXN_SIMD_2XNN */ - -#ifdef CALC_ENERGIES -void -nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift, - real gmx_unused *Vvdw, - real gmx_unused *Vc) -#else /* CALC_ENERGIES */ -void -nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift) -#endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_outer.h" -#else /* GMX_NBNXN_SIMD_2XNN */ -{ -/* No need to call gmx_incons() here, because the only function - * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and - * instead call gmx_incons(). - */ -} -#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener.c deleted file mode 100644 index 3dd243d248..0000000000 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the GROMACS molecular simulation package. - * - * Copyright (c) 2012,2013, by the GROMACS development team, led by - * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, - * and including many others, as listed in the AUTHORS file in the - * top-level source directory and at http://www.gromacs.org. - * - * GROMACS is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * of the License, or (at your option) any later version. - * - * GROMACS is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with GROMACS; if not, see - * http://www.gnu.org/licenses, or write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * If you want to redistribute modifications to GROMACS, please - * consider that scientific software is very special. Version - * control is crucial - bugs must be traceable. We will be happy to - * consider code for inclusion in the official distribution, but - * derived work must not be called official GROMACS. Details are found - * in the README & COPYING files - if they are missing, get the - * official version at http://www.gromacs.org. - * - * To help us fund GROMACS development, we humbly ask that you cite - * the research papers on the package. Check out http://www.gromacs.org. - */ -/* - * Note: this file was generated by the Verlet kernel generator for - * kernel type 2xnn. - */ - -/* Some target architectures compile kernels for only some NBNxN - * kernel flavours, but the code is generated before the target - * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub - * function definition when the kernel will never be called. - */ -#define GMX_SIMD_J_UNROLL_SIZE 2 -#include "nbnxn_kernel_simd_2xnn.h" - -#define CALC_COUL_EWALD -#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -#define LJ_COMB_LB -/* Will not calculate energies */ - -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_common.h" -#endif /* GMX_NBNXN_SIMD_2XNN */ - -#ifdef CALC_ENERGIES -void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift, - real gmx_unused *Vvdw, - real gmx_unused *Vc) -#else /* CALC_ENERGIES */ -void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift) -#endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_outer.h" -#else /* GMX_NBNXN_SIMD_2XNN */ -{ -/* No need to call gmx_incons() here, because the only function - * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and - * instead call gmx_incons(). - */ -} -#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener.c deleted file mode 100644 index 83177c858c..0000000000 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the GROMACS molecular simulation package. - * - * Copyright (c) 2012,2013, by the GROMACS development team, led by - * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, - * and including many others, as listed in the AUTHORS file in the - * top-level source directory and at http://www.gromacs.org. - * - * GROMACS is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * of the License, or (at your option) any later version. - * - * GROMACS is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with GROMACS; if not, see - * http://www.gnu.org/licenses, or write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * If you want to redistribute modifications to GROMACS, please - * consider that scientific software is very special. Version - * control is crucial - bugs must be traceable. We will be happy to - * consider code for inclusion in the official distribution, but - * derived work must not be called official GROMACS. Details are found - * in the README & COPYING files - if they are missing, get the - * official version at http://www.gromacs.org. - * - * To help us fund GROMACS development, we humbly ask that you cite - * the research papers on the package. Check out http://www.gromacs.org. - */ -/* - * Note: this file was generated by the Verlet kernel generator for - * kernel type 2xnn. - */ - -/* Some target architectures compile kernels for only some NBNxN - * kernel flavours, but the code is generated before the target - * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub - * function definition when the kernel will never be called. - */ -#define GMX_SIMD_J_UNROLL_SIZE 2 -#include "nbnxn_kernel_simd_2xnn.h" - -#define CALC_COUL_EWALD -#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -/* Use no LJ combination rule */ -#define CALC_ENERGIES - -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_common.h" -#endif /* GMX_NBNXN_SIMD_2XNN */ - -#ifdef CALC_ENERGIES -void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift, - real gmx_unused *Vvdw, - real gmx_unused *Vc) -#else /* CALC_ENERGIES */ -void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift) -#endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_outer.h" -#else /* GMX_NBNXN_SIMD_2XNN */ -{ -/* No need to call gmx_incons() here, because the only function - * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and - * instead call gmx_incons(). - */ -} -#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener.c deleted file mode 100644 index b4eb5d8fd3..0000000000 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the GROMACS molecular simulation package. - * - * Copyright (c) 2012,2013, by the GROMACS development team, led by - * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, - * and including many others, as listed in the AUTHORS file in the - * top-level source directory and at http://www.gromacs.org. - * - * GROMACS is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * of the License, or (at your option) any later version. - * - * GROMACS is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with GROMACS; if not, see - * http://www.gnu.org/licenses, or write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * If you want to redistribute modifications to GROMACS, please - * consider that scientific software is very special. Version - * control is crucial - bugs must be traceable. We will be happy to - * consider code for inclusion in the official distribution, but - * derived work must not be called official GROMACS. Details are found - * in the README & COPYING files - if they are missing, get the - * official version at http://www.gromacs.org. - * - * To help us fund GROMACS development, we humbly ask that you cite - * the research papers on the package. Check out http://www.gromacs.org. - */ -/* - * Note: this file was generated by the Verlet kernel generator for - * kernel type 2xnn. - */ - -/* Some target architectures compile kernels for only some NBNxN - * kernel flavours, but the code is generated before the target - * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub - * function definition when the kernel will never be called. - */ -#define GMX_SIMD_J_UNROLL_SIZE 2 -#include "nbnxn_kernel_simd_2xnn.h" - -#define CALC_COUL_EWALD -#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -/* Use no LJ combination rule */ -/* Will not calculate energies */ - -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_common.h" -#endif /* GMX_NBNXN_SIMD_2XNN */ - -#ifdef CALC_ENERGIES -void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift, - real gmx_unused *Vvdw, - real gmx_unused *Vc) -#else /* CALC_ENERGIES */ -void -nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift) -#endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_outer.h" -#else /* GMX_NBNXN_SIMD_2XNN */ -{ -/* No need to call gmx_incons() here, because the only function - * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and - * instead call gmx_incons(). - */ -} -#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_inner.h b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_inner.h index 8e8eae7966..d0182ac8b1 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_inner.h +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_inner.h @@ -71,14 +71,14 @@ * Tested with gcc 4.6.2, 4.6.3 and 4.7.1. */ #if (defined CALC_COUL_RF || defined CALC_COUL_TAB) && (!defined __GNUC__ || (defined CALC_COUL_RF && defined GMX_SIMD_X86_AVX_256_OR_HIGHER)) -#define CUTOFF_BLENDV +#define NBNXN_CUTOFF_USE_BLENDV #endif /* With analytical Ewald we replace cmp+and+and with sub+blendv+blendv. * This is only faster with icc on Sandy Bridge (PS kernel slower than gcc 4.7). * Tested with icc 13. */ #if defined CALC_COUL_EWALD && defined __INTEL_COMPILER && defined GMX_SIMD_X86_AVX_256_OR_HIGHER -#define CUTOFF_BLENDV +#define NBNXN_CUTOFF_USE_BLENDV #endif #endif @@ -103,7 +103,7 @@ gmx_simd_real_t tx_S2, ty_S2, tz_S2; gmx_simd_real_t rsq_S0, rinv_S0, rinvsq_S0; gmx_simd_real_t rsq_S2, rinv_S2, rinvsq_S2; -#ifndef CUTOFF_BLENDV +#ifndef NBNXN_CUTOFF_USE_BLENDV /* wco: within cut-off, mask of all 1's or 0's */ gmx_simd_bool_t wco_S0; gmx_simd_bool_t wco_S2; @@ -114,6 +114,19 @@ gmx_simd_bool_t wco_vdw_S2; #endif #endif + +#if (defined CALC_COULOMB && defined CALC_COUL_TAB) || defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH + gmx_simd_real_t r_S0; + gmx_simd_real_t r_S2; +#endif + +#if defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH + gmx_simd_real_t rsw_S0, rsw2_S0, rsw2_r_S0; +#ifndef HALF_LJ + gmx_simd_real_t rsw_S2, rsw2_S2, rsw2_r_S2; +#endif +#endif + #ifdef CALC_COULOMB #ifdef CHECK_EXCLS /* 1/r masked with the interaction mask */ @@ -138,8 +151,8 @@ gmx_simd_real_t frcoul_S2; #ifdef CALC_COUL_TAB /* For tables: r, rs=r/sp, rf=floor(rs), frac=rs-rf */ - gmx_simd_real_t r_S0, rs_S0, rf_S0, frac_S0; - gmx_simd_real_t r_S2, rs_S2, rf_S2, frac_S2; + gmx_simd_real_t rs_S0, rf_S0, frac_S0; + gmx_simd_real_t rs_S2, rf_S2, frac_S2; /* Table index: rs truncated to an int */ gmx_simd_int32_t ti_S0, ti_S2; /* Linear force table values */ @@ -214,11 +227,11 @@ #endif #endif - gmx_simd_real_t FrLJ6_S0, FrLJ12_S0; + gmx_simd_real_t FrLJ6_S0, FrLJ12_S0, frLJ_S0; #ifndef HALF_LJ - gmx_simd_real_t FrLJ6_S2, FrLJ12_S2; + gmx_simd_real_t FrLJ6_S2, FrLJ12_S2, frLJ_S2; #endif -#ifdef CALC_ENERGIES +#if defined CALC_ENERGIES || defined LJ_POT_SWITCH gmx_simd_real_t VLJ6_S0, VLJ12_S0, VLJ_S0; #ifndef HALF_LJ gmx_simd_real_t VLJ6_S2, VLJ12_S2, VLJ_S2; @@ -271,7 +284,7 @@ rsq_S0 = gmx_simd_calc_rsq_r(dx_S0, dy_S0, dz_S0); rsq_S2 = gmx_simd_calc_rsq_r(dx_S2, dy_S2, dz_S2); -#ifndef CUTOFF_BLENDV +#ifndef NBNXN_CUTOFF_USE_BLENDV wco_S0 = gmx_simd_cmplt_r(rsq_S0, rc2_S); wco_S2 = gmx_simd_cmplt_r(rsq_S2, rc2_S); #endif @@ -380,7 +393,7 @@ #endif /* CALC_LJ */ -#ifndef CUTOFF_BLENDV +#ifndef NBNXN_CUTOFF_USE_BLENDV rinv_S0 = gmx_simd_blendzero_r(rinv_S0, wco_S0); rinv_S2 = gmx_simd_blendzero_r(rinv_S2, wco_S2); #else @@ -424,7 +437,7 @@ /* We need to mask (or limit) rsq for the cut-off, * as large distances can cause an overflow in gmx_pmecorrF/V. */ -#ifndef CUTOFF_BLENDV +#ifndef NBNXN_CUTOFF_USE_BLENDV brsq_S0 = gmx_simd_mul_r(beta2_S, gmx_simd_blendzero_r(rsq_S0, wco_S0)); brsq_S2 = gmx_simd_mul_r(beta2_S, gmx_simd_blendzero_r(rsq_S2, wco_S2)); #else @@ -541,12 +554,9 @@ rinvsix_S2 = gmx_simd_blendzero_r(rinvsix_S2, interact_S2); #endif #endif -#ifdef VDW_CUTOFF_CHECK - rinvsix_S0 = gmx_simd_blendzero_r(rinvsix_S0, wco_vdw_S0); -#ifndef HALF_LJ - rinvsix_S2 = gmx_simd_blendzero_r(rinvsix_S2, wco_vdw_S2); -#endif -#endif + +#ifndef LJ_FORCE_SWITCH + /* We have plain LJ with simple C6/6 C12/12 coefficients */ FrLJ6_S0 = gmx_simd_mul_r(c6_S0, rinvsix_S0); #ifndef HALF_LJ FrLJ6_S2 = gmx_simd_mul_r(c6_S2, rinvsix_S2); @@ -555,6 +565,37 @@ #ifndef HALF_LJ FrLJ12_S2 = gmx_simd_mul_r(c12_S2, gmx_simd_mul_r(rinvsix_S2, rinvsix_S2)); #endif +#endif + +#if defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH + /* We switch the LJ force */ + r_S0 = gmx_simd_mul_r(rsq_S0, rinv_S0); + rsw_S0 = gmx_simd_max_r(gmx_simd_sub_r(r_S0, rswitch_S), zero_S); + rsw2_S0 = gmx_simd_mul_r(rsw_S0, rsw_S0); + rsw2_r_S0 = gmx_simd_mul_r(rsw2_S0, r_S0); +#ifndef HALF_LJ + r_S2 = gmx_simd_mul_r(rsq_S2, rinv_S2); + rsw_S2 = gmx_simd_max_r(gmx_simd_sub_r(r_S2, rswitch_S), zero_S); + rsw2_S2 = gmx_simd_mul_r(rsw_S2, rsw_S2); + rsw2_r_S2 = gmx_simd_mul_r(rsw2_S2, r_S2); +#endif +#endif + +#ifdef LJ_FORCE_SWITCH + +#define add_fr_switch(fr, rsw, rsw2_r, c2, c3) gmx_simd_fmadd_r(gmx_simd_fmadd_r(c3, rsw, c2), rsw2_r, fr) + + FrLJ6_S0 = gmx_simd_mul_r(c6_S0, add_fr_switch(rinvsix_S0, rsw_S0, rsw2_r_S0, p6_fc2_S, p6_fc3_S)); +#ifndef HALF_LJ + FrLJ6_S2 = gmx_simd_mul_r(c6_S2, add_fr_switch(rinvsix_S2, rsw_S2, rsw2_r_S2, p6_fc2_S, p6_fc3_S)); +#endif + FrLJ12_S0 = gmx_simd_mul_r(c12_S0, add_fr_switch(gmx_simd_mul_r(rinvsix_S0, rinvsix_S0), rsw_S0, rsw2_r_S0, p12_fc2_S, p12_fc3_S)); +#ifndef HALF_LJ + FrLJ12_S2 = gmx_simd_mul_r(c12_S2, add_fr_switch(gmx_simd_mul_r(rinvsix_S2, rinvsix_S2), rsw_S2, rsw2_r_S2, p12_fc2_S, p12_fc3_S)); +#endif +#undef add_fr_switch +#endif /* LJ_FORCE_SWITCH */ + #endif /* not LJ_COMB_LB */ #ifdef LJ_COMB_LB @@ -611,6 +652,110 @@ #endif #endif /* LJ_COMB_LB */ + /* Determine the total scalar LJ force*r */ + frLJ_S0 = gmx_simd_sub_r(FrLJ12_S0, FrLJ6_S0); +#ifndef HALF_LJ + frLJ_S2 = gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2); +#endif + +#if defined CALC_ENERGIES && !defined LJ_POT_SWITCH +#ifndef LJ_FORCE_SWITCH + /* Calculate the LJ energies, with constant potential shift */ + VLJ6_S0 = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S0, p6_cpot_S, FrLJ6_S0)); +#ifndef HALF_LJ + VLJ6_S2 = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S2, p6_cpot_S, FrLJ6_S2)); +#endif + VLJ12_S0 = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S0, p12_cpot_S, FrLJ12_S0)); +#ifndef HALF_LJ + VLJ12_S2 = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S2, p12_cpot_S, FrLJ12_S2)); +#endif +#else + +#define v_fswitch_pr(rsw, rsw2, c0, c3, c4) gmx_simd_fmadd_r(gmx_simd_fmadd_r(c4, rsw, c3), gmx_simd_mul_r(rsw2, rsw), c0) + + VLJ6_S0 = gmx_simd_mul_r(c6_S0, gmx_simd_fmadd_r(sixth_S, rinvsix_S0, v_fswitch_pr(rsw_S0, rsw2_S0, p6_6cpot_S, p6_vc3_S, p6_vc4_S))); +#ifndef HALF_LJ + VLJ6_S2 = gmx_simd_mul_r(c6_S2, gmx_simd_fmadd_r(sixth_S, rinvsix_S2, v_fswitch_pr(rsw_S2, rsw2_S2, p6_6cpot_S, p6_vc3_S, p6_vc4_S))); +#endif + VLJ12_S0 = gmx_simd_mul_r(c12_S0, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S0, rinvsix_S0), v_fswitch_pr(rsw_S0, rsw2_S0, p12_12cpot_S, p12_vc3_S, p12_vc4_S))); +#ifndef HALF_LJ + VLJ12_S2 = gmx_simd_mul_r(c12_S2, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S2, rinvsix_S2), v_fswitch_pr(rsw_S2, rsw2_S2, p12_12cpot_S, p12_vc3_S, p12_vc4_S))); +#endif +#undef v_fswitch_pr +#endif /* LJ_FORCE_SWITCH */ + + /* Add up the repulsion and dispersion */ + VLJ_S0 = gmx_simd_sub_r(VLJ12_S0, VLJ6_S0); +#ifndef HALF_LJ + VLJ_S2 = gmx_simd_sub_r(VLJ12_S2, VLJ6_S2); +#endif +#endif /* CALC_ENERGIES && !LJ_POT_SWITCH */ + +#ifdef LJ_POT_SWITCH + /* We always need the potential, since it is needed for the force */ + VLJ_S0 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S0, gmx_simd_mul_r(twelveth_S, FrLJ12_S0)); +#ifndef HALF_LJ + VLJ_S2 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S2, gmx_simd_mul_r(twelveth_S, FrLJ12_S2)); +#endif + + { + gmx_simd_real_t sw_S0, dsw_S0; +#ifndef HALF_LJ + gmx_simd_real_t sw_S2, dsw_S2; +#endif + +#define switch_pr(rsw, rsw2, c3, c4, c5) gmx_simd_fmadd_r(gmx_simd_fmadd_r(gmx_simd_fmadd_r(c5, rsw, c4), rsw, c3), gmx_simd_mul_r(rsw2, rsw), one_S) +#define dswitch_pr(rsw, rsw2, c2, c3, c4) gmx_simd_mul_r(gmx_simd_fmadd_r(gmx_simd_fmadd_r(c4, rsw, c3), rsw, c2), rsw2) + + sw_S0 = switch_pr(rsw_S0, rsw2_S0, swV3_S, swV4_S, swV5_S); + dsw_S0 = dswitch_pr(rsw_S0, rsw2_S0, swF2_S, swF3_S, swF4_S); +#ifndef HALF_LJ + sw_S2 = switch_pr(rsw_S2, rsw2_S2, swV3_S, swV4_S, swV5_S); + dsw_S2 = dswitch_pr(rsw_S2, rsw2_S2, swF2_S, swF3_S, swF4_S); +#endif + frLJ_S0 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S0, VLJ_S0), r_S0, gmx_simd_mul_r(sw_S0, frLJ_S0)); +#ifndef HALF_LJ + frLJ_S2 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S2, VLJ_S2), r_S2, gmx_simd_mul_r(sw_S2, frLJ_S2)); +#endif +#ifdef CALC_ENERGIES + VLJ_S0 = gmx_simd_mul_r(sw_S0, VLJ_S0); +#ifndef HALF_LJ + VLJ_S2 = gmx_simd_mul_r(sw_S2, VLJ_S2); +#endif +#endif + +#undef switch_pr +#undef dswitch_pr + } +#endif /* LJ_POT_SWITCH */ + +#if defined VDW_CUTOFF_CHECK + /* frLJ is multiplied later by rinvsq, which is masked for the Coulomb + * cut-off, but if the VdW cut-off is shorter, we need to mask with that. + */ + frLJ_S0 = gmx_simd_blendzero_r(frLJ_S0, wco_vdw_S0); +#ifndef HALF_LJ + frLJ_S2 = gmx_simd_blendzero_r(frLJ_S2, wco_vdw_S2); +#endif +#endif + +#ifdef CALC_ENERGIES + /* The potential shift should be removed for pairs beyond cut-off */ + VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, wco_vdw_S0); +#ifndef HALF_LJ + VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, wco_vdw_S2); +#endif +#endif + +#if defined CALC_ENERGIES && defined CHECK_EXCLS + /* The potential shift should be removed for excluded pairs */ + VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, interact_S0); +#ifndef HALF_LJ + VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, interact_S2); +#endif +#endif + + #endif /* CALC_LJ */ #ifdef CALC_ENERGIES @@ -650,32 +795,6 @@ #endif #ifdef CALC_LJ - /* Calculate the LJ energies */ - VLJ6_S0 = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S0, gmx_simd_mul_r(c6_S0, sh_invrc6_S))); -#ifndef HALF_LJ - VLJ6_S2 = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S2, gmx_simd_mul_r(c6_S2, sh_invrc6_S))); -#endif - VLJ12_S0 = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S0, gmx_simd_mul_r(c12_S0, sh_invrc12_S))); -#ifndef HALF_LJ - VLJ12_S2 = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S2, gmx_simd_mul_r(c12_S2, sh_invrc12_S))); -#endif - - VLJ_S0 = gmx_simd_sub_r(VLJ12_S0, VLJ6_S0); -#ifndef HALF_LJ - VLJ_S2 = gmx_simd_sub_r(VLJ12_S2, VLJ6_S2); -#endif - /* The potential shift should be removed for pairs beyond cut-off */ - VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, wco_vdw_S0); -#ifndef HALF_LJ - VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, wco_vdw_S2); -#endif -#ifdef CHECK_EXCLS - /* The potential shift should be removed for excluded pairs */ - VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, interact_S0); -#ifndef HALF_LJ - VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, interact_S2); -#endif -#endif #ifndef ENERGY_GROUPS Vvdwtot_S = gmx_simd_add_r(Vvdwtot_S, #ifndef HALF_LJ @@ -695,26 +814,18 @@ #ifdef CALC_LJ #ifdef CALC_COULOMB - fscal_S0 = gmx_simd_mul_r(rinvsq_S0, - gmx_simd_add_r(frcoul_S0, - gmx_simd_sub_r(FrLJ12_S0, FrLJ6_S0))); + fscal_S0 = gmx_simd_mul_r(rinvsq_S0, gmx_simd_add_r(frcoul_S0, frLJ_S0)); #else - fscal_S0 = gmx_simd_mul_r(rinvsq_S0, - ( - gmx_simd_sub_r(FrLJ12_S0, FrLJ6_S0))); + fscal_S0 = gmx_simd_mul_r(rinvsq_S0, frLJ_S0); #endif #else fscal_S0 = gmx_simd_mul_r(rinvsq_S0, frcoul_S0); #endif /* CALC_LJ */ #if defined CALC_LJ && !defined HALF_LJ #ifdef CALC_COULOMB - fscal_S2 = gmx_simd_mul_r(rinvsq_S2, - gmx_simd_add_r(frcoul_S2, - gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2))); + fscal_S2 = gmx_simd_mul_r(rinvsq_S2, gmx_simd_add_r(frcoul_S2, frLJ_S2)); #else - fscal_S2 = gmx_simd_mul_r(rinvsq_S2, - ( - gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2))); + fscal_S2 = gmx_simd_mul_r(rinvsq_S2, frLJ_S2); #endif #else /* Atom 2 and 3 don't have LJ, so only add Coulomb forces */ @@ -752,6 +863,6 @@ #undef wco_vdw_S0 #undef wco_vdw_S2 -#undef CUTOFF_BLENDV +#undef NBNXN_CUTOFF_USE_BLENDV #undef EXCL_FORCES diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_outer.h b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_outer.h index 0c3c7a9cad..8f809e7353 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_outer.h +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_outer.h @@ -111,15 +111,18 @@ unsigned *exclusion_filter; gmx_exclfilter filter_S0, filter_S2; - gmx_simd_real_t zero_S = gmx_simd_set1_r(0); + gmx_simd_real_t zero_S = gmx_simd_set1_r(0.0); gmx_simd_real_t one_S = gmx_simd_set1_r(1.0); gmx_simd_real_t iq_S0 = gmx_simd_setzero_r(); gmx_simd_real_t iq_S2 = gmx_simd_setzero_r(); + +#ifdef CALC_COUL_RF gmx_simd_real_t mrc_3_S; #ifdef CALC_ENERGIES gmx_simd_real_t hrc_3_S, moh_rc_S; #endif +#endif #ifdef CALC_COUL_TAB /* Coulomb table variables */ @@ -128,8 +131,9 @@ #ifndef TAB_FDV0 const real *tab_coul_V; #endif - int ti0_array[2*GMX_SIMD_REAL_WIDTH], *ti0; - int ti2_array[2*GMX_SIMD_REAL_WIDTH], *ti2; + /* Thread-local working buffers for force and potential lookups */ + int ti0_array[2*GMX_SIMD_REAL_WIDTH], *ti0 = NULL; + int ti2_array[2*GMX_SIMD_REAL_WIDTH], *ti2 = NULL; #ifdef CALC_ENERGIES gmx_simd_real_t mhalfsp_S; #endif @@ -143,6 +147,27 @@ gmx_simd_real_t sh_ewald_S; #endif +#ifdef LJ_POT_SWITCH + gmx_simd_real_t rswitch_S; + gmx_simd_real_t swV3_S, swV4_S, swV5_S; + gmx_simd_real_t swF2_S, swF3_S, swF4_S; +#else +#ifdef LJ_FORCE_SWITCH + gmx_simd_real_t rswitch_S; + gmx_simd_real_t p6_fc2_S, p6_fc3_S; + gmx_simd_real_t p12_fc2_S, p12_fc3_S; +#ifdef CALC_ENERGIES + gmx_simd_real_t p6_vc3_S, p6_vc4_S; + gmx_simd_real_t p12_vc3_S, p12_vc4_S; + gmx_simd_real_t p6_6cpot_S, p12_12cpot_S; +#endif +#else +#ifdef CALC_ENERGIES + gmx_simd_real_t p6_cpot_S, p12_cpot_S; +#endif +#endif +#endif + #ifdef LJ_COMB_LB const real *ljc; @@ -178,8 +203,6 @@ #endif #ifdef CALC_ENERGIES - gmx_simd_real_t sh_invrc6_S, sh_invrc12_S; - /* cppcheck-suppress unassignedVariable */ real tmpsum_array[2*GMX_SIMD_REAL_WIDTH], *tmpsum; #endif @@ -235,14 +258,22 @@ exclusion_filter = nbat->simd_exclusion_filter2; } - /* Here we cast the exclusion masks from unsigned * to int * or - * real *. Since we only check bits, the actual value they - * represent does not matter, as long as both mask and exclusion - * info are treated the same way. + /* Here we cast the exclusion filters from unsigned * to int * or real *. + * Since we only check bits, the actual value they represent does not + * matter, as long as both filter and mask data are treated the same way. */ filter_S0 = gmx_load_exclusion_filter(exclusion_filter + 0*2*UNROLLJ*filter_stride); filter_S2 = gmx_load_exclusion_filter(exclusion_filter + 1*2*UNROLLJ*filter_stride); +#ifdef CALC_COUL_RF + /* Reaction-field constants */ + mrc_3_S = gmx_simd_set1_r(-2*ic->k_rf); +#ifdef CALC_ENERGIES + hrc_3_S = gmx_simd_set1_r(ic->k_rf); + moh_rc_S = gmx_simd_set1_r(-ic->c_rf); +#endif +#endif + #ifdef CALC_COUL_TAB /* Generate aligned table index pointers */ ti0 = prepare_table_load_buffer(ti0_array); @@ -270,13 +301,50 @@ sh_ewald_S = gmx_simd_set1_r(ic->sh_ewald); #endif - q = nbat->q; - type = nbat->type; - facel = ic->epsfac; - shiftvec = shift_vec[0]; - x = nbat->x; + /* LJ function constants */ +#if defined CALC_ENERGIES || defined LJ_POT_SWITCH + sixth_S = gmx_simd_set1_r(1.0/6.0); + twelveth_S = gmx_simd_set1_r(1.0/12.0); +#endif - avoid_sing_S = gmx_simd_set1_r(NBNXN_AVOID_SING_R2_INC); +#ifdef LJ_POT_SWITCH + rswitch_S = gmx_simd_set1_r(ic->rvdw_switch); + swV3_S = gmx_simd_set1_r(ic->vdw_switch.c3); + swV4_S = gmx_simd_set1_r(ic->vdw_switch.c4); + swV5_S = gmx_simd_set1_r(ic->vdw_switch.c5); + swF2_S = gmx_simd_set1_r(3*ic->vdw_switch.c3); + swF3_S = gmx_simd_set1_r(4*ic->vdw_switch.c4); + swF4_S = gmx_simd_set1_r(5*ic->vdw_switch.c5); +#else + sixth_S = gmx_simd_set1_r(1.0/6.0); + twelveth_S = gmx_simd_set1_r(1.0/12.0); +#ifdef LJ_FORCE_SWITCH + rswitch_S = gmx_simd_set1_r(ic->rvdw_switch); + p6_fc2_S = gmx_simd_set1_r(ic->dispersion_shift.c2); + p6_fc3_S = gmx_simd_set1_r(ic->dispersion_shift.c3); + p12_fc2_S = gmx_simd_set1_r(ic->repulsion_shift.c2); + p12_fc3_S = gmx_simd_set1_r(ic->repulsion_shift.c3); +#ifdef CALC_ENERGIES + { + gmx_simd_real_t mthird_S = gmx_simd_set1_r(-1.0/3.0); + gmx_simd_real_t mfourth_S = gmx_simd_set1_r(-1.0/4.0); + + p6_vc3_S = gmx_simd_mul_r(mthird_S, p6_fc2_S); + p6_vc4_S = gmx_simd_mul_r(mfourth_S, p6_fc3_S); + p6_6cpot_S = gmx_simd_set1_r(ic->dispersion_shift.cpot/6); + p12_vc3_S = gmx_simd_mul_r(mthird_S, p12_fc2_S); + p12_vc4_S = gmx_simd_mul_r(mfourth_S, p12_fc3_S); + p12_12cpot_S = gmx_simd_set1_r(ic->repulsion_shift.cpot/12); + } +#endif +#else + /* Plain LJ cut-off, with potential shift cpot, which can be 0 */ +#ifdef CALC_ENERGIES + p6_cpot_S = gmx_simd_set1_r(ic->dispersion_shift.cpot); + p12_cpot_S = gmx_simd_set1_r(ic->repulsion_shift.cpot); +#endif +#endif +#endif /* LJ_POT_SWITCH */ /* The kernel either supports rcoulomb = rvdw or rcoulomb >= rvdw */ rc2_S = gmx_simd_set1_r(ic->rcoulomb*ic->rcoulomb); @@ -284,21 +352,13 @@ rcvdw2_S = gmx_simd_set1_r(ic->rvdw*ic->rvdw); #endif -#ifdef CALC_ENERGIES - sixth_S = gmx_simd_set1_r(1.0/6.0); - twelveth_S = gmx_simd_set1_r(1.0/12.0); - - sh_invrc6_S = gmx_simd_set1_r(ic->sh_invrc6); - sh_invrc12_S = gmx_simd_set1_r(ic->sh_invrc6*ic->sh_invrc6); -#endif - - mrc_3_S = gmx_simd_set1_r(-2*ic->k_rf); - -#ifdef CALC_ENERGIES - hrc_3_S = gmx_simd_set1_r(ic->k_rf); + avoid_sing_S = gmx_simd_set1_r(NBNXN_AVOID_SING_R2_INC); - moh_rc_S = gmx_simd_set1_r(-ic->c_rf); -#endif + q = nbat->q; + type = nbat->type; + facel = ic->epsfac; + shiftvec = shift_vec[0]; + x = nbat->x; #ifdef CALC_ENERGIES tmpsum = gmx_simd_align_r(tmpsum_array); @@ -511,6 +571,7 @@ #define CALC_LJ if (half_LJ) { + /* Coulomb: all i-atoms, LJ: first half i-atoms */ #define CALC_COULOMB #define HALF_LJ #define CHECK_EXCLS @@ -529,6 +590,7 @@ } else if (do_coul) { + /* Coulomb: all i-atoms, LJ: all i-atoms */ #define CALC_COULOMB #define CHECK_EXCLS while (cjind < cjind1 && nbl->cj[cjind].excl != NBNXN_INTERACTION_MASK_ALL) @@ -545,6 +607,7 @@ } else { + /* Coulomb: none, LJ: all i-atoms */ #define CHECK_EXCLS while (cjind < cjind1 && nbl->cj[cjind].excl != NBNXN_INTERACTION_MASK_ALL) { @@ -562,13 +625,13 @@ /* Add accumulated i-forces to the force array */ fix_S = gmx_mm_transpose_sum4h_pr(fix_S0, fix_S2); - gmx_store_pr4(f+scix, gmx_add_pr4(fix_S, gmx_load_pr4(f+scix))); + gmx_simd4_store_r(f+scix, gmx_add_pr4(fix_S, gmx_load_pr4(f+scix))); fiy_S = gmx_mm_transpose_sum4h_pr(fiy_S0, fiy_S2); - gmx_store_pr4(f+sciy, gmx_add_pr4(fiy_S, gmx_load_pr4(f+sciy))); + gmx_simd4_store_r(f+sciy, gmx_add_pr4(fiy_S, gmx_load_pr4(f+sciy))); fiz_S = gmx_mm_transpose_sum4h_pr(fiz_S0, fiz_S2); - gmx_store_pr4(f+sciz, gmx_add_pr4(fiz_S, gmx_load_pr4(f+sciz))); + gmx_simd4_store_r(f+sciz, gmx_add_pr4(fiz_S, gmx_load_pr4(f+sciz))); #ifdef CALC_SHIFTFORCES fshift[ish3+0] += gmx_sum_simd4(fix_S, shf); diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp.c deleted file mode 100644 index 63e2cfd243..0000000000 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the GROMACS molecular simulation package. - * - * Copyright (c) 2012,2013, by the GROMACS development team, led by - * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, - * and including many others, as listed in the AUTHORS file in the - * top-level source directory and at http://www.gromacs.org. - * - * GROMACS is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * of the License, or (at your option) any later version. - * - * GROMACS is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with GROMACS; if not, see - * http://www.gnu.org/licenses, or write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * If you want to redistribute modifications to GROMACS, please - * consider that scientific software is very special. Version - * control is crucial - bugs must be traceable. We will be happy to - * consider code for inclusion in the official distribution, but - * derived work must not be called official GROMACS. Details are found - * in the README & COPYING files - if they are missing, get the - * official version at http://www.gromacs.org. - * - * To help us fund GROMACS development, we humbly ask that you cite - * the research papers on the package. Check out http://www.gromacs.org. - */ -/* - * Note: this file was generated by the Verlet kernel generator for - * kernel type 2xnn. - */ - -/* Some target architectures compile kernels for only some NBNxN - * kernel flavours, but the code is generated before the target - * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub - * function definition when the kernel will never be called. - */ -#define GMX_SIMD_J_UNROLL_SIZE 2 -#include "nbnxn_kernel_simd_2xnn.h" - -#define CALC_COUL_RF -#define LJ_COMB_GEOM -#define CALC_ENERGIES -#define ENERGY_GROUPS - -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_common.h" -#endif /* GMX_NBNXN_SIMD_2XNN */ - -#ifdef CALC_ENERGIES -void -nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift, - real gmx_unused *Vvdw, - real gmx_unused *Vc) -#else /* CALC_ENERGIES */ -void -nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift) -#endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_outer.h" -#else /* GMX_NBNXN_SIMD_2XNN */ -{ -/* No need to call gmx_incons() here, because the only function - * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and - * instead call gmx_incons(). - */ -} -#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp.c deleted file mode 100644 index 106af49bb3..0000000000 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the GROMACS molecular simulation package. - * - * Copyright (c) 2012,2013, by the GROMACS development team, led by - * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, - * and including many others, as listed in the AUTHORS file in the - * top-level source directory and at http://www.gromacs.org. - * - * GROMACS is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * of the License, or (at your option) any later version. - * - * GROMACS is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with GROMACS; if not, see - * http://www.gnu.org/licenses, or write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * If you want to redistribute modifications to GROMACS, please - * consider that scientific software is very special. Version - * control is crucial - bugs must be traceable. We will be happy to - * consider code for inclusion in the official distribution, but - * derived work must not be called official GROMACS. Details are found - * in the README & COPYING files - if they are missing, get the - * official version at http://www.gromacs.org. - * - * To help us fund GROMACS development, we humbly ask that you cite - * the research papers on the package. Check out http://www.gromacs.org. - */ -/* - * Note: this file was generated by the Verlet kernel generator for - * kernel type 2xnn. - */ - -/* Some target architectures compile kernels for only some NBNxN - * kernel flavours, but the code is generated before the target - * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub - * function definition when the kernel will never be called. - */ -#define GMX_SIMD_J_UNROLL_SIZE 2 -#include "nbnxn_kernel_simd_2xnn.h" - -#define CALC_COUL_RF -#define LJ_COMB_LB -#define CALC_ENERGIES -#define ENERGY_GROUPS - -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_common.h" -#endif /* GMX_NBNXN_SIMD_2XNN */ - -#ifdef CALC_ENERGIES -void -nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift, - real gmx_unused *Vvdw, - real gmx_unused *Vc) -#else /* CALC_ENERGIES */ -void -nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift) -#endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_outer.h" -#else /* GMX_NBNXN_SIMD_2XNN */ -{ -/* No need to call gmx_incons() here, because the only function - * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and - * instead call gmx_incons(). - */ -} -#endif /* GMX_NBNXN_SIMD_2XNN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn.c new file mode 100644 index 0000000000..e102dd51b8 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +#define LJ_COMB_GEOM +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn.c similarity index 95% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn.c index cd98b10656..73fe4a096a 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -57,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +67,7 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_un real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn.c similarity index 95% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn.c index 5d45131e64..8cf043d5be 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -58,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -68,7 +68,7 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn.c index 88b4baba47..d4ddce8cc7 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,7 +47,8 @@ #include "nbnxn_kernel_simd_4xn.h" #define CALC_COUL_EWALD -#define LJ_COMB_GEOM +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +#define LJ_COMB_LB /* Will not calculate energies */ #ifdef GMX_NBNXN_SIMD_4XN @@ -56,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +67,7 @@ nbnxn_kernel_simd_4xn_ewald_comb_geom_noener(const nbnxn_pairlist_t gmx_unuse real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn.c similarity index 95% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn.c index ee49e35f45..2fd6943440 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -57,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +67,7 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unus real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn.c similarity index 95% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn.c index 70bfef0895..2104429a91 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -58,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -68,7 +68,7 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_u real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn.c new file mode 100644 index 0000000000..ab1343ed6d --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn.c similarity index 92% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn.c index 96a3f4ff3f..513b1c4589 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,9 +46,11 @@ #define GMX_SIMD_J_UNROLL_SIZE 1 #include "nbnxn_kernel_simd_4xn.h" -#define CALC_COUL_TAB +#define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ -/* Will not calculate energies */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES #ifdef GMX_NBNXN_SIMD_4XN #include "nbnxn_kernel_simd_4xn_common.h" @@ -56,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +68,7 @@ nbnxn_kernel_simd_4xn_tab_comb_none_noener(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn.c new file mode 100644 index 0000000000..2d97d0890f --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn.c @@ -0,0 +1,89 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn.c new file mode 100644 index 0000000000..b156e3621e --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn.c index 3e92f288ca..8fc7a7b437 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,7 +47,9 @@ #include "nbnxn_kernel_simd_4xn.h" #define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ +#define LJ_POT_SWITCH #define CALC_ENERGIES #ifdef GMX_NBNXN_SIMD_4XN @@ -56,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +68,7 @@ nbnxn_kernel_simd_4xn_ewald_comb_none_ener(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn.c index 9d2079d63f..ad083c0c5a 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,7 +47,9 @@ #include "nbnxn_kernel_simd_4xn.h" #define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ +#define LJ_POT_SWITCH #define CALC_ENERGIES #define ENERGY_GROUPS @@ -57,7 +59,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +69,7 @@ nbnxn_kernel_simd_4xn_ewald_comb_none_energrp(const nbnxn_pairlist_t gmx_unus real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn.c new file mode 100644 index 0000000000..a62b606a8d --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +/* Use no LJ combination rule */ +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn.c index 6e38fe11af..cf85a589e0 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,7 +46,8 @@ #define GMX_SIMD_J_UNROLL_SIZE 1 #include "nbnxn_kernel_simd_4xn.h" -#define CALC_COUL_RF +#define CALC_COUL_EWALD +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ #define CALC_ENERGIES @@ -56,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_rf_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +67,7 @@ nbnxn_kernel_simd_4xn_rf_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nb real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_rf_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn.c similarity index 92% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn.c index cb970324e2..667b13b492 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,8 +47,10 @@ #include "nbnxn_kernel_simd_4xn.h" #define CALC_COUL_EWALD -#define LJ_COMB_GEOM +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +/* Use no LJ combination rule */ #define CALC_ENERGIES +#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_4XN #include "nbnxn_kernel_simd_4xn_common.h" @@ -56,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +68,7 @@ nbnxn_kernel_simd_4xn_ewald_comb_geom_ener(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn.c index a9f06ef23d..8acf557386 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,9 +46,9 @@ #define GMX_SIMD_J_UNROLL_SIZE 1 #include "nbnxn_kernel_simd_4xn.h" -#define CALC_COUL_RF +#define CALC_COUL_EWALD #define LJ_COMB_GEOM -#define CALC_ENERGIES +/* Will not calculate energies */ #ifdef GMX_NBNXN_SIMD_4XN #include "nbnxn_kernel_simd_4xn_common.h" @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_rf_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_rf_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nb real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_rf_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn.c index 94f5db0f69..4660845a02 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,7 +47,7 @@ #include "nbnxn_kernel_simd_4xn.h" #define CALC_COUL_EWALD -#define LJ_COMB_LB +#define LJ_COMB_GEOM #define CALC_ENERGIES #ifdef GMX_NBNXN_SIMD_4XN @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_ewald_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *n real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn.c index 062cad7e91..5feb79939e 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,7 +47,7 @@ #include "nbnxn_kernel_simd_4xn.h" #define CALC_COUL_EWALD -#define LJ_COMB_LB +#define LJ_COMB_GEOM #define CALC_ENERGIES #define ENERGY_GROUPS @@ -57,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +67,7 @@ nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn.c similarity index 68% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn.c index aeaa88b425..30478d566c 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_lb_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -56,22 +56,22 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift, - real gmx_unused *Vvdw, - real gmx_unused *Vc) +nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift) +nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) #endif /* CALC_ENERGIES */ #ifdef GMX_NBNXN_SIMD_4XN #include "nbnxn_kernel_simd_4xn_outer.h" diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn.c new file mode 100644 index 0000000000..b7aedd19a2 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn.c @@ -0,0 +1,86 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +#define LJ_COMB_LB +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn.c new file mode 100644 index 0000000000..e024054af9 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +#define LJ_COMB_LB +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn.c new file mode 100644 index 0000000000..56ec7fe340 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn.c new file mode 100644 index 0000000000..bf88b72e38 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn.c new file mode 100644 index 0000000000..733ddedf03 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn.c new file mode 100644 index 0000000000..0c28c692ac --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn.c new file mode 100644 index 0000000000..456eea3578 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn.c new file mode 100644 index 0000000000..8aea98b89e --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_F_4xn.c new file mode 100644 index 0000000000..8e50fafe95 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_F_4xn.c @@ -0,0 +1,86 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_VF_4xn.c new file mode 100644 index 0000000000..e4eb170a38 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_VF_4xn.c @@ -0,0 +1,86 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn.c new file mode 100644 index 0000000000..5243174ea8 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_EWALD +/* Use no LJ combination rule */ +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn.c index 4a64d67fb1..0760890529 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,7 +46,7 @@ #define GMX_SIMD_J_UNROLL_SIZE 1 #include "nbnxn_kernel_simd_4xn.h" -#define CALC_COUL_EWALD +#define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ #define LJ_COMB_GEOM /* Will not calculate energies */ @@ -57,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +67,7 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_ real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn.c index 5a84b18952..b5e4504124 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,11 +46,10 @@ #define GMX_SIMD_J_UNROLL_SIZE 1 #include "nbnxn_kernel_simd_4xn.h" -#define CALC_COUL_EWALD +#define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -/* Use no LJ combination rule */ +#define LJ_COMB_GEOM #define CALC_ENERGIES -#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_4XN #include "nbnxn_kernel_simd_4xn_common.h" @@ -58,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -68,7 +67,7 @@ nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t gmx real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn.c new file mode 100644 index 0000000000..4ee1264925 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_TAB +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +#define LJ_COMB_GEOM +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn.c index afa24c421f..e605a3e21a 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -48,7 +48,7 @@ #define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -#define LJ_COMB_GEOM +#define LJ_COMB_LB /* Will not calculate energies */ #ifdef GMX_NBNXN_SIMD_4XN @@ -57,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +67,7 @@ nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_un real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn.c index 3a02705c43..fa3c5629e6 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -48,9 +48,8 @@ #define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -#define LJ_COMB_GEOM +#define LJ_COMB_LB #define CALC_ENERGIES -#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_4XN #include "nbnxn_kernel_simd_4xn_common.h" @@ -58,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -68,7 +67,7 @@ nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_u real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn.c new file mode 100644 index 0000000000..57cd06863a --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_TAB +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +#define LJ_COMB_LB +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn.c new file mode 100644 index 0000000000..337c48d9f1 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_TAB +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn.c index d7f00c506e..23ed6b7fca 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -48,8 +48,9 @@ #define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -#define LJ_COMB_LB -/* Will not calculate energies */ +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES #ifdef GMX_NBNXN_SIMD_4XN #include "nbnxn_kernel_simd_4xn_common.h" @@ -57,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +68,7 @@ nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unus real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn.c similarity index 82% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn.c index d59e6227e5..a211d2248e 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -34,30 +34,32 @@ */ /* * Note: this file was generated by the Verlet kernel generator for - * kernel type 2xnn. + * kernel type 4xn. */ /* Some target architectures compile kernels for only some NBNxN * kernel flavours, but the code is generated before the target * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub * function definition when the kernel will never be called. */ -#define GMX_SIMD_J_UNROLL_SIZE 2 -#include "nbnxn_kernel_simd_2xnn.h" +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" #define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ -/* Will not calculate energies */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES +#define ENERGY_GROUPS -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_common.h" -#endif /* GMX_NBNXN_SIMD_2XNN */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,21 +69,21 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener(const nbnxn_pairlist_t gmx_u real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, real gmx_unused *f, real gmx_unused *fshift) #endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_outer.h" -#else /* GMX_NBNXN_SIMD_2XNN */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ { /* No need to call gmx_incons() here, because the only function * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and * instead call gmx_incons(). */ } -#endif /* GMX_NBNXN_SIMD_2XNN */ +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn.c similarity index 82% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn.c index ad0b452829..4b589147f2 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -34,30 +34,31 @@ */ /* * Note: this file was generated by the Verlet kernel generator for - * kernel type 2xnn. + * kernel type 4xn. */ /* Some target architectures compile kernels for only some NBNxN * kernel flavours, but the code is generated before the target * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub * function definition when the kernel will never be called. */ -#define GMX_SIMD_J_UNROLL_SIZE 2 -#include "nbnxn_kernel_simd_2xnn.h" +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" #define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -#define LJ_COMB_LB -#define CALC_ENERGIES +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +/* Will not calculate energies */ -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_common.h" -#endif /* GMX_NBNXN_SIMD_2XNN */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,21 +68,21 @@ nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unuse real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, real gmx_unused *f, real gmx_unused *fshift) #endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_outer.h" -#else /* GMX_NBNXN_SIMD_2XNN */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ { /* No need to call gmx_incons() here, because the only function * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and * instead call gmx_incons(). */ } -#endif /* GMX_NBNXN_SIMD_2XNN */ +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn.c index 4493dec7fd..332cbe1681 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -49,6 +49,7 @@ #define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ +#define LJ_POT_SWITCH #define CALC_ENERGIES #ifdef GMX_NBNXN_SIMD_4XN @@ -57,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +68,7 @@ nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unus real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn.c index 01f982ba20..2f48effa69 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -49,6 +49,7 @@ #define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ +#define LJ_POT_SWITCH #define CALC_ENERGIES #define ENERGY_GROUPS @@ -58,7 +59,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -68,7 +69,7 @@ nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_u real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn.c index d81c82f637..c66d8108fa 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,7 +46,8 @@ #define GMX_SIMD_J_UNROLL_SIZE 1 #include "nbnxn_kernel_simd_4xn.h" -#define CALC_COUL_RF +#define CALC_COUL_TAB +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ /* Will not calculate energies */ @@ -56,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_rf_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +67,7 @@ nbnxn_kernel_simd_4xn_rf_comb_none_noener(const nbnxn_pairlist_t gmx_unused * real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_rf_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn.c index 5d5ae6bfb7..1350b512a9 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_none_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,10 +46,10 @@ #define GMX_SIMD_J_UNROLL_SIZE 1 #include "nbnxn_kernel_simd_4xn.h" -#define CALC_COUL_RF +#define CALC_COUL_TAB +#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ /* Use no LJ combination rule */ #define CALC_ENERGIES -#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_4XN #include "nbnxn_kernel_simd_4xn_common.h" @@ -57,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_rf_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +67,7 @@ nbnxn_kernel_simd_4xn_rf_comb_none_energrp(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_rf_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn.c index a328039acb..e2d9c53fbe 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -48,8 +48,9 @@ #define CALC_COUL_TAB #define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -#define LJ_COMB_GEOM +/* Use no LJ combination rule */ #define CALC_ENERGIES +#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_4XN #include "nbnxn_kernel_simd_4xn_common.h" @@ -57,7 +58,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +68,7 @@ nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unus real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn.c similarity index 95% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn.c index c95b9aa877..c716a94c9e 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_tab_comb_geom_noener(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn.c index 7fccc0e95f..c99c7e51d9 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -49,7 +49,6 @@ #define CALC_COUL_TAB #define LJ_COMB_GEOM #define CALC_ENERGIES -#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_4XN #include "nbnxn_kernel_simd_4xn_common.h" @@ -57,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +66,7 @@ nbnxn_kernel_simd_4xn_tab_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn.c index 3ff287557a..a07bb56374 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,8 +47,7 @@ #include "nbnxn_kernel_simd_4xn.h" #define CALC_COUL_TAB -#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -#define LJ_COMB_LB +#define LJ_COMB_GEOM #define CALC_ENERGIES #define ENERGY_GROUPS @@ -58,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -68,7 +67,7 @@ nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unu real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn.c index dd79f7984b..0f10b4d547 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_tab_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *n real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn.c index d4ffc981c7..aa5997a71c 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -49,7 +49,6 @@ #define CALC_COUL_TAB #define LJ_COMB_LB #define CALC_ENERGIES -#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_4XN #include "nbnxn_kernel_simd_4xn_common.h" @@ -57,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +66,7 @@ nbnxn_kernel_simd_4xn_tab_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused * real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn.c similarity index 92% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn.c index 2608813e28..1cd5bebb37 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_none_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,9 +46,10 @@ #define GMX_SIMD_J_UNROLL_SIZE 1 #include "nbnxn_kernel_simd_4xn.h" -#define CALC_COUL_EWALD -/* Use no LJ combination rule */ -/* Will not calculate energies */ +#define CALC_COUL_TAB +#define LJ_COMB_LB +#define CALC_ENERGIES +#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_4XN #include "nbnxn_kernel_simd_4xn_common.h" @@ -56,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_ewald_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +67,7 @@ nbnxn_kernel_simd_4xn_ewald_comb_none_noener(const nbnxn_pairlist_t gmx_unuse real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_ewald_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn.c new file mode 100644 index 0000000000..04e3ffcadd --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn.c new file mode 100644 index 0000000000..6965f31e28 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn.c new file mode 100644 index 0000000000..c81681217a --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn.c new file mode 100644 index 0000000000..4b9d360b36 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn.c similarity index 68% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn.c index ce0a10fb6b..cc284d13e5 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -48,6 +48,7 @@ #define CALC_COUL_TAB /* Use no LJ combination rule */ +#define LJ_POT_SWITCH #define CALC_ENERGIES #ifdef GMX_NBNXN_SIMD_4XN @@ -56,22 +57,22 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift, - real gmx_unused *Vvdw, - real gmx_unused *Vc) +nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift) +nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) #endif /* CALC_ENERGIES */ #ifdef GMX_NBNXN_SIMD_4XN #include "nbnxn_kernel_simd_4xn_outer.h" diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn.c similarity index 82% rename from src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn.c index 50038027ee..59e2c624ba 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn_tab_comb_none_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -34,29 +34,31 @@ */ /* * Note: this file was generated by the Verlet kernel generator for - * kernel type 2xnn. + * kernel type 4xn. */ /* Some target architectures compile kernels for only some NBNxN * kernel flavours, but the code is generated before the target * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub * function definition when the kernel will never be called. */ -#define GMX_SIMD_J_UNROLL_SIZE 2 -#include "nbnxn_kernel_simd_2xnn.h" +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" #define CALC_COUL_TAB /* Use no LJ combination rule */ +#define LJ_POT_SWITCH #define CALC_ENERGIES +#define ENERGY_GROUPS -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_common.h" -#endif /* GMX_NBNXN_SIMD_2XNN */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_2xnn_tab_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,21 +68,21 @@ nbnxn_kernel_simd_2xnn_tab_comb_none_ener(const nbnxn_pairlist_t gmx_unused * real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_2xnn_tab_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, real gmx_unused *f, real gmx_unused *fshift) #endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_2XNN -#include "nbnxn_kernel_simd_2xnn_outer.h" -#else /* GMX_NBNXN_SIMD_2XNN */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ { /* No need to call gmx_incons() here, because the only function * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and * instead call gmx_incons(). */ } -#endif /* GMX_NBNXN_SIMD_2XNN */ +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn.c new file mode 100644 index 0000000000..a33a35ac00 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn.c @@ -0,0 +1,86 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn.c new file mode 100644 index 0000000000..72c53da0c1 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn.c @@ -0,0 +1,86 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn.c new file mode 100644 index 0000000000..0535579306 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_TAB +/* Use no LJ combination rule */ +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn.c index c85bd4bcf4..a49d769452 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,7 +47,7 @@ #include "nbnxn_kernel_simd_4xn.h" #define CALC_COUL_RF -#define LJ_COMB_LB +#define LJ_COMB_GEOM /* Will not calculate energies */ #ifdef GMX_NBNXN_SIMD_4XN @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_rf_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_rf_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nb real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_rf_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn.c index e83944bdb9..8ab2694b0d 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_geom_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,7 +46,7 @@ #define GMX_SIMD_J_UNROLL_SIZE 1 #include "nbnxn_kernel_simd_4xn.h" -#define CALC_COUL_TAB +#define CALC_COUL_RF #define LJ_COMB_GEOM #define CALC_ENERGIES @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_tab_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *n real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_energrp.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn.c index 723fe790f4..e73120cd77 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_none_energrp.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,8 +46,8 @@ #define GMX_SIMD_J_UNROLL_SIZE 1 #include "nbnxn_kernel_simd_4xn.h" -#define CALC_COUL_TAB -/* Use no LJ combination rule */ +#define CALC_COUL_RF +#define LJ_COMB_GEOM #define CALC_ENERGIES #define ENERGY_GROUPS @@ -57,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -67,7 +67,7 @@ nbnxn_kernel_simd_4xn_tab_comb_none_energrp(const nbnxn_pairlist_t gmx_unused real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn.c index 32b3338253..50025c00b6 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -48,7 +48,7 @@ #define CALC_COUL_RF #define LJ_COMB_LB -#define CALC_ENERGIES +/* Will not calculate energies */ #ifdef GMX_NBNXN_SIMD_4XN #include "nbnxn_kernel_simd_4xn_common.h" @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_rf_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_rf_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_rf_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn.c similarity index 94% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_ener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn.c index 53782ce9dd..49ae82cc5b 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_comb_lb_ener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -46,7 +46,7 @@ #define GMX_SIMD_J_UNROLL_SIZE 1 #include "nbnxn_kernel_simd_4xn.h" -#define CALC_COUL_TAB +#define CALC_COUL_RF #define LJ_COMB_LB #define CALC_ENERGIES @@ -56,7 +56,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_tab_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +66,7 @@ nbnxn_kernel_simd_4xn_tab_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_tab_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn.c similarity index 93% rename from src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_noener.c rename to src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn.c index 65d2acc7fc..66bac230cc 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_noener.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn.c @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -47,8 +47,9 @@ #include "nbnxn_kernel_simd_4xn.h" #define CALC_COUL_RF -#define LJ_COMB_GEOM -/* Will not calculate energies */ +#define LJ_COMB_LB +#define CALC_ENERGIES +#define ENERGY_GROUPS #ifdef GMX_NBNXN_SIMD_4XN #include "nbnxn_kernel_simd_4xn_common.h" @@ -56,7 +57,7 @@ #ifdef CALC_ENERGIES void -nbnxn_kernel_simd_4xn_rf_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, @@ -66,7 +67,7 @@ nbnxn_kernel_simd_4xn_rf_comb_geom_noener(const nbnxn_pairlist_t gmx_unused * real gmx_unused *Vc) #else /* CALC_ENERGIES */ void -nbnxn_kernel_simd_4xn_rf_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl, +nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, const nbnxn_atomdata_t gmx_unused *nbat, const interaction_const_t gmx_unused *ic, rvec gmx_unused *shift_vec, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn.c new file mode 100644 index 0000000000..4332e9e5fa --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn.c new file mode 100644 index 0000000000..9add969f16 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn.c new file mode 100644 index 0000000000..5ed58c0985 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define LJ_FORCE_SWITCH +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn.c new file mode 100644 index 0000000000..76f8cef501 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn.c new file mode 100644 index 0000000000..1f042488e1 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn.c new file mode 100644 index 0000000000..5280256c31 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn.c @@ -0,0 +1,88 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define LJ_POT_SWITCH +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_F_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_F_4xn.c new file mode 100644 index 0000000000..c42cf2648a --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_F_4xn.c @@ -0,0 +1,86 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +/* Will not calculate energies */ + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_VF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_VF_4xn.c new file mode 100644 index 0000000000..2a48e30a7a --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_VF_4xn.c @@ -0,0 +1,86 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define CALC_ENERGIES + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn.c new file mode 100644 index 0000000000..65f8e95606 --- /dev/null +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn.c @@ -0,0 +1,87 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/* + * Note: this file was generated by the Verlet kernel generator for + * kernel type 4xn. + */ + +/* Some target architectures compile kernels for only some NBNxN + * kernel flavours, but the code is generated before the target + * architecture is known. So compilation is conditional upon + * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub + * function definition when the kernel will never be called. + */ +#define GMX_SIMD_J_UNROLL_SIZE 1 +#include "nbnxn_kernel_simd_4xn.h" + +#define CALC_COUL_RF +/* Use no LJ combination rule */ +#define CALC_ENERGIES +#define ENERGY_GROUPS + +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_common.h" +#endif /* GMX_NBNXN_SIMD_4XN */ + +#ifdef CALC_ENERGIES +void +nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift, + real gmx_unused *Vvdw, + real gmx_unused *Vc) +#else /* CALC_ENERGIES */ +void +nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl, + const nbnxn_atomdata_t gmx_unused *nbat, + const interaction_const_t gmx_unused *ic, + rvec gmx_unused *shift_vec, + real gmx_unused *f, + real gmx_unused *fshift) +#endif /* CALC_ENERGIES */ +#ifdef GMX_NBNXN_SIMD_4XN +#include "nbnxn_kernel_simd_4xn_outer.h" +#else /* GMX_NBNXN_SIMD_4XN */ +{ +/* No need to call gmx_incons() here, because the only function + * that calls this one is also compiled conditionally. When + * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and + * instead call gmx_incons(). + */ +} +#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.c index 13810fa880..5694d56ff7 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.c +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.c @@ -48,9 +48,9 @@ #ifdef GMX_NBNXN_HALF_WIDTH_SIMD #define GMX_USE_HALF_WIDTH_SIMD_HERE #endif + #include "gromacs/simd/macros.h" #include "gromacs/simd/vector_operations.h" - #if !(GMX_SIMD_REAL_WIDTH == 2 || GMX_SIMD_REAL_WIDTH == 4 || GMX_SIMD_REAL_WIDTH == 8) #error "unsupported SIMD width" #endif @@ -60,6 +60,7 @@ #include "../nbnxn_kernel_common.h" #include "gmx_omp_nthreads.h" #include "types/force_flags.h" +#include "gmx_fatal.h" /*! \brief Kinds of electrostatic treatments in SIMD Verlet kernels */ @@ -67,91 +68,124 @@ enum { coultRF, coultTAB, coultTAB_TWIN, coultEWALD, coultEWALD_TWIN, coultNR }; -/* Declare and define the kernel function pointer lookup tables. */ -static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR] = +/* Declare and define the kernel function pointer lookup tables. + * The minor index of the array goes over both the LJ combination rules, + * which is only supported by plain cut-off, and the LJ switch functions. + */ +static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR+2] = { { - nbnxn_kernel_simd_4xn_rf_comb_geom_ener, - nbnxn_kernel_simd_4xn_rf_comb_lb_ener, - nbnxn_kernel_simd_4xn_rf_comb_none_ener, + nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn, + nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn, + nbnxn_kernel_ElecRF_VdwLJ_F_4xn, + nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn, + nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn, }, { - nbnxn_kernel_simd_4xn_tab_comb_geom_ener, - nbnxn_kernel_simd_4xn_tab_comb_lb_ener, - nbnxn_kernel_simd_4xn_tab_comb_none_ener, + nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn, + nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn, + nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn, + nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn, + nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn, }, { - nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener, - nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener, - nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn, }, { - nbnxn_kernel_simd_4xn_ewald_comb_geom_ener, - nbnxn_kernel_simd_4xn_ewald_comb_lb_ener, - nbnxn_kernel_simd_4xn_ewald_comb_none_ener, + nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn, + nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn, + nbnxn_kernel_ElecEw_VdwLJ_F_4xn, + nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn, + nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn, }, { - nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener, - nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener, - nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener, + nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn, + nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn, + nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn, + nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn, + nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn, }, }; -static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR] = +static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR+2] = { { - nbnxn_kernel_simd_4xn_rf_comb_geom_energrp, - nbnxn_kernel_simd_4xn_rf_comb_lb_energrp, - nbnxn_kernel_simd_4xn_rf_comb_none_energrp, + nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn, + nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn, + nbnxn_kernel_ElecRF_VdwLJ_VF_4xn, + nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn, + nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn, }, { - nbnxn_kernel_simd_4xn_tab_comb_geom_energrp, - nbnxn_kernel_simd_4xn_tab_comb_lb_energrp, - nbnxn_kernel_simd_4xn_tab_comb_none_energrp, + nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn, + nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn, + nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn, + nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn, + nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn, }, { - nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp, - nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp, - nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn, }, { - nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp, - nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp, - nbnxn_kernel_simd_4xn_ewald_comb_none_energrp, + nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn, + nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn, + nbnxn_kernel_ElecEw_VdwLJ_VF_4xn, + nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn, + nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn, }, { - nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp, - nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp, - nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp, + nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn, + nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn, + nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn, + nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn, + nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn, }, }; -static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR] = +static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR+2] = { { - nbnxn_kernel_simd_4xn_rf_comb_geom_noener, - nbnxn_kernel_simd_4xn_rf_comb_lb_noener, - nbnxn_kernel_simd_4xn_rf_comb_none_noener, + nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn, + nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn, + nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn, + nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn, + nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn, }, { - nbnxn_kernel_simd_4xn_tab_comb_geom_noener, - nbnxn_kernel_simd_4xn_tab_comb_lb_noener, - nbnxn_kernel_simd_4xn_tab_comb_none_noener, + nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn, + nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn, + nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn, + nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn, + nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn, }, { - nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener, - nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener, - nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn, + nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn, }, { - nbnxn_kernel_simd_4xn_ewald_comb_geom_noener, - nbnxn_kernel_simd_4xn_ewald_comb_lb_noener, - nbnxn_kernel_simd_4xn_ewald_comb_none_noener, + nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn, + nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn, + nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn, + nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn, + nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn, }, { - nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener, - nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener, - nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener, + nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn, + nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn, + nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn, + nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn, + nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn, }, }; @@ -217,7 +251,7 @@ nbnxn_kernel_simd_4xn(nbnxn_pairlist_set_t gmx_unused *nbl_list, { int nnbl; nbnxn_pairlist_t **nbl; - int coult; + int coult, ljtreatment = 0; int nb; nnbl = nbl_list->nnbl; @@ -253,6 +287,23 @@ nbnxn_kernel_simd_4xn(nbnxn_pairlist_set_t gmx_unused *nbl_list, } } + switch (ic->vdw_modifier) + { + case eintmodNONE: + case eintmodPOTSHIFT: + ljtreatment = nbat->comb_rule; + break; + /* Switch functions follow after cut-off combination rule kernels */ + case eintmodFORCESWITCH: + ljtreatment = ljcrNR; + break; + case eintmodPOTSWITCH: + ljtreatment = ljcrNR + 1; + break; + default: + gmx_incons("Unsupported VdW interaction modifier"); + } + #pragma omp parallel for schedule(static) num_threads(gmx_omp_nthreads_get(emntNonbonded)) for (nb = 0; nb < nnbl; nb++) { @@ -283,11 +334,11 @@ nbnxn_kernel_simd_4xn(nbnxn_pairlist_set_t gmx_unused *nbl_list, if (!(force_flags & GMX_FORCE_ENERGY)) { /* Don't calculate energies */ - p_nbk_noener[coult][nbat->comb_rule](nbl[nb], nbat, - ic, - shift_vec, - out->f, - fshift_p); + p_nbk_noener[coult][ljtreatment](nbl[nb], nbat, + ic, + shift_vec, + out->f, + fshift_p); } else if (out->nV == 1) { @@ -295,13 +346,13 @@ nbnxn_kernel_simd_4xn(nbnxn_pairlist_set_t gmx_unused *nbl_list, out->Vvdw[0] = 0; out->Vc[0] = 0; - p_nbk_ener[coult][nbat->comb_rule](nbl[nb], nbat, - ic, - shift_vec, - out->f, - fshift_p, - out->Vvdw, - out->Vc); + p_nbk_ener[coult][ljtreatment](nbl[nb], nbat, + ic, + shift_vec, + out->f, + fshift_p, + out->Vvdw, + out->Vc); } else { @@ -317,13 +368,13 @@ nbnxn_kernel_simd_4xn(nbnxn_pairlist_set_t gmx_unused *nbl_list, out->VSc[i] = 0; } - p_nbk_energrp[coult][nbat->comb_rule](nbl[nb], nbat, - ic, - shift_vec, - out->f, - fshift_p, - out->VSvdw, - out->VSc); + p_nbk_energrp[coult][ljtreatment](nbl[nb], nbat, + ic, + shift_vec, + out->f, + fshift_p, + out->VSvdw, + out->VSc); reduce_group_energies(nbat->nenergrp, nbat->neg_2log, out->VSvdw, out->VSc, diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.h b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.h index 72532d1ac1..864f3e3f01 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.h +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.h @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2012,2013, by the GROMACS development team, led by + * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -83,53 +83,83 @@ typedef void (nbk_func_noener)(const nbnxn_pairlist_t *nbl, typedef nbk_func_noener *p_nbk_func_noener; #endif -nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_geom_energrp; -nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_lb_energrp; -nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_none_energrp; -nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_geom_energrp; -nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_lb_energrp; -nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_none_energrp; -nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp; -nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp; -nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp; -nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp; -nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp; -nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_none_energrp; -nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp; -nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp; -nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn; -nbk_func_noener nbnxn_kernel_simd_4xn_rf_comb_geom_noener; -nbk_func_noener nbnxn_kernel_simd_4xn_rf_comb_lb_noener; -nbk_func_noener nbnxn_kernel_simd_4xn_rf_comb_none_noener; -nbk_func_noener nbnxn_kernel_simd_4xn_tab_comb_geom_noener; -nbk_func_noener nbnxn_kernel_simd_4xn_tab_comb_lb_noener; -nbk_func_noener nbnxn_kernel_simd_4xn_tab_comb_none_noener; -nbk_func_noener nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener; -nbk_func_noener nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener; -nbk_func_noener nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener; -nbk_func_noener nbnxn_kernel_simd_4xn_ewald_comb_geom_noener; -nbk_func_noener nbnxn_kernel_simd_4xn_ewald_comb_lb_noener; -nbk_func_noener nbnxn_kernel_simd_4xn_ewald_comb_none_noener; -nbk_func_noener nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener; -nbk_func_noener nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener; -nbk_func_noener nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJ_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJ_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn; +nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn; -nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_geom_ener; -nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_lb_ener; -nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_none_ener; -nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_geom_ener; -nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_lb_ener; -nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_none_ener; -nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener; -nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener; -nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener; -nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_geom_ener; -nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_lb_ener; -nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_none_ener; -nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener; -nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener; -nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener; +nbk_func_noener nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn; +nbk_func_noener nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn; +nbk_func_noener nbnxn_kernel_ElecRF_VdwLJ_F_4xn; +nbk_func_noener nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn; +nbk_func_noener nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn; +nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn; +nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn; +nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn; +nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn; +nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn; +nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn; +nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn; +nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn; +nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn; +nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn; +nbk_func_noener nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn; +nbk_func_noener nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn; +nbk_func_noener nbnxn_kernel_ElecEw_VdwLJ_F_4xn; +nbk_func_noener nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn; +nbk_func_noener nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn; +nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn; +nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn; +nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn; +nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn; +nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn; diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_common.h b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_common.h index e3b3380bc5..720de2fefd 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_common.h +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_common.h @@ -33,6 +33,7 @@ * the research papers on the package. Check out http://www.gromacs.org. */ #include "gromacs/simd/macros.h" +#include "gromacs/simd/four_wide_macros.h" #include "gromacs/simd/vector_operations.h" #include "../../nbnxn_consts.h" #ifdef CALC_COUL_EWALD diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp.c deleted file mode 100644 index 3cd5138018..0000000000 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the GROMACS molecular simulation package. - * - * Copyright (c) 2012,2013, by the GROMACS development team, led by - * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, - * and including many others, as listed in the AUTHORS file in the - * top-level source directory and at http://www.gromacs.org. - * - * GROMACS is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * of the License, or (at your option) any later version. - * - * GROMACS is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with GROMACS; if not, see - * http://www.gnu.org/licenses, or write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * If you want to redistribute modifications to GROMACS, please - * consider that scientific software is very special. Version - * control is crucial - bugs must be traceable. We will be happy to - * consider code for inclusion in the official distribution, but - * derived work must not be called official GROMACS. Details are found - * in the README & COPYING files - if they are missing, get the - * official version at http://www.gromacs.org. - * - * To help us fund GROMACS development, we humbly ask that you cite - * the research papers on the package. Check out http://www.gromacs.org. - */ -/* - * Note: this file was generated by the Verlet kernel generator for - * kernel type 4xn. - */ - -/* Some target architectures compile kernels for only some NBNxN - * kernel flavours, but the code is generated before the target - * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub - * function definition when the kernel will never be called. - */ -#define GMX_SIMD_J_UNROLL_SIZE 1 -#include "nbnxn_kernel_simd_4xn.h" - -#define CALC_COUL_EWALD -#define LJ_COMB_GEOM -#define CALC_ENERGIES -#define ENERGY_GROUPS - -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_common.h" -#endif /* GMX_NBNXN_SIMD_4XN */ - -#ifdef CALC_ENERGIES -void -nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift, - real gmx_unused *Vvdw, - real gmx_unused *Vc) -#else /* CALC_ENERGIES */ -void -nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift) -#endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_outer.h" -#else /* GMX_NBNXN_SIMD_4XN */ -{ -/* No need to call gmx_incons() here, because the only function - * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and - * instead call gmx_incons(). - */ -} -#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener.c deleted file mode 100644 index ae0ebb65fc..0000000000 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the GROMACS molecular simulation package. - * - * Copyright (c) 2012,2013, by the GROMACS development team, led by - * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, - * and including many others, as listed in the AUTHORS file in the - * top-level source directory and at http://www.gromacs.org. - * - * GROMACS is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * of the License, or (at your option) any later version. - * - * GROMACS is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with GROMACS; if not, see - * http://www.gnu.org/licenses, or write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * If you want to redistribute modifications to GROMACS, please - * consider that scientific software is very special. Version - * control is crucial - bugs must be traceable. We will be happy to - * consider code for inclusion in the official distribution, but - * derived work must not be called official GROMACS. Details are found - * in the README & COPYING files - if they are missing, get the - * official version at http://www.gromacs.org. - * - * To help us fund GROMACS development, we humbly ask that you cite - * the research papers on the package. Check out http://www.gromacs.org. - */ -/* - * Note: this file was generated by the Verlet kernel generator for - * kernel type 4xn. - */ - -/* Some target architectures compile kernels for only some NBNxN - * kernel flavours, but the code is generated before the target - * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub - * function definition when the kernel will never be called. - */ -#define GMX_SIMD_J_UNROLL_SIZE 1 -#include "nbnxn_kernel_simd_4xn.h" - -#define CALC_COUL_EWALD -#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -/* Use no LJ combination rule */ -#define CALC_ENERGIES - -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_common.h" -#endif /* GMX_NBNXN_SIMD_4XN */ - -#ifdef CALC_ENERGIES -void -nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift, - real gmx_unused *Vvdw, - real gmx_unused *Vc) -#else /* CALC_ENERGIES */ -void -nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift) -#endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_outer.h" -#else /* GMX_NBNXN_SIMD_4XN */ -{ -/* No need to call gmx_incons() here, because the only function - * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and - * instead call gmx_incons(). - */ -} -#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_inner.h b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_inner.h index 703b31740f..c6c457d81d 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_inner.h +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_inner.h @@ -114,6 +114,23 @@ gmx_simd_bool_t wco_vdw_S3; #endif #endif + +#if (defined CALC_COULOMB && defined CALC_COUL_TAB) || defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH + gmx_simd_real_t r_S0; + gmx_simd_real_t r_S1; + gmx_simd_real_t r_S2; + gmx_simd_real_t r_S3; +#endif + +#if defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH + gmx_simd_real_t rsw_S0, rsw2_S0, rsw2_r_S0; + gmx_simd_real_t rsw_S1, rsw2_S1, rsw2_r_S1; +#ifndef HALF_LJ + gmx_simd_real_t rsw_S2, rsw2_S2, rsw2_r_S2; + gmx_simd_real_t rsw_S3, rsw2_S3, rsw2_r_S3; +#endif +#endif + #ifdef CALC_COULOMB #ifdef CHECK_EXCLS /* 1/r masked with the interaction mask */ @@ -146,10 +163,10 @@ gmx_simd_real_t frcoul_S3; #ifdef CALC_COUL_TAB /* For tables: r, rs=r/sp, rf=floor(rs), frac=rs-rf */ - gmx_simd_real_t r_S0, rs_S0, rf_S0, frac_S0; - gmx_simd_real_t r_S1, rs_S1, rf_S1, frac_S1; - gmx_simd_real_t r_S2, rs_S2, rf_S2, frac_S2; - gmx_simd_real_t r_S3, rs_S3, rf_S3, frac_S3; + gmx_simd_real_t rs_S0, rf_S0, frac_S0; + gmx_simd_real_t rs_S1, rf_S1, frac_S1; + gmx_simd_real_t rs_S2, rf_S2, frac_S2; + gmx_simd_real_t rs_S3, rf_S3, frac_S3; /* Table index: rs truncated to an int */ gmx_simd_int32_t ti_S0, ti_S1, ti_S2, ti_S3; /* Linear force table values */ @@ -244,13 +261,13 @@ #endif #endif - gmx_simd_real_t FrLJ6_S0, FrLJ12_S0; - gmx_simd_real_t FrLJ6_S1, FrLJ12_S1; + gmx_simd_real_t FrLJ6_S0, FrLJ12_S0, frLJ_S0; + gmx_simd_real_t FrLJ6_S1, FrLJ12_S1, frLJ_S1; #ifndef HALF_LJ - gmx_simd_real_t FrLJ6_S2, FrLJ12_S2; - gmx_simd_real_t FrLJ6_S3, FrLJ12_S3; + gmx_simd_real_t FrLJ6_S2, FrLJ12_S2, frLJ_S2; + gmx_simd_real_t FrLJ6_S3, FrLJ12_S3, frLJ_S3; #endif -#ifdef CALC_ENERGIES +#if defined CALC_ENERGIES || defined LJ_POT_SWITCH gmx_simd_real_t VLJ6_S0, VLJ12_S0, VLJ_S0; gmx_simd_real_t VLJ6_S1, VLJ12_S1, VLJ_S1; #ifndef HALF_LJ @@ -702,14 +719,9 @@ rinvsix_S3 = gmx_simd_blendzero_r(rinvsix_S3, interact_S3); #endif #endif -#ifdef VDW_CUTOFF_CHECK - rinvsix_S0 = gmx_simd_blendzero_r(rinvsix_S0, wco_vdw_S0); - rinvsix_S1 = gmx_simd_blendzero_r(rinvsix_S1, wco_vdw_S1); -#ifndef HALF_LJ - rinvsix_S2 = gmx_simd_blendzero_r(rinvsix_S2, wco_vdw_S2); - rinvsix_S3 = gmx_simd_blendzero_r(rinvsix_S3, wco_vdw_S3); -#endif -#endif + +#ifndef LJ_FORCE_SWITCH + /* We have plain LJ with simple C6/6 C12/12 coefficients */ FrLJ6_S0 = gmx_simd_mul_r(c6_S0, rinvsix_S0); FrLJ6_S1 = gmx_simd_mul_r(c6_S1, rinvsix_S1); #ifndef HALF_LJ @@ -722,6 +734,49 @@ FrLJ12_S2 = gmx_simd_mul_r(c12_S2, gmx_simd_mul_r(rinvsix_S2, rinvsix_S2)); FrLJ12_S3 = gmx_simd_mul_r(c12_S3, gmx_simd_mul_r(rinvsix_S3, rinvsix_S3)); #endif +#endif + +#if defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH + /* We switch the LJ force */ + r_S0 = gmx_simd_mul_r(rsq_S0, rinv_S0); + rsw_S0 = gmx_simd_max_r(gmx_simd_sub_r(r_S0, rswitch_S), zero_S); + rsw2_S0 = gmx_simd_mul_r(rsw_S0, rsw_S0); + rsw2_r_S0 = gmx_simd_mul_r(rsw2_S0, r_S0); + r_S1 = gmx_simd_mul_r(rsq_S1, rinv_S1); + rsw_S1 = gmx_simd_max_r(gmx_simd_sub_r(r_S1, rswitch_S), zero_S); + rsw2_S1 = gmx_simd_mul_r(rsw_S1, rsw_S1); + rsw2_r_S1 = gmx_simd_mul_r(rsw2_S1, r_S1); +#ifndef HALF_LJ + r_S2 = gmx_simd_mul_r(rsq_S2, rinv_S2); + rsw_S2 = gmx_simd_max_r(gmx_simd_sub_r(r_S2, rswitch_S), zero_S); + rsw2_S2 = gmx_simd_mul_r(rsw_S2, rsw_S2); + rsw2_r_S2 = gmx_simd_mul_r(rsw2_S2, r_S2); + r_S3 = gmx_simd_mul_r(rsq_S3, rinv_S3); + rsw_S3 = gmx_simd_max_r(gmx_simd_sub_r(r_S3, rswitch_S), zero_S); + rsw2_S3 = gmx_simd_mul_r(rsw_S3, rsw_S3); + rsw2_r_S3 = gmx_simd_mul_r(rsw2_S3, r_S3); +#endif +#endif + +#ifdef LJ_FORCE_SWITCH + +#define gmx_add_fr_switch(fr, rsw, rsw2_r, c2, c3) gmx_simd_fmadd_r(gmx_simd_fmadd_r(c3, rsw, c2), rsw2_r, fr) + + FrLJ6_S0 = gmx_simd_mul_r(c6_S0, gmx_add_fr_switch(rinvsix_S0, rsw_S0, rsw2_r_S0, p6_fc2_S, p6_fc3_S)); + FrLJ6_S1 = gmx_simd_mul_r(c6_S1, gmx_add_fr_switch(rinvsix_S1, rsw_S1, rsw2_r_S1, p6_fc2_S, p6_fc3_S)); +#ifndef HALF_LJ + FrLJ6_S2 = gmx_simd_mul_r(c6_S2, gmx_add_fr_switch(rinvsix_S2, rsw_S2, rsw2_r_S2, p6_fc2_S, p6_fc3_S)); + FrLJ6_S3 = gmx_simd_mul_r(c6_S3, gmx_add_fr_switch(rinvsix_S3, rsw_S3, rsw2_r_S3, p6_fc2_S, p6_fc3_S)); +#endif + FrLJ12_S0 = gmx_simd_mul_r(c12_S0, gmx_add_fr_switch(gmx_simd_mul_r(rinvsix_S0, rinvsix_S0), rsw_S0, rsw2_r_S0, p12_fc2_S, p12_fc3_S)); + FrLJ12_S1 = gmx_simd_mul_r(c12_S1, gmx_add_fr_switch(gmx_simd_mul_r(rinvsix_S1, rinvsix_S1), rsw_S1, rsw2_r_S1, p12_fc2_S, p12_fc3_S)); +#ifndef HALF_LJ + FrLJ12_S2 = gmx_simd_mul_r(c12_S2, gmx_add_fr_switch(gmx_simd_mul_r(rinvsix_S2, rinvsix_S2), rsw_S2, rsw2_r_S2, p12_fc2_S, p12_fc3_S)); + FrLJ12_S3 = gmx_simd_mul_r(c12_S3, gmx_add_fr_switch(gmx_simd_mul_r(rinvsix_S3, rinvsix_S3), rsw_S3, rsw2_r_S3, p12_fc2_S, p12_fc3_S)); +#endif +#undef gmx_add_fr_switch +#endif /* LJ_FORCE_SWITCH */ + #endif /* not LJ_COMB_LB */ #ifdef LJ_COMB_LB @@ -800,6 +855,140 @@ #endif #endif /* LJ_COMB_LB */ + /* Determine the total scalar LJ force*r */ + frLJ_S0 = gmx_simd_sub_r(FrLJ12_S0, FrLJ6_S0); + frLJ_S1 = gmx_simd_sub_r(FrLJ12_S1, FrLJ6_S1); +#ifndef HALF_LJ + frLJ_S2 = gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2); + frLJ_S3 = gmx_simd_sub_r(FrLJ12_S3, FrLJ6_S3); +#endif + +#if defined CALC_ENERGIES && !defined LJ_POT_SWITCH +#ifndef LJ_FORCE_SWITCH + /* Calculate the LJ energies, with constant potential shift */ + VLJ6_S0 = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S0, p6_cpot_S, FrLJ6_S0)); + VLJ6_S1 = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S1, p6_cpot_S, FrLJ6_S1)); +#ifndef HALF_LJ + VLJ6_S2 = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S2, p6_cpot_S, FrLJ6_S2)); + VLJ6_S3 = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S3, p6_cpot_S, FrLJ6_S3)); +#endif + VLJ12_S0 = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S0, p12_cpot_S, FrLJ12_S0)); + VLJ12_S1 = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S1, p12_cpot_S, FrLJ12_S1)); +#ifndef HALF_LJ + VLJ12_S2 = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S2, p12_cpot_S, FrLJ12_S2)); + VLJ12_S3 = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S3, p12_cpot_S, FrLJ12_S3)); +#endif +#else + +#define v_fswitch_r(rsw, rsw2, c0, c3, c4) gmx_simd_fmadd_r(gmx_simd_fmadd_r(c4, rsw, c3), gmx_simd_mul_r(rsw2, rsw), c0) + + VLJ6_S0 = gmx_simd_mul_r(c6_S0, gmx_simd_fmadd_r(sixth_S, rinvsix_S0, v_fswitch_r(rsw_S0, rsw2_S0, p6_6cpot_S, p6_vc3_S, p6_vc4_S))); + VLJ6_S1 = gmx_simd_mul_r(c6_S1, gmx_simd_fmadd_r(sixth_S, rinvsix_S1, v_fswitch_r(rsw_S1, rsw2_S1, p6_6cpot_S, p6_vc3_S, p6_vc4_S))); +#ifndef HALF_LJ + VLJ6_S2 = gmx_simd_mul_r(c6_S2, gmx_simd_fmadd_r(sixth_S, rinvsix_S2, v_fswitch_r(rsw_S2, rsw2_S2, p6_6cpot_S, p6_vc3_S, p6_vc4_S))); + VLJ6_S3 = gmx_simd_mul_r(c6_S3, gmx_simd_fmadd_r(sixth_S, rinvsix_S3, v_fswitch_r(rsw_S3, rsw2_S3, p6_6cpot_S, p6_vc3_S, p6_vc4_S))); +#endif + VLJ12_S0 = gmx_simd_mul_r(c12_S0, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S0, rinvsix_S0), v_fswitch_r(rsw_S0, rsw2_S0, p12_12cpot_S, p12_vc3_S, p12_vc4_S))); + VLJ12_S1 = gmx_simd_mul_r(c12_S1, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S1, rinvsix_S1), v_fswitch_r(rsw_S1, rsw2_S1, p12_12cpot_S, p12_vc3_S, p12_vc4_S))); +#ifndef HALF_LJ + VLJ12_S2 = gmx_simd_mul_r(c12_S2, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S2, rinvsix_S2), v_fswitch_r(rsw_S2, rsw2_S2, p12_12cpot_S, p12_vc3_S, p12_vc4_S))); + VLJ12_S3 = gmx_simd_mul_r(c12_S3, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S3, rinvsix_S3), v_fswitch_r(rsw_S3, rsw2_S3, p12_12cpot_S, p12_vc3_S, p12_vc4_S))); +#endif +#undef v_fswitch_r +#endif /* LJ_FORCE_SWITCH */ + + /* Add up the repulsion and dispersion */ + VLJ_S0 = gmx_simd_sub_r(VLJ12_S0, VLJ6_S0); + VLJ_S1 = gmx_simd_sub_r(VLJ12_S1, VLJ6_S1); +#ifndef HALF_LJ + VLJ_S2 = gmx_simd_sub_r(VLJ12_S2, VLJ6_S2); + VLJ_S3 = gmx_simd_sub_r(VLJ12_S3, VLJ6_S3); +#endif +#endif /* CALC_ENERGIES && !LJ_POT_SWITCH */ + +#ifdef LJ_POT_SWITCH + /* We always need the potential, since it is needed for the force */ + VLJ_S0 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S0, gmx_simd_mul_r(twelveth_S, FrLJ12_S0)); + VLJ_S1 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S1, gmx_simd_mul_r(twelveth_S, FrLJ12_S1)); +#ifndef HALF_LJ + VLJ_S2 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S2, gmx_simd_mul_r(twelveth_S, FrLJ12_S2)); + VLJ_S3 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S3, gmx_simd_mul_r(twelveth_S, FrLJ12_S3)); +#endif + + { + gmx_simd_real_t sw_S0, dsw_S0; + gmx_simd_real_t sw_S1, dsw_S1; +#ifndef HALF_LJ + gmx_simd_real_t sw_S2, dsw_S2; + gmx_simd_real_t sw_S3, dsw_S3; +#endif + +#define switch_r(rsw, rsw2, c3, c4, c5) gmx_simd_fmadd_r(gmx_simd_fmadd_r(gmx_simd_fmadd_r(c5, rsw, c4), rsw, c3), gmx_simd_mul_r(rsw2, rsw), one_S) +#define dswitch_r(rsw, rsw2, c2, c3, c4) gmx_simd_mul_r(gmx_simd_fmadd_r(gmx_simd_fmadd_r(c4, rsw, c3), rsw, c2), rsw2) + + sw_S0 = switch_r(rsw_S0, rsw2_S0, swV3_S, swV4_S, swV5_S); + dsw_S0 = dswitch_r(rsw_S0, rsw2_S0, swF2_S, swF3_S, swF4_S); + sw_S1 = switch_r(rsw_S1, rsw2_S1, swV3_S, swV4_S, swV5_S); + dsw_S1 = dswitch_r(rsw_S1, rsw2_S1, swF2_S, swF3_S, swF4_S); +#ifndef HALF_LJ + sw_S2 = switch_r(rsw_S2, rsw2_S2, swV3_S, swV4_S, swV5_S); + dsw_S2 = dswitch_r(rsw_S2, rsw2_S2, swF2_S, swF3_S, swF4_S); + sw_S3 = switch_r(rsw_S3, rsw2_S3, swV3_S, swV4_S, swV5_S); + dsw_S3 = dswitch_r(rsw_S3, rsw2_S3, swF2_S, swF3_S, swF4_S); +#endif + frLJ_S0 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S0, VLJ_S0), r_S0, gmx_simd_mul_r(sw_S0, frLJ_S0)); + frLJ_S1 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S1, VLJ_S1), r_S1, gmx_simd_mul_r(sw_S1, frLJ_S1)); +#ifndef HALF_LJ + frLJ_S2 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S2, VLJ_S2), r_S2, gmx_simd_mul_r(sw_S2, frLJ_S2)); + frLJ_S3 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S3, VLJ_S3), r_S3, gmx_simd_mul_r(sw_S3, frLJ_S3)); +#endif +#ifdef CALC_ENERGIES + VLJ_S0 = gmx_simd_mul_r(sw_S0, VLJ_S0); + VLJ_S1 = gmx_simd_mul_r(sw_S1, VLJ_S1); +#ifndef HALF_LJ + VLJ_S2 = gmx_simd_mul_r(sw_S2, VLJ_S2); + VLJ_S3 = gmx_simd_mul_r(sw_S3, VLJ_S3); +#endif +#endif + +#undef switch_r +#undef dswitch_r + } +#endif /* LJ_POT_SWITCH */ + +#if defined VDW_CUTOFF_CHECK + /* frLJ is multiplied later by rinvsq, which is masked for the Coulomb + * cut-off, but if the VdW cut-off is shorter, we need to mask with that. + */ + frLJ_S0 = gmx_simd_blendzero_r(frLJ_S0, wco_vdw_S0); + frLJ_S1 = gmx_simd_blendzero_r(frLJ_S1, wco_vdw_S1); +#ifndef HALF_LJ + frLJ_S2 = gmx_simd_blendzero_r(frLJ_S2, wco_vdw_S2); + frLJ_S3 = gmx_simd_blendzero_r(frLJ_S3, wco_vdw_S3); +#endif +#endif + +#ifdef CALC_ENERGIES + /* The potential shift should be removed for pairs beyond cut-off */ + VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, wco_vdw_S0); + VLJ_S1 = gmx_simd_blendzero_r(VLJ_S1, wco_vdw_S1); +#ifndef HALF_LJ + VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, wco_vdw_S2); + VLJ_S3 = gmx_simd_blendzero_r(VLJ_S3, wco_vdw_S3); +#endif +#endif + +#if defined CALC_ENERGIES && defined CHECK_EXCLS + /* The potential shift should be removed for excluded pairs */ + VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, interact_S0); + VLJ_S1 = gmx_simd_blendzero_r(VLJ_S1, interact_S1); +#ifndef HALF_LJ + VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, interact_S2); + VLJ_S3 = gmx_simd_blendzero_r(VLJ_S3, interact_S3); +#endif +#endif + + #endif /* CALC_LJ */ #ifdef CALC_ENERGIES @@ -841,42 +1030,7 @@ #endif #ifdef CALC_LJ - /* Calculate the LJ energies */ - VLJ6_S0 = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S0, gmx_simd_mul_r(c6_S0, sh_invrc6_S))); - VLJ6_S1 = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S1, gmx_simd_mul_r(c6_S1, sh_invrc6_S))); -#ifndef HALF_LJ - VLJ6_S2 = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S2, gmx_simd_mul_r(c6_S2, sh_invrc6_S))); - VLJ6_S3 = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S3, gmx_simd_mul_r(c6_S3, sh_invrc6_S))); -#endif - VLJ12_S0 = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S0, gmx_simd_mul_r(c12_S0, sh_invrc12_S))); - VLJ12_S1 = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S1, gmx_simd_mul_r(c12_S1, sh_invrc12_S))); -#ifndef HALF_LJ - VLJ12_S2 = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S2, gmx_simd_mul_r(c12_S2, sh_invrc12_S))); - VLJ12_S3 = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S3, gmx_simd_mul_r(c12_S3, sh_invrc12_S))); -#endif - VLJ_S0 = gmx_simd_sub_r(VLJ12_S0, VLJ6_S0); - VLJ_S1 = gmx_simd_sub_r(VLJ12_S1, VLJ6_S1); -#ifndef HALF_LJ - VLJ_S2 = gmx_simd_sub_r(VLJ12_S2, VLJ6_S2); - VLJ_S3 = gmx_simd_sub_r(VLJ12_S3, VLJ6_S3); -#endif - /* The potential shift should be removed for pairs beyond cut-off */ - VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, wco_vdw_S0); - VLJ_S1 = gmx_simd_blendzero_r(VLJ_S1, wco_vdw_S1); -#ifndef HALF_LJ - VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, wco_vdw_S2); - VLJ_S3 = gmx_simd_blendzero_r(VLJ_S3, wco_vdw_S3); -#endif -#ifdef CHECK_EXCLS - /* The potential shift should be removed for excluded pairs */ - VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, interact_S0); - VLJ_S1 = gmx_simd_blendzero_r(VLJ_S1, interact_S1); -#ifndef HALF_LJ - VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, interact_S2); - VLJ_S3 = gmx_simd_blendzero_r(VLJ_S3, interact_S3); -#endif -#endif #ifndef ENERGY_GROUPS #ifndef HALF_LJ Vvdwtot_S = gmx_simd_add_r(Vvdwtot_S, @@ -909,13 +1063,9 @@ gmx_simd_sub_r(FrLJ12_S0, FrLJ6_S0))); #endif #ifdef CALC_COULOMB - fscal_S1 = gmx_simd_mul_r(rinvsq_S1, - gmx_simd_add_r(frcoul_S1, - gmx_simd_sub_r(FrLJ12_S1, FrLJ6_S1))); + fscal_S1 = gmx_simd_mul_r(rinvsq_S1, gmx_simd_add_r(frcoul_S1, frLJ_S1)); #else - fscal_S1 = gmx_simd_mul_r(rinvsq_S1, - ( - gmx_simd_sub_r(FrLJ12_S1, FrLJ6_S1))); + fscal_S1 = gmx_simd_mul_r(rinvsq_S1, frLJ_S1); #endif #else fscal_S0 = gmx_simd_mul_r(rinvsq_S0, frcoul_S0); @@ -923,22 +1073,11 @@ #endif /* CALC_LJ */ #if defined CALC_LJ && !defined HALF_LJ #ifdef CALC_COULOMB - fscal_S2 = gmx_simd_mul_r(rinvsq_S2, - gmx_simd_add_r(frcoul_S2, - gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2))); -#else - fscal_S2 = gmx_simd_mul_r(rinvsq_S2, - ( - gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2))); -#endif -#ifdef CALC_COULOMB - fscal_S3 = gmx_simd_mul_r(rinvsq_S3, - gmx_simd_add_r(frcoul_S3, - gmx_simd_sub_r(FrLJ12_S3, FrLJ6_S3))); + fscal_S2 = gmx_simd_mul_r(rinvsq_S2, gmx_simd_add_r(frcoul_S2, frLJ_S2)); + fscal_S3 = gmx_simd_mul_r(rinvsq_S3, gmx_simd_add_r(frcoul_S3, frLJ_S3)); #else - fscal_S3 = gmx_simd_mul_r(rinvsq_S3, - ( - gmx_simd_sub_r(FrLJ12_S3, FrLJ6_S3))); + fscal_S2 = gmx_simd_mul_r(rinvsq_S2, frLJ_S2); + fscal_S3 = gmx_simd_mul_r(rinvsq_S3, frLJ_S3); #endif #else /* Atom 2 and 3 don't have LJ, so only add Coulomb forces */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_outer.h b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_outer.h index 2879213662..43c045c8bd 100644 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_outer.h +++ b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_outer.h @@ -33,6 +33,7 @@ * the research papers on the package. Check out http://www.gromacs.org. */ + { const nbnxn_ci_t *nbln; const nbnxn_cj_t *l_cj; @@ -72,7 +73,7 @@ gmx_simd_real_t fix_S3, fiy_S3, fiz_S3; #if UNROLLJ >= 4 /* We use an i-force SIMD register width of 4 */ - gmx_mm_pr4 fix_S, fiy_S, fiz_S; + gmx_simd4_real_t fix_S, fiy_S, fiz_S; #else /* We use an i-force SIMD register width of 2 */ gmx_simd_real_t fix0_S, fiy0_S, fiz0_S; @@ -97,10 +98,13 @@ gmx_simd_real_t iq_S1 = gmx_simd_setzero_r(); gmx_simd_real_t iq_S2 = gmx_simd_setzero_r(); gmx_simd_real_t iq_S3 = gmx_simd_setzero_r(); + +#ifdef CALC_COUL_RF gmx_simd_real_t mrc_3_S; #ifdef CALC_ENERGIES gmx_simd_real_t hrc_3_S, moh_rc_S; #endif +#endif #ifdef CALC_COUL_TAB /* Coulomb table variables */ @@ -127,6 +131,27 @@ gmx_simd_real_t sh_ewald_S; #endif +#ifdef LJ_POT_SWITCH + gmx_simd_real_t rswitch_S; + gmx_simd_real_t swV3_S, swV4_S, swV5_S; + gmx_simd_real_t swF2_S, swF3_S, swF4_S; +#else +#ifdef LJ_FORCE_SWITCH + gmx_simd_real_t rswitch_S; + gmx_simd_real_t p6_fc2_S, p6_fc3_S; + gmx_simd_real_t p12_fc2_S, p12_fc3_S; +#ifdef CALC_ENERGIES + gmx_simd_real_t p6_vc3_S, p6_vc4_S; + gmx_simd_real_t p12_vc3_S, p12_vc4_S; + gmx_simd_real_t p6_6cpot_S, p12_12cpot_S; +#endif +#else +#ifdef CALC_ENERGIES + gmx_simd_real_t p6_cpot_S, p12_cpot_S; +#endif +#endif +#endif + #ifdef LJ_COMB_LB const real *ljc; @@ -166,8 +191,6 @@ #endif #ifdef CALC_ENERGIES - gmx_simd_real_t sh_invrc6_S, sh_invrc12_S; - /* cppcheck-suppress unassignedVariable */ real tmpsum_array[GMX_SIMD_REAL_WIDTH*2], *tmpsum; #endif @@ -241,10 +264,19 @@ * Since we only check bits, the actual value they represent does not * matter, as long as both filter and mask data are treated the same way. */ - filter_S0 = gmx_load_exclusion_filter(exclusion_filter + 0*UNROLLJ*filter_stride); - filter_S1 = gmx_load_exclusion_filter(exclusion_filter + 1*UNROLLJ*filter_stride); - filter_S2 = gmx_load_exclusion_filter(exclusion_filter + 2*UNROLLJ*filter_stride); - filter_S3 = gmx_load_exclusion_filter(exclusion_filter + 3*UNROLLJ*filter_stride); + filter_S0 = gmx_load_exclusion_filter(exclusion_filter + 0*UNROLLJ*filter_stride); + filter_S1 = gmx_load_exclusion_filter(exclusion_filter + 1*UNROLLJ*filter_stride); + filter_S2 = gmx_load_exclusion_filter(exclusion_filter + 2*UNROLLJ*filter_stride); + filter_S3 = gmx_load_exclusion_filter(exclusion_filter + 3*UNROLLJ*filter_stride); + +#ifdef CALC_COUL_RF + /* Reaction-field constants */ + mrc_3_S = gmx_simd_set1_r(-2*ic->k_rf); +#ifdef CALC_ENERGIES + hrc_3_S = gmx_simd_set1_r(ic->k_rf); + moh_rc_S = gmx_simd_set1_r(-ic->c_rf); +#endif +#endif #ifdef CALC_COUL_TAB /* Generate aligned table index pointers */ @@ -275,13 +307,50 @@ sh_ewald_S = gmx_simd_set1_r(ic->sh_ewald); #endif - q = nbat->q; - type = nbat->type; - facel = ic->epsfac; - shiftvec = shift_vec[0]; - x = nbat->x; + /* LJ function constants */ +#if defined CALC_ENERGIES || defined LJ_POT_SWITCH + sixth_S = gmx_simd_set1_r(1.0/6.0); + twelveth_S = gmx_simd_set1_r(1.0/12.0); +#endif - avoid_sing_S = gmx_simd_set1_r(NBNXN_AVOID_SING_R2_INC); +#ifdef LJ_POT_SWITCH + rswitch_S = gmx_simd_set1_r(ic->rvdw_switch); + swV3_S = gmx_simd_set1_r(ic->vdw_switch.c3); + swV4_S = gmx_simd_set1_r(ic->vdw_switch.c4); + swV5_S = gmx_simd_set1_r(ic->vdw_switch.c5); + swF2_S = gmx_simd_set1_r(3*ic->vdw_switch.c3); + swF3_S = gmx_simd_set1_r(4*ic->vdw_switch.c4); + swF4_S = gmx_simd_set1_r(5*ic->vdw_switch.c5); +#else + sixth_S = gmx_simd_set1_r(1.0/6.0); + twelveth_S = gmx_simd_set1_r(1.0/12.0); +#ifdef LJ_FORCE_SWITCH + rswitch_S = gmx_simd_set1_r(ic->rvdw_switch); + p6_fc2_S = gmx_simd_set1_r(ic->dispersion_shift.c2); + p6_fc3_S = gmx_simd_set1_r(ic->dispersion_shift.c3); + p12_fc2_S = gmx_simd_set1_r(ic->repulsion_shift.c2); + p12_fc3_S = gmx_simd_set1_r(ic->repulsion_shift.c3); +#ifdef CALC_ENERGIES + { + gmx_simd_real_t mthird_S = gmx_simd_set1_r(-1.0/3.0); + gmx_simd_real_t mfourth_S = gmx_simd_set1_r(-1.0/4.0); + + p6_vc3_S = gmx_simd_mul_r(mthird_S, p6_fc2_S); + p6_vc4_S = gmx_simd_mul_r(mfourth_S, p6_fc3_S); + p6_6cpot_S = gmx_simd_set1_r(ic->dispersion_shift.cpot/6); + p12_vc3_S = gmx_simd_mul_r(mthird_S, p12_fc2_S); + p12_vc4_S = gmx_simd_mul_r(mfourth_S, p12_fc3_S); + p12_12cpot_S = gmx_simd_set1_r(ic->repulsion_shift.cpot/12); + } +#endif +#else + /* Plain LJ cut-off, with potential shift cpot, which can be 0 */ +#ifdef CALC_ENERGIES + p6_cpot_S = gmx_simd_set1_r(ic->dispersion_shift.cpot); + p12_cpot_S = gmx_simd_set1_r(ic->repulsion_shift.cpot); +#endif +#endif +#endif /* LJ_POT_SWITCH */ /* The kernel either supports rcoulomb = rvdw or rcoulomb >= rvdw */ rc2_S = gmx_simd_set1_r(ic->rcoulomb*ic->rcoulomb); @@ -289,21 +358,13 @@ rcvdw2_S = gmx_simd_set1_r(ic->rvdw*ic->rvdw); #endif -#ifdef CALC_ENERGIES - sixth_S = gmx_simd_set1_r(1.0/6.0); - twelveth_S = gmx_simd_set1_r(1.0/12.0); - - sh_invrc6_S = gmx_simd_set1_r(ic->sh_invrc6); - sh_invrc12_S = gmx_simd_set1_r(ic->sh_invrc6*ic->sh_invrc6); -#endif - - mrc_3_S = gmx_simd_set1_r(-2*ic->k_rf); - -#ifdef CALC_ENERGIES - hrc_3_S = gmx_simd_set1_r(ic->k_rf); + avoid_sing_S = gmx_simd_set1_r(NBNXN_AVOID_SING_R2_INC); - moh_rc_S = gmx_simd_set1_r(-ic->c_rf); -#endif + q = nbat->q; + type = nbat->type; + facel = ic->epsfac; + shiftvec = shift_vec[0]; + x = nbat->x; #ifdef CALC_ENERGIES tmpsum = gmx_simd_align_r(tmpsum_array); @@ -313,7 +374,7 @@ #endif #ifdef FIX_LJ_C - pvdw_c6 = gmx_simd_align_r(pvdw_array+3); + pvdw_c6 = gmx_simd_align_real(pvdw_array); pvdw_c12 = pvdw_c6 + UNROLLI*UNROLLJ; for (jp = 0; jp < UNROLLJ; jp++) @@ -529,6 +590,7 @@ #define CALC_LJ if (half_LJ) { + /* Coulomb: all i-atoms, LJ: first half i-atoms */ #define CALC_COULOMB #define HALF_LJ #define CHECK_EXCLS @@ -547,6 +609,7 @@ } else if (do_coul) { + /* Coulomb: all i-atoms, LJ: all i-atoms */ #define CALC_COULOMB #define CHECK_EXCLS while (cjind < cjind1 && nbl->cj[cjind].excl != NBNXN_INTERACTION_MASK_ALL) @@ -563,6 +626,7 @@ } else { + /* Coulomb: none, LJ: all i-atoms */ #define CHECK_EXCLS while (cjind < cjind1 && nbl->cj[cjind].excl != NBNXN_INTERACTION_MASK_ALL) { @@ -581,13 +645,13 @@ /* Add accumulated i-forces to the force array */ #if UNROLLJ >= 4 fix_S = gmx_mm_transpose_sum4_pr(fix_S0, fix_S1, fix_S2, fix_S3); - gmx_store_pr4(f+scix, gmx_add_pr4(fix_S, gmx_load_pr4(f+scix))); + gmx_simd4_store_r(f+scix, gmx_add_pr4(fix_S, gmx_load_pr4(f+scix))); fiy_S = gmx_mm_transpose_sum4_pr(fiy_S0, fiy_S1, fiy_S2, fiy_S3); - gmx_store_pr4(f+sciy, gmx_add_pr4(fiy_S, gmx_load_pr4(f+sciy))); + gmx_simd4_store_r(f+sciy, gmx_add_pr4(fiy_S, gmx_load_pr4(f+sciy))); fiz_S = gmx_mm_transpose_sum4_pr(fiz_S0, fiz_S1, fiz_S2, fiz_S3); - gmx_store_pr4(f+sciz, gmx_add_pr4(fiz_S, gmx_load_pr4(f+sciz))); + gmx_simd4_store_r(f+sciz, gmx_add_pr4(fiz_S, gmx_load_pr4(f+sciz))); #ifdef CALC_SHIFTFORCES fshift[ish3+0] += gmx_sum_simd4(fix_S, shf); diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_energrp.c deleted file mode 100644 index 59f9aadf89..0000000000 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_geom_energrp.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the GROMACS molecular simulation package. - * - * Copyright (c) 2012,2013, by the GROMACS development team, led by - * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, - * and including many others, as listed in the AUTHORS file in the - * top-level source directory and at http://www.gromacs.org. - * - * GROMACS is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * of the License, or (at your option) any later version. - * - * GROMACS is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with GROMACS; if not, see - * http://www.gnu.org/licenses, or write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * If you want to redistribute modifications to GROMACS, please - * consider that scientific software is very special. Version - * control is crucial - bugs must be traceable. We will be happy to - * consider code for inclusion in the official distribution, but - * derived work must not be called official GROMACS. Details are found - * in the README & COPYING files - if they are missing, get the - * official version at http://www.gromacs.org. - * - * To help us fund GROMACS development, we humbly ask that you cite - * the research papers on the package. Check out http://www.gromacs.org. - */ -/* - * Note: this file was generated by the Verlet kernel generator for - * kernel type 4xn. - */ - -/* Some target architectures compile kernels for only some NBNxN - * kernel flavours, but the code is generated before the target - * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub - * function definition when the kernel will never be called. - */ -#define GMX_SIMD_J_UNROLL_SIZE 1 -#include "nbnxn_kernel_simd_4xn.h" - -#define CALC_COUL_RF -#define LJ_COMB_GEOM -#define CALC_ENERGIES -#define ENERGY_GROUPS - -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_common.h" -#endif /* GMX_NBNXN_SIMD_4XN */ - -#ifdef CALC_ENERGIES -void -nbnxn_kernel_simd_4xn_rf_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift, - real gmx_unused *Vvdw, - real gmx_unused *Vc) -#else /* CALC_ENERGIES */ -void -nbnxn_kernel_simd_4xn_rf_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift) -#endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_outer.h" -#else /* GMX_NBNXN_SIMD_4XN */ -{ -/* No need to call gmx_incons() here, because the only function - * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and - * instead call gmx_incons(). - */ -} -#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_energrp.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_energrp.c deleted file mode 100644 index 95b5e389e9..0000000000 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_rf_comb_lb_energrp.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the GROMACS molecular simulation package. - * - * Copyright (c) 2012,2013, by the GROMACS development team, led by - * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, - * and including many others, as listed in the AUTHORS file in the - * top-level source directory and at http://www.gromacs.org. - * - * GROMACS is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * of the License, or (at your option) any later version. - * - * GROMACS is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with GROMACS; if not, see - * http://www.gnu.org/licenses, or write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * If you want to redistribute modifications to GROMACS, please - * consider that scientific software is very special. Version - * control is crucial - bugs must be traceable. We will be happy to - * consider code for inclusion in the official distribution, but - * derived work must not be called official GROMACS. Details are found - * in the README & COPYING files - if they are missing, get the - * official version at http://www.gromacs.org. - * - * To help us fund GROMACS development, we humbly ask that you cite - * the research papers on the package. Check out http://www.gromacs.org. - */ -/* - * Note: this file was generated by the Verlet kernel generator for - * kernel type 4xn. - */ - -/* Some target architectures compile kernels for only some NBNxN - * kernel flavours, but the code is generated before the target - * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub - * function definition when the kernel will never be called. - */ -#define GMX_SIMD_J_UNROLL_SIZE 1 -#include "nbnxn_kernel_simd_4xn.h" - -#define CALC_COUL_RF -#define LJ_COMB_LB -#define CALC_ENERGIES -#define ENERGY_GROUPS - -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_common.h" -#endif /* GMX_NBNXN_SIMD_4XN */ - -#ifdef CALC_ENERGIES -void -nbnxn_kernel_simd_4xn_rf_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift, - real gmx_unused *Vvdw, - real gmx_unused *Vc) -#else /* CALC_ENERGIES */ -void -nbnxn_kernel_simd_4xn_rf_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift) -#endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_outer.h" -#else /* GMX_NBNXN_SIMD_4XN */ -{ -/* No need to call gmx_incons() here, because the only function - * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and - * instead call gmx_incons(). - */ -} -#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener.c deleted file mode 100644 index a99e288db8..0000000000 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the GROMACS molecular simulation package. - * - * Copyright (c) 2012,2013, by the GROMACS development team, led by - * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, - * and including many others, as listed in the AUTHORS file in the - * top-level source directory and at http://www.gromacs.org. - * - * GROMACS is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * of the License, or (at your option) any later version. - * - * GROMACS is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with GROMACS; if not, see - * http://www.gnu.org/licenses, or write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * If you want to redistribute modifications to GROMACS, please - * consider that scientific software is very special. Version - * control is crucial - bugs must be traceable. We will be happy to - * consider code for inclusion in the official distribution, but - * derived work must not be called official GROMACS. Details are found - * in the README & COPYING files - if they are missing, get the - * official version at http://www.gromacs.org. - * - * To help us fund GROMACS development, we humbly ask that you cite - * the research papers on the package. Check out http://www.gromacs.org. - */ -/* - * Note: this file was generated by the Verlet kernel generator for - * kernel type 4xn. - */ - -/* Some target architectures compile kernels for only some NBNxN - * kernel flavours, but the code is generated before the target - * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub - * function definition when the kernel will never be called. - */ -#define GMX_SIMD_J_UNROLL_SIZE 1 -#include "nbnxn_kernel_simd_4xn.h" - -#define CALC_COUL_TAB -#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -#define LJ_COMB_LB -#define CALC_ENERGIES - -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_common.h" -#endif /* GMX_NBNXN_SIMD_4XN */ - -#ifdef CALC_ENERGIES -void -nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift, - real gmx_unused *Vvdw, - real gmx_unused *Vc) -#else /* CALC_ENERGIES */ -void -nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift) -#endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_outer.h" -#else /* GMX_NBNXN_SIMD_4XN */ -{ -/* No need to call gmx_incons() here, because the only function - * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and - * instead call gmx_incons(). - */ -} -#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener.c b/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener.c deleted file mode 100644 index 1234d92dea..0000000000 --- a/src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the GROMACS molecular simulation package. - * - * Copyright (c) 2012,2013, by the GROMACS development team, led by - * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, - * and including many others, as listed in the AUTHORS file in the - * top-level source directory and at http://www.gromacs.org. - * - * GROMACS is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * of the License, or (at your option) any later version. - * - * GROMACS is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with GROMACS; if not, see - * http://www.gnu.org/licenses, or write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * If you want to redistribute modifications to GROMACS, please - * consider that scientific software is very special. Version - * control is crucial - bugs must be traceable. We will be happy to - * consider code for inclusion in the official distribution, but - * derived work must not be called official GROMACS. Details are found - * in the README & COPYING files - if they are missing, get the - * official version at http://www.gromacs.org. - * - * To help us fund GROMACS development, we humbly ask that you cite - * the research papers on the package. Check out http://www.gromacs.org. - */ -/* - * Note: this file was generated by the Verlet kernel generator for - * kernel type 4xn. - */ - -/* Some target architectures compile kernels for only some NBNxN - * kernel flavours, but the code is generated before the target - * architecture is known. So compilation is conditional upon - * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub - * function definition when the kernel will never be called. - */ -#define GMX_SIMD_J_UNROLL_SIZE 1 -#include "nbnxn_kernel_simd_4xn.h" - -#define CALC_COUL_TAB -#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */ -/* Use no LJ combination rule */ -/* Will not calculate energies */ - -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_common.h" -#endif /* GMX_NBNXN_SIMD_4XN */ - -#ifdef CALC_ENERGIES -void -nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift, - real gmx_unused *Vvdw, - real gmx_unused *Vc) -#else /* CALC_ENERGIES */ -void -nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl, - const nbnxn_atomdata_t gmx_unused *nbat, - const interaction_const_t gmx_unused *ic, - rvec gmx_unused *shift_vec, - real gmx_unused *f, - real gmx_unused *fshift) -#endif /* CALC_ENERGIES */ -#ifdef GMX_NBNXN_SIMD_4XN -#include "nbnxn_kernel_simd_4xn_outer.h" -#else /* GMX_NBNXN_SIMD_4XN */ -{ -/* No need to call gmx_incons() here, because the only function - * that calls this one is also compiled conditionally. When - * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and - * instead call gmx_incons(). - */ -} -#endif /* GMX_NBNXN_SIMD_4XN */ diff --git a/src/gromacs/mdlib/sim_util.c b/src/gromacs/mdlib/sim_util.c index 2aacb9b32c..2a04a55265 100644 --- a/src/gromacs/mdlib/sim_util.c +++ b/src/gromacs/mdlib/sim_util.c @@ -665,8 +665,22 @@ static void do_nb_verlet(t_forcerec *fr, nbvg->nbl_lists.natpair_ljq); inc_nrnb(nrnb, enr_nbnxn_kernel_lj, nbvg->nbl_lists.natpair_lj); + /* The Coulomb-only kernels are offset -eNR_NBNXN_LJ_RF+eNR_NBNXN_RF */ inc_nrnb(nrnb, enr_nbnxn_kernel_ljc-eNR_NBNXN_LJ_RF+eNR_NBNXN_RF, nbvg->nbl_lists.natpair_q); + + if (ic->vdw_modifier == eintmodFORCESWITCH) + { + /* We add up the switch cost separately */ + inc_nrnb(nrnb, eNR_NBNXN_LJ_FSW+((flags & GMX_FORCE_ENERGY) ? 1 : 0), + nbvg->nbl_lists.natpair_ljq + nbvg->nbl_lists.natpair_lj); + } + if (ic->vdw_modifier == eintmodPOTSWITCH) + { + /* We add up the switch cost separately */ + inc_nrnb(nrnb, eNR_NBNXN_LJ_PSW+((flags & GMX_FORCE_ENERGY) ? 1 : 0), + nbvg->nbl_lists.natpair_ljq + nbvg->nbl_lists.natpair_lj); + } } void do_force_cutsVERLET(FILE *fplog, t_commrec *cr, @@ -2175,7 +2189,9 @@ void calc_enervirdiff(FILE *fplog, int eDispCorr, t_forcerec *fr) eners[i] = 0; virs[i] = 0; } - if ((fr->vdwtype == evdwSWITCH) || (fr->vdwtype == evdwSHIFT)) + if (fr->vdwtype == evdwSWITCH || fr->vdwtype == evdwSHIFT || + fr->vdw_modifier == eintmodPOTSWITCH || + fr->vdw_modifier == eintmodFORCESWITCH) { if (fr->rvdw_switch == 0) { @@ -2195,7 +2211,8 @@ void calc_enervirdiff(FILE *fplog, int eDispCorr, t_forcerec *fr) rc3 = r0*r0*r0; rc9 = rc3*rc3*rc3; - if (fr->vdwtype == evdwSHIFT) + if (fr->vdwtype == evdwSHIFT || + fr->vdw_modifier == eintmodFORCESWITCH) { /* Determine the constant energy shift below rvdw_switch. * Table has a scale factor since we have scaled it down to compensate diff --git a/src/gromacs/mdlib/tables.c b/src/gromacs/mdlib/tables.c index dc6dea54d8..7cfce0bc24 100644 --- a/src/gromacs/mdlib/tables.c +++ b/src/gromacs/mdlib/tables.c @@ -1160,6 +1160,33 @@ static void set_table_type(int tabsel[], const t_forcerec *fr, gmx_bool b14only) gmx_fatal(FARGS, "Invalid vdwtype %d in %s line %d", vdwtype, __FILE__, __LINE__); } + + if (!b14only && fr->vdw_modifier != eintmodNONE) + { + if (fr->vdwtype != evdwCUT) + { + gmx_incons("Potential modifiers only implemented for LJ cut-off"); + } + + switch (fr->vdw_modifier) + { + case eintmodNONE: + case eintmodPOTSHIFT: + case eintmodEXACTCUTOFF: + /* No modification */ + break; + case eintmodPOTSWITCH: + tabsel[etiLJ6] = etabLJ6Switch; + tabsel[etiLJ12] = etabLJ12Switch; + break; + case eintmodFORCESWITCH: + tabsel[etiLJ6] = etabLJ6Shift; + tabsel[etiLJ12] = etabLJ12Shift; + break; + default: + gmx_incons("Unsupported vdw_modifier"); + } + } } } diff --git a/src/programs/mdrun/runner.c b/src/programs/mdrun/runner.c index 153736f9b7..588f7338fa 100644 --- a/src/programs/mdrun/runner.c +++ b/src/programs/mdrun/runner.c @@ -765,24 +765,31 @@ static void convert_to_verlet_scheme(FILE *fplog, } else if (ir_vdw_switched(ir) || ir_coulomb_switched(ir)) { - md_print_warn(NULL, fplog, "Converting switched or shifted interactions to a shifted potential (without force shift), this will lead to slightly different interaction potentials"); - - if (ir_vdw_switched(ir)) + if (ir_vdw_switched(ir) && ir->vdw_modifier == eintmodNONE) { ir->vdwtype = evdwCUT; + + switch (ir->vdwtype) + { + case evdwSHIFT: ir->vdw_modifier = eintmodFORCESWITCH; break; + case evdwSWITCH: ir->vdw_modifier = eintmodPOTSWITCH; break; + default: gmx_fatal(FARGS, "The Verlet scheme does not support Van der Waals interactions of type '%s'", evdw_names[ir->vdwtype]); + } } - if (ir_coulomb_switched(ir)) + if (ir_coulomb_switched(ir) && ir->coulomb_modifier == eintmodNONE) { if (EEL_FULL(ir->coulombtype)) { /* With full electrostatic only PME can be switched */ - ir->coulombtype = eelPME; + ir->coulombtype = eelPME; + ir->coulomb_modifier = eintmodPOTSHIFT; } else { md_print_warn(NULL, fplog, "NOTE: Replacing %s electrostatics with reaction-field with epsilon-rf=inf\n", eel_names[ir->coulombtype]); - ir->coulombtype = eelRF; - ir->epsilon_rf = 0.0; + ir->coulombtype = eelRF; + ir->epsilon_rf = 0.0; + ir->coulomb_modifier = eintmodPOTSHIFT; } } @@ -1142,6 +1149,13 @@ int mdrunner(gmx_hw_opt_t *hw_opt, bUseGPU = (hwinfo->gpu_info.ncuda_dev_compatible > 0 || getenv("GMX_EMULATE_GPU") != NULL); + if (bUseGPU && (inputrec->vdw_modifier == eintmodFORCESWITCH || + inputrec->vdw_modifier == eintmodPOTSWITCH)) + { + md_print_warn(cr, fplog, "LJ switch functions are not yet supported on the GPU, falling back to CPU-only"); + bUseGPU = FALSE; + } + prepare_verlet_scheme(fplog, cr, inputrec, nstlist_cmdline, mtop, state->box, bUseGPU); -- 2.22.0