From: Paul Bauer Date: Wed, 6 May 2020 12:31:38 +0000 (+0200) Subject: Merge branch 'origin/release-2020' into master X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?a=commitdiff_plain;h=dab12021ea888a27ee9c5386ea531f6d365e4a9e;p=alexxy%2Fgromacs.git Merge branch 'origin/release-2020' into master Resolved Conflicts: admin/clang-tidy.sh admin/containers/buildall.sh admin/containers/utility.py admin/dockerfiles/buildall.sh admin/dockerfiles/ci-clang/Dockerfile admin/dockerfiles/ci-docs-clang/Dockerfile admin/dockerfiles/ci-docs-gcc/Dockerfile admin/dockerfiles/ci-gcc/Dockerfile admin/gitlab-ci/archive.gitlab-ci.yml admin/gitlab-ci/documentation.gitlab-ci.yml admin/gitlab-ci/global.gitlab-ci.yml admin/gitlab-ci/gromacs.gitlab-ci.yml admin/gitlab-ci/lint.gitlab-ci.yml cmake/gmxManageSimd.cmake cmake/gmxVersionInfo.cmake docs/dev-manual/containers.rst src/CMakeLists.txt src/api/cpp/tests/testingconfiguration.h src/buildinfo.h.cmakein src/gromacs/CMakeLists.txt src/gromacs/ewald/pme_only.cpp src/gromacs/fileio/matio.cpp src/gromacs/fileio/oenv.cpp src/gromacs/gmxana/gmx_do_dssp.cpp src/gromacs/gmxana/nrama.cpp src/gromacs/gmxlib/network.cpp src/gromacs/gmxlib/nonbonded/nb_free_energy.cpp src/gromacs/listed_forces/bonded.cpp src/gromacs/mdlib/forcerec.cpp src/gromacs/mdtypes/interaction_const.h src/gromacs/nbnxm/pairlist.h src/gromacs/selection/CMakeLists.txt src/gromacs/simd/impl_x86_avx_256/impl_x86_avx_256_simd_double.h src/gromacs/simd/impl_x86_avx_256/impl_x86_avx_256_simd_float.h src/gromacs/simd/simd.h src/gromacs/utility/basedefinitions.h src/gromacs/utility/binaryinformation.cpp src/testutils/CMakeLists.txt src/testutils/TestMacros.cmake src/testutils/testasserts.h Change-Id: Ie157786299ca8f2d8c77a148b3bf1b1061f44b8a --- dab12021ea888a27ee9c5386ea531f6d365e4a9e diff --cc cmake/gmxVersionInfo.cmake index 136b8893c8,7ca2bff882..58f3ff6efc --- a/cmake/gmxVersionInfo.cmake +++ b/cmake/gmxVersionInfo.cmake @@@ -333,10 -331,13 +333,10 @@@ set(VERSION_INFO_DEPS ${VERSION set(VERSION_INFO_CMAKEIN_FILE ${CMAKE_CURRENT_LIST_DIR}/VersionInfo.cmake.cmakein) set(VERSION_INFO_CONFIGURE_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/gmxConfigureVersionInfo.cmake) # A set of directories to scan for calculating the hash of source files. - set(SET_OF_DIRECTORIES_TO_CHECKSUM "${PROJECT_SOURCE_DIR}/src") - list(APPEND SET_OF_DIRECTORIES_TO_CHECKSUM "${PROJECT_SOURCE_DIR}/python_packaging") + set(SET_OF_DIRECTORIES_TO_CHECKSUM "src") + list(APPEND SET_OF_DIRECTORIES_TO_CHECKSUM "python_packaging") # Due to the limitations for passing a list as arguments, we make the directories a string here string(REPLACE ";" ":" DIRECTORIES_TO_CHECKSUM_STRING "${SET_OF_DIRECTORIES_TO_CHECKSUM}") -# Try to find python for the checksumming script -set(PythonInterp_FIND_QUIETLY ON) -find_package(PythonInterp 3.5) # Rules to create the VersionInfo.cmake file. # For git info, the sequence is: diff --cc docs/CMakeLists.txt index 3d8ce9b2e0,ca252f6648..f5503ad2b0 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@@ -363,17 -361,9 +363,18 @@@ if (SPHINX_FOUND how-to/visualize.rst install-guide/index.rst release-notes/index.rst + release-notes/2021/major/highlights.rst + release-notes/2021/major/features.rst + release-notes/2021/major/performance.rst + release-notes/2021/major/tools.rst + release-notes/2021/major/bugs-fixed.rst + release-notes/2021/major/removed-functionality.rst + release-notes/2021/major/deprecated-functionality.rst + release-notes/2021/major/portability.rst + release-notes/2021/major/miscellaneous.rst release-notes/2020/2020.1.rst release-notes/2020/2020.2.rst + release-notes/2020/2020.3.rst release-notes/2020/major/highlights.rst release-notes/2020/major/features.rst release-notes/2020/major/performance.rst diff --cc src/api/cpp/tests/testingconfiguration.h index 4e050d75b3,2d4cf147f0..3d160d7e14 --- a/src/api/cpp/tests/testingconfiguration.h +++ b/src/api/cpp/tests/testingconfiguration.h @@@ -41,8 -41,8 +41,10 @@@ #include #include + #include "config.h" + +#include + #include "gromacs/gmxpreprocess/grompp.h" #include "gromacs/math/vec.h" #include "gromacs/utility/stringutil.h" diff --cc src/gromacs/gmxlib/nonbonded/nb_free_energy.cpp index 592c73ffa3,19e5c660dd..e23eef5bac --- a/src/gromacs/gmxlib/nonbonded/nb_free_energy.cpp +++ b/src/gromacs/gmxlib/nonbonded/nb_free_energy.cpp @@@ -680,12 -721,12 +691,12 @@@ static void nb_free_energy_kernel(cons */ real v_lr, f_lr; - const RealType ewrt = r * ewtabscale; - const real ewrt = r * coulombTableScale; - int ewitab = static_cast(ewrt); - const real eweps = ewrt - ewitab; - ewitab = 4 * ewitab; - f_lr = ewtab[ewitab] + eweps * ewtab[ewitab + 1]; ++ const RealType ewrt = r * coulombTableScale; + IntType ewitab = static_cast(ewrt); + const RealType eweps = ewrt - ewitab; + ewitab = 4 * ewitab; + f_lr = ewtab[ewitab] + eweps * ewtab[ewitab + 1]; - v_lr = (ewtab[ewitab + 2] - ewtabhalfspace * eweps * (ewtab[ewitab] + f_lr)); + v_lr = (ewtab[ewitab + 2] - coulombTableScaleInvHalf * eweps * (ewtab[ewitab] + f_lr)); f_lr *= rinv; /* Note that any possible Ewald shift has already been applied in @@@ -725,16 -766,16 +736,17 @@@ * r close to 0 for non-interacting pairs. */ - const RealType rs = rsq * rinv * ewtabscale; - const real rs = rsq * rinv * vdwTableScale; - const int ri = static_cast(rs); - const real frac = rs - ri; - const real f_lr = (1 - frac) * tab_ewald_F_lj[ri] + frac * tab_ewald_F_lj[ri + 1]; ++ const RealType rs = rsq * rinv * vdwTableScale; + const IntType ri = static_cast(rs); + const RealType frac = rs - ri; + const RealType f_lr = (1 - frac) * tab_ewald_F_lj[ri] + frac * tab_ewald_F_lj[ri + 1]; /* TODO: Currently the Ewald LJ table does not contain * the factor 1/6, we should add this. */ - const real FF = f_lr * rinv / six; - real VV = (tab_ewald_V_lj[ri] - vdwTableScaleInvHalf * frac * (tab_ewald_F_lj[ri] + f_lr)) - / six; + const RealType FF = f_lr * rinv / six; + RealType VV = - (tab_ewald_V_lj[ri] - ewtabhalfspace * frac * (tab_ewald_F_lj[ri] + f_lr)) / six; ++ (tab_ewald_V_lj[ri] - vdwTableScaleInvHalf * frac * (tab_ewald_F_lj[ri] + f_lr)) ++ / six; if (ii == jnr) { diff --cc src/gromacs/mdlib/forcerec.cpp index c8725816b3,c7aeca1a8b..3cb7e40a93 --- a/src/gromacs/mdlib/forcerec.cpp +++ b/src/gromacs/mdlib/forcerec.cpp @@@ -749,14 -758,14 +749,15 @@@ static void init_ewald_f_table(const in } } -void init_interaction_const_tables(FILE* fp, interaction_const_t* ic) +void init_interaction_const_tables(FILE* fp, interaction_const_t* ic, const real tableExtensionLength) { - if (EEL_PME_EWALD(ic->eeltype)) + if (EEL_PME_EWALD(ic->eeltype) || EVDW_PME(ic->vdwtype)) { - init_ewald_f_table(*ic, tableExtensionLength, ic->coulombEwaldTables.get(), nullptr); - init_ewald_f_table(*ic, ic->coulombEwaldTables.get(), ic->vdwEwaldTables.get()); ++ init_ewald_f_table(*ic, tableExtensionLength, ic->coulombEwaldTables.get(), ++ ic->vdwEwaldTables.get()); if (fp != nullptr) { - fprintf(fp, "Initialized non-bonded Coulomb Ewald tables, spacing: %.2e size: %zu\n\n", + fprintf(fp, "Initialized non-bonded Ewald tables, spacing: %.2e size: %zu\n\n", 1 / ic->coulombEwaldTables->scale, ic->coulombEwaldTables->tableF.size()); } } diff --cc src/gromacs/mdlib/sim_util.cpp index 5ff92d9e19,f2528d78b4..179e3116e5 --- a/src/gromacs/mdlib/sim_util.cpp +++ b/src/gromacs/mdlib/sim_util.cpp @@@ -1099,11 -1104,16 +1099,11 @@@ void do_force(FILE haveCopiedXFromGpu = true; } -#if GMX_MPI // If coordinates are to be sent to PME task from GPU memory, perform that send here. // Otherwise the send will occur before the H2D coordinate transfer. - if (pmeSendCoordinatesFromGpu) + if (!thisRankHasDuty(cr, DUTY_PME) && pmeSendCoordinatesFromGpu) { - /* Send particle coordinates to the pme nodes. - * Since this is only implemented for domain decomposition - * and domain decomposition does not use the graph, - * we do not need to worry about shifting. - */ + /* Send particle coordinates to the pme nodes */ gmx_pme_send_coordinates(fr, cr, box, as_rvec_array(x.unpaddedArrayRef().data()), lambda[efptCOUL], lambda[efptVDW], (stepWork.computeVirial || stepWork.computeEnergy), step, simulationWork.useGpuPmePpCommunication, reinitGpuPmePpComms, diff --cc src/gromacs/nbnxm/pairlist.h index 97805f7f1b,162954c89d..04f3315990 --- a/src/gromacs/nbnxm/pairlist.h +++ b/src/gromacs/nbnxm/pairlist.h @@@ -195,19 -146,17 +195,20 @@@ struct nbnxn_im_ei_ int excl_ind = 0; }; +//! Four-way j-cluster lists typedef struct { - int cj[c_nbnxnGpuJgroupSize]; /* The 4 j-clusters */ - nbnxn_im_ei_t imei[c_nbnxnGpuClusterpairSplit]; /* The i-cluster mask data for 2 warps */ + //! The 4 j-clusters + int cj[c_nbnxnGpuJgroupSize]; + //! The i-cluster mask data for 2 warps + nbnxn_im_ei_t imei[c_nbnxnGpuClusterpairSplit]; } nbnxn_cj4_t; -/* Struct for storing the atom-pair interaction bits for a cluster pair in a GPU pairlist */ +//! Struct for storing the atom-pair interaction bits for a cluster pair in a GPU pairlist struct nbnxn_excl_t { - /* Constructor, sets no exclusions, so all atom pairs interacting */ + //! Constructor, sets no exclusions, so all atom pairs interacting + MSVC_DIAGNOSTIC_IGNORE(26495) // pair is not being initialized! nbnxn_excl_t() { for (unsigned int& pairEntry : pair) @@@ -215,8 -164,9 +216,9 @@@ pairEntry = NBNXN_INTERACTION_MASK_ALL; } } + MSVC_DIAGNOSTIC_RESET - /* Topology exclusion interaction bits per warp */ + //! Topology exclusion interaction bits per warp unsigned int pair[c_nbnxnGpuExclSize]; }; diff --cc src/testutils/TestMacros.cmake index c17ce34641,1c4e0d71af..d668cb5d9c --- a/src/testutils/TestMacros.cmake +++ b/src/testutils/TestMacros.cmake @@@ -166,9 -98,15 +166,15 @@@ function (gmx_add_gtest_executable EXEN set_target_properties(${EXENAME} PROPERTIES CXX_CLANG_TIDY "${CLANG_TIDY_EXE};-warnings-as-errors=*;-header-filter=.*") endif() - if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION MATCHES "^6\.0") + if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "7") target_compile_options(${EXENAME} PRIVATE $<$:-Weverything ${IGNORED_CLANG_ALL_WARNINGS} -Wno-gnu-zero-variadic-macro-arguments -Wno-zero-as-null-pointer-constant -Wno-missing-variable-declarations>) endif() + # clang-3.6 warns about a number of issues that are not reported by more modern compilers + # and we know they are not real issues. So we only check that it can compile without error + # but ignore all warnings. + if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION MATCHES "^3\.6") + target_compile_options(${EXENAME} PRIVATE $<$:-w>) + endif() endif() endfunction()