From: Mark Abraham Date: Mon, 5 Oct 2015 19:36:02 +0000 (+0200) Subject: Merge release-5-0 into release-5-1 X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?a=commitdiff_plain;h=4ca7859398f32d04bc62d1b0ff62b7a4c7b0ab52;p=alexxy%2Fgromacs.git Merge release-5-0 into release-5-1 Conflicts: cmake/gmxManageFFTLibraries.cmake Fixes from release-5-0 goes in only one branch of the refactoring in release-5-1 that separate the own-fftw build from an installed-fftw build. docs/manual/monster.bib Insertions in both branches, both retained src/gromacs/gmxana/gmx_wham.cpp Fixed formatting of copyrighted years. src/programs/mdrun/mdrun.cpp Relocation of please_cite() calls was adjacent to removal of bSepPot, trivial resolution Change-Id: I9d6116534775906d74ddbd45925176a21b5afcd9 --- 4ca7859398f32d04bc62d1b0ff62b7a4c7b0ab52 diff --cc cmake/gmxManageFFTLibraries.cmake index fdd63bca94,6f9c440b07..90fdcd37bc --- a/cmake/gmxManageFFTLibraries.cmake +++ b/cmake/gmxManageFFTLibraries.cmake @@@ -59,44 -59,52 +59,48 @@@ gmx_dependent_cache_variable PATH "" MKL_MANUALLY) if(${GMX_FFT_LIBRARY} STREQUAL "FFTW3") + # ${FFTW} must be in upper case if(GMX_DOUBLE) - set(FFTW fftw) + set(FFTW "FFTW") else() - set(FFTW fftwf) + set(FFTW "FFTWF") endif() - # Note that these calls are expected to function the same way, - # particularly with respect to setting CMake variables that - # record the presence of particular FFTW SIMD support. - # TODO There is no need for this requirement, all the remaining - # code here can be refactored to have just one check of - # GMX_BUILD_OWN_FFTW, which simplifies both code paths. if(GMX_BUILD_OWN_FFTW) - add_subdirectory(src/contrib/fftw) + add_subdirectory(src/contrib/fftw) + include_directories(BEFORE ${${FFTW}_INCLUDE_DIRS}) + # libgmxfftw is always built static, so libgromacs does not + # have a dependency on anything, so PKG_FFT should be empty + set(PKG_FFT "") + set(FFT_STATUS_MESSAGE "Using external FFT library - FFTW3 build managed by GROMACS") else() - find_package(FFTW COMPONENTS ${FFTW}) - endif() + string(TOLOWER "${FFTW}" LOWERFFTW) + find_package(FFTW COMPONENTS ${LOWERFFTW}) - string(TOUPPER "${FFTW}" FFTW) - if(NOT ${FFTW}_FOUND) - MESSAGE(FATAL_ERROR "Cannot find FFTW 3 (with correct precision - libfftw3f for mixed-precision GROMACS or libfftw3 for double-precision GROMACS). Either choose the right precision, choose another FFT(W) library (-DGMX_FFT_LIBRARY), enable the advanced option to let GROMACS build FFTW 3 for you (-GMX_BUILD_OWN_FFTW=ON), or use the really slow GROMACS built-in fftpack library (-DGMX_FFT_LIBRARY=fftpack).") - endif() + if(NOT ${FFTW}_FOUND) + MESSAGE(FATAL_ERROR "Cannot find FFTW 3 (with correct precision - libfftw3f for mixed-precision GROMACS or libfftw3 for double-precision GROMACS). Either choose the right precision, choose another FFT(W) library (-DGMX_FFT_LIBRARY), enable the advanced option to let GROMACS build FFTW 3 for you (-DGMX_BUILD_OWN_FFTW=ON), or use the really slow GROMACS built-in fftpack library (-DGMX_FFT_LIBRARY=fftpack).") + endif() - set(PKG_FFT "${${FFTW}_PKG}") - if (GMX_BUILD_OWN_FFTW) - include_directories(BEFORE ${${FFTW}_INCLUDE_DIRS}) - else() + set(PKG_FFT "${${FFTW}_PKG}") include_directories(${${FFTW}_INCLUDE_DIRS}) - endif() - set(FFT_LIBRARIES ${${FFTW}_LIBRARIES}) - set(GMX_FFT_FFTW3 1) - if ((${GMX_SIMD} MATCHES "SSE" OR ${GMX_SIMD} MATCHES "AVX") AND NOT ${FFTW}_HAVE_SIMD) - message(WARNING "The fftw library found is compiled without SIMD support, which makes it slow. Consider recompiling it or contact your admin") - else() - if(${GMX_SIMD} MATCHES "AVX" AND NOT (${FFTW}_HAVE_SSE OR ${FFTW}_HAVE_SSE2)) - # If we end up here we have an AVX Gromacs build, and FFTW - # with SIMD. FFTW 3.3.5 will have the behaviour that - # configuring with AVX support also adds SSE support, which is - # what we want. There is no good way to detect the FFTW - # version, however. - message(WARNING "The FFTW library was compiled with neither --enable-sse nor --enable-sse2; those would have enabled SSE(2) SIMD instructions. This will give suboptimal performance. You should (re)compile the FFTW library with both SSE2 and AVX instruction support (use both --enable-sse2 and --enable-avx). More recent versions of FFTW compile support for such narrower SIMD by default.") + if ((${GMX_SIMD} MATCHES "SSE" OR ${GMX_SIMD} MATCHES "AVX") AND NOT ${FFTW}_HAVE_SIMD) + message(WARNING "The fftw library found is compiled without SIMD support, which makes it slow. Consider recompiling it or contact your admin") + else() - if(${GMX_SIMD} MATCHES "AVX" AND NOT (${FFTW}_HAVE_SSE OR ${FFTW}_HAVE_SSE2 OR ${FFTW}_HAVE_AVX_128 OR ${FFTW}_HAVE_AVX2_128)) - # If we end up here we have an AVX Gromacs build, and FFTW with SIMD, but no 128-bit SIMD, this means AVX is enabled for FFTW. - message(WARNING "The FFTW library was compiled with neither --enable-sse nor --enable-sse2; those would have enabled SSE(2) SIMD instructions. This will give suboptimal performance. You should (re)compile the FFTW library with both SSE2 and AVX instruction support (use both --enable-sse2 and --enable-avx). The FFTW library will determine at runtime which SIMD instruction set is fastest for different parts of the FFTs.") ++ if(${GMX_SIMD} MATCHES "AVX" AND NOT (${FFTW}_HAVE_SSE OR ${FFTW}_HAVE_SSE2)) ++ # If we end up here we have an AVX Gromacs build, and FFTW ++ # with SIMD. FFTW 3.3.5 will have the behaviour that ++ # configuring with AVX support also adds SSE support, which is ++ # what we want. There is no good way to detect the FFTW ++ # version, however. ++ message(WARNING "The FFTW library was compiled with neither --enable-sse nor --enable-sse2; those would have enabled SSE(2) SIMD instructions. This will give suboptimal performance. You should (re)compile the FFTW library with both SSE2 and AVX instruction support (use both --enable-sse2 and --enable-avx). More recent versions of FFTW compile support for such narrower SIMD by default.") + endif() ++ set(FFT_STATUS_MESSAGE "Using external FFT library - FFTW3") endif() - set(FFT_STATUS_MESSAGE "Using external FFT library - FFTW3") endif() - set(FFT_STATUS_MESSAGE "Using external FFT library - FFTW3") + set(FFT_LIBRARIES ${${FFTW}_LIBRARIES}) + set(GMX_FFT_FFTW3 1) elseif(${GMX_FFT_LIBRARY} STREQUAL "MKL") # Intel 11 and up makes life somewhat easy if you just want to use # all their stuff. It's not easy if you only want some of their diff --cc docs/manual/monster.bib index a7ba8b5b9d,b6e0bf868a..970cf315be --- a/docs/manual/monster.bib +++ b/docs/manual/monster.bib @@@ -8692,52 -8692,26 +8692,76 @@@ keywords = {CHARMM, force field, molecu year = {2000}, } + @incollection {Pall2015, + author = {P{\'a}ll, Szil{\'a}rd and Abraham, Mark James and Kutzner, Carsten and Hess, Berk and Lindahl, Erik}, + title = { Tackling Exascale Software Challenges in Molecular Dynamics Simulati\ + ons with {GROMACS} }, + booktitle = {Solving Software Challenges for Exascale }, + editor = { Markidis, Stephano and Laure, Erwin }, + pages = { 3--27 }, + year = { 2015 }, + volume = { 8759 }, + publisher = { Springer International Publishing Switzerland }, + address = { London } + } + + @article {Abraham2015, + author = { Abraham, Mark James and Murtola, Teemu and Schulz, Roland and P{\'a}ll, Szil{\'a}rd and Smith, Jeremy C. and Hess, Berk and Lindahl, Erik }, + title = { {GROMACS}: High performance molecular simulations through multi-level parallelism from laptops to supercomputers }, + journal = { {SoftwareX} }, + volume = { 1--2 }, + publisher = { John Wiley & Sons, Inc. }, + pages = { 19--25 }, + year = { 2015 }, + doi = "http://dx.doi.org/10.1016/j.softx.2015.06.001" + } ++ +@Misc{lmfit, + author = {Joachim Wuttke}, + title = {lmfit}, + howpublished = {http://apps.jcns.fz-juelich.de/doku/sc/lmfit}, + year = 2013} + +@Article{Steen-Saethre2014a, + author = {B. Steen-S{\ae}thre and A. C. Hoffmann and D. van der Spoel}, + title = {Order Parameters and Algorithmic Approaches for Detection and Demarcation of Interfaces in Hydrate−Fluid and Ice−Fluid Systems}, + journal = {J. Chem. Theor. Comput.}, + year = 2014, + volume = 10, + pages = {5606-5615}} + +@Article{ Wensink2003a, + author = "E. J. W. Wensink and A. C. Hoffmann and P. J. {van + Maaren} and D. {van der Spoel}", + title = "Dynamic properties of water/alcohol mixtures studied + by computer simulation", + journal = BTjcp, + year = 2003, + volume = 119, + pages = "7308-7317" +} + +@Article{Guo2002b, + author = {Guang-Jun Guo and Yi-Gang Zhang and Keith Refson and Ya-Juan Zhao}, + title = {Viscosity and stress autocorrelation function in supercooled water: a molecular dynamics study}, + journal = {Mol. Phys.}, + year = 2002, + volume = 100, + pages = {2617-2627}} + +@Article{Fanourgakis2012a, + author = {George S. Fanourgakis and J. S. Medina and R. Prosmiti}, + title = {Determining the Bulk Viscosity of Rigid Water Models}, + journal = {J. Phys. Chem. A}, + year = 2012, + volume = 116, + pages = {2564-2570}} + +@Article{Palmer1994a, + author = {B. J. Palmer}, + title = {Transverse-current autocorrelation-function calculations of the shear viscosity for molecular liquids.}, + journal = {Phys. Rev. E}, + year = 1994, + volume = 49, + pages = {359-366}} + diff --cc src/programs/mdrun/runner.cpp index cd69696300,b951255d7c..796333ebe2 --- a/src/programs/mdrun/runner.cpp +++ b/src/programs/mdrun/runner.cpp @@@ -651,18 -1156,6 +651,19 @@@ int mdrunner(gmx_hw_opt_t *hw_opt * global for this process (MPI rank). */ hwinfo = gmx_detect_hardware(fplog, cr, bTryUseGPU); + gmx_print_detected_hardware(fplog, cr, hwinfo); + + if (fplog != NULL) + { + /* Print references after all software/hardware printing */ ++ please_cite(fplog, "Abraham2015"); + please_cite(fplog, "Pall2015"); + please_cite(fplog, "Pronk2013"); + please_cite(fplog, "Hess2008b"); + please_cite(fplog, "Spoel2005a"); + please_cite(fplog, "Lindahl2001a"); + please_cite(fplog, "Berendsen95a"); + } snew(state, 1); if (SIMMASTER(cr))