Skip to content

Commit

Permalink
Merge tag 'v2016.3' into release-2016-fda
Browse files Browse the repository at this point in the history
  • Loading branch information
BerndDoser committed Mar 16, 2017
2 parents 46f2cf1 + 078ecb7 commit a30561b
Show file tree
Hide file tree
Showing 35 changed files with 633 additions and 176 deletions.
19 changes: 17 additions & 2 deletions cmake/gmxManageSimd.cmake
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#
# This file is part of the GROMACS molecular simulation package.
#
# Copyright (c) 2012,2013,2014,2015,2016, by the GROMACS development team, led by
# Copyright (c) 2012,2013,2014,2015,2016,2017, 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.
Expand Down Expand Up @@ -74,6 +74,11 @@ macro(prepare_power_vsx_toolchain TOOLCHAIN_C_FLAGS_VARIABLE TOOLCHAIN_CXX_FLAGS
message(FATAL_ERROR "Using VSX SIMD in double precision with GCC requires GCC-4.9 or later.")
endif()
endif()
if(${CMAKE_CXX_COMPILER_ID} MATCHES "XL" OR ${CMAKE_C_COMPILER_ID} MATCHES "XL")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "13.1.5" OR CMAKE_C_COMPILER_VERSION VERSION_LESS "13.1.5")
message(FATAL_ERROR "Using VSX SIMD requires XL compiler version 13.1.5 or later.")
endif()
endif()
endmacro()

# Issue a fatal error with an appropriate message, when the toolchain
Expand Down Expand Up @@ -418,7 +423,12 @@ elseif(GMX_SIMD STREQUAL "IBM_VSX")
SIMD_${GMX_SIMD}_C_FLAGS SIMD_${GMX_SIMD}_CXX_FLAGS
"-mvsx" "-maltivec -mabi=altivec" "-qarch=auto -qaltivec")

if(NOT SIMD_${GMX_SIMD}_C_FLAGS OR NOT SIMD_${GMX_SIMD}_CXX_FLAGS)
# Usually we check also for the C compiler here, but a C compiler
# is not required for SIMD support on this platform. cmake through
# at least version 3.7 cannot pass this check with the C compiler
# in the latest xlc 13.1.5, but the C++ compiler has different
# behaviour and is OK. See Redmine #2102.
if(NOT SIMD_${GMX_SIMD}_CXX_FLAGS)
gmx_give_fatal_error_when_simd_support_not_found("IBM VSX" "disable SIMD support (slower)" "${SUGGEST_BINUTILS_UPDATE}")
endif()

Expand Down Expand Up @@ -476,11 +486,16 @@ endif()
# rather than actual vector data. For now we disable __vectorcall with clang
# when using the reference build.
#
# xlc 13.1.5 does not seem recognize any attribute, and warns about invalid ones
# so we avoid searching for any.
#
if(NOT DEFINED GMX_SIMD_CALLING_CONVENTION)
if(GMX_TARGET_BGQ)
set(CALLCONV_LIST " ")
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND GMX_SIMD STREQUAL "REFERENCE")
set(CALLCONV_LIST __regcall " ")
elseif(CMAKE_CXX_COMPILER_ID MATCHES "XL")
set(CALLCONV_LIST " ")
else()
set(CALLCONV_LIST __vectorcall __regcall " ")
endif()
Expand Down
6 changes: 3 additions & 3 deletions cmake/gmxVersionInfo.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@
# The GROMACS convention is that these are the version number of the next
# release that is going to be made from this branch.
set(GMX_VERSION_MAJOR 2016)
set(GMX_VERSION_PATCH 2)
set(GMX_VERSION_PATCH 3)
# The suffix, on the other hand, is used mainly for betas and release
# candidates, where it signifies the most recent such release from
# this branch; it will be empty before the first such release, as well
Expand All @@ -205,7 +205,7 @@ set(GMX_VERSION_SUFFIX "")
# code being able to dynamically link with a version of libgromacs
# that might not work.
set(LIBRARY_SOVERSION_MAJOR 2)
set(LIBRARY_SOVERSION_MINOR 2)
set(LIBRARY_SOVERSION_MINOR 3)
set(LIBRARY_VERSION ${LIBRARY_SOVERSION_MAJOR}.${LIBRARY_SOVERSION_MINOR}.0)

#####################################################################
Expand All @@ -228,7 +228,7 @@ endif()

set(REGRESSIONTEST_VERSION "${GMX_VERSION_STRING}")
set(REGRESSIONTEST_BRANCH "refs/heads/release-2016")
set(REGRESSIONTEST_MD5SUM "e4d24e3c5f28602c2429b3a389121de8" CACHE INTERNAL "MD5 sum of the regressiontests tarball")
set(REGRESSIONTEST_MD5SUM "bed92d1d9cdca66fbd2efa142b6e0dd3" CACHE INTERNAL "MD5 sum of the regressiontests tarball")

math(EXPR GMX_VERSION_NUMERIC
"${GMX_VERSION_MAJOR}*10000 + ${GMX_VERSION_PATCH}")
Expand Down
3 changes: 2 additions & 1 deletion docs/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#
# This file is part of the GROMACS molecular simulation package.
#
# Copyright (c) 2014,2015,2016, by the GROMACS development team, led by
# Copyright (c) 2014,2015,2016,2017, 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.
Expand Down Expand Up @@ -120,6 +120,7 @@ if (SPHINX_FOUND)
user-guide/index.rst
user-guide/getting-started.rst
user-guide/flow.rst
user-guide/system-preparation.rst
user-guide/cutoff-schemes.rst
user-guide/mdrun-features.rst
user-guide/mdrun-performance.rst
Expand Down
15 changes: 12 additions & 3 deletions docs/dev-manual/jenkins.rst
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,18 @@ configuration should be more static.
clang static analysis
^^^^^^^^^^^^^^^^^^^^^

The exact build sequence and the CMake configuration used is in
:file:`admin/builds/clang-analysis.py`. This file also specifies the clang
version used for the analysis.
The file :file:`admin/builds/clang-analyzer.py` specifies the exact build
sequence and the CMake cache variables used for clang static analysis. This
file also specifies the clang version used for the analysis, as well as the C++
compiler used (``clang-static-analyzer-<version>``).

To run the analysis outside Jenkins, you should run both ``cmake`` and ``make``
under ``scan-build`` command using the same CMake cache variables as in the
build script. When you do the initial CMake configuration with ``scan-build``,
it sets the C++ compiler to the analyzer. Note that using ``scan-build`` like
this will also analyze C code, but Jenkins ignores C code for analysis. This
can result in extra warnings, which can be suppressed by manually setting
CMAKE_C_COMPILER to a value other than Clang static analyzer.

cppcheck
^^^^^^^^
Expand Down
2 changes: 2 additions & 0 deletions docs/install-guide/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,12 @@ frequently provides the best performance.

You should strive to use the most recent version of your
compiler. Minimum supported compiler versions are

* GNU (gcc) 4.6
* Intel (icc) 14
* LLVM (clang) 3.4
* Microsoft (MSVC) 2015

Other compilers may work (Cray, Pathscale, older clang) but do
not offer competitive performance. We recommend against PGI because
the performance with C++ is very bad.
Expand Down
1 change: 1 addition & 0 deletions docs/user-guide/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ For background on algorithms and implementations, see the
:maxdepth: 2

getting-started
system-preparation
cutoff-schemes
mdrun-features
mdrun-performance
Expand Down
8 changes: 6 additions & 2 deletions docs/user-guide/mdrun-performance.rst
Original file line number Diff line number Diff line change
Expand Up @@ -709,8 +709,12 @@ Running the OpenCL version of mdrun
-----------------------------------

The current version works with GCN-based AMD GPUs, and NVIDIA CUDA
GPUs. Make sure that you have the latest drivers installed. The
minimum OpenCL version required is |REQUIRED_OPENCL_MIN_VERSION|. See
GPUs. Make sure that you have the latest drivers installed. For AMD GPUs,
Mesa version 17.0 or newer with LLVM 4.0 or newer is supported in addition
to the proprietary driver. For NVIDIA GPUs, using the proprietary driver is
required as the open source nouveau driver (available in Mesa) does not
provide the OpenCL support.
The minimum OpenCL version required is |REQUIRED_OPENCL_MIN_VERSION|. See
also the :ref:`known limitations <opencl-known-limitations>`.

Devices from the AMD GCN architectures (all series) and NVIDIA Fermi
Expand Down
130 changes: 130 additions & 0 deletions docs/user-guide/system-preparation.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
System preparation
==================

.. toctree::
:hidden:

There are many ways to prepare a simulation system to run with
|Gromacs|. These often vary with the kind of scientific question being
considered, or the model physics involved. A protein-ligand atomistic
free-energy simulation might need a multi-state topology, while a
coarse-grained simulation might need to manage defaults that suit
systems with higher density.

Steps to consider
-----------------

The following general guidance should help with planning successful
simulations. Some stages are optional for some kinds of simulations.

1. Clearly identify the property or phenomena of interest to be
studied by performing the simulation. Do not continue further until
you are clear on this! Do not run your simulation and then seek to
work out how to use it to test your hypothesis, because it may be
unsuitable, or the required information was not saved.

2. Select the appropriate tools to be able to perform the simulation
and observe the property or phenomena of interest. It is important
to read and familiarize yourself with publications by other
researchers on similar systems. Choices of tools include:

- software with which to perform the simulation (consideration of
force field may influence this decision)

- the force field, which describes how the particles within the
system interact with each other. Select one that is appropriate
for the system being studied and the property or phenomena of
interest. This is a very important and non-trivial step! Consider
now how you will analyze your simulation data to make your
observations.

3. Obtain or generate the initial coordinate file for each molecule to
be placed within the system. Many different software packages are
able to build molecular structures and assemble them into suitable
configurations.

4. Generate the raw starting structure for the system by placing the
molecules within the coordinate file as appropriate. Molecules may
be specifically placed or arranged randomly. Several non-|Gromacs|
tools are useful here; within |Gromacs| :ref:`gmx solvate`,
:ref:`gmx insert-molecules` and :ref:`gmx genconf` solve frequent
problems.

5. Obtain or generate the topology file for the system, using (for
example) :ref:`gmx pdb2gmx`, :ref:`gmx x2top`, `SwissParam
<http://swissparam.ch/>`_ (for CHARMM forcefield), `PRODRG
<http://davapc1.bioch.dundee.ac.uk/cgi-bin/prodrg>`_ (for GROMOS96
43A1), `Automated Topology Builder
<http://compbio.biosci.uq.edu.au/atb/>`_ (for GROMOS96 53A6),
`MKTOP <http://www.aribeiro.net.br/mktop>`_ (for OPLS/AA) or your
favourite text editor in concert with chapter 5 of the |Gromacs|
`Reference Manual`_. For the AMBER force fields, `antechamber
<http://amber.scripps.edu/antechamber/antechamber.html>`_ or
`acpype <https://code.google.com/archive/p/acpype/>`_ might be
appropriate.

6. Describe a simulation box (e.g. using :ref:`gmx editconf`) whose
size is appropriate for the eventual density you would like, fill
it with solvent (e.g. using :ref:`gmx solvate`), and add any
counter-ions needed to neutralize the system (e.g. using :ref:`gmx
grompp` and :ref:`gmx insert-molecules`). In these steps you may
need to edit your topology file to stay current with your
coordinate file.

7. Run an energy minimization on the system (using :ref:`gmx grompp`
and :ref:`gmx mdrun`). This is required to sort out any bad
starting structures caused during generation of the system, which
may cause the production simulation to crash. It may be necessary
also to minimize your solute structure in vacuo before introducing
solvent molecules (or your lipid bilayer or whatever else). You
should consider using flexible water models and not using bond
constraints or frozen groups. The use of position restraints and/or
distance restraints should be evaluated carefully.

8. Select the appropriate simulation parameters for the equilibration
simulation (defined in .mdp file). You need to choose simulation
parameters that are consistent with how force field was
derived. You may need to simulate at NVT with position restraints
on your solvent and/or solute to get the temperature almost right,
then relax to NPT to fix the density (which should be done with
Berendsen until after the density is stabilized, before a further
switch to a barostat that produces the correct ensemble), then move
further (if needed) to reach your production simulation ensemble
(e.g. NVT, NVE). If you have problems here with the system `blowing
up <http://www.gromacs.org/Documentation/Terminology/Blowing_Up>`_,
consider using the suggestions on that page, e.g. position
restraints on solutes, or not using bond constraints, or using
smaller integration timesteps, or several gentler heating stage(s).

9. Run the equilibration simulation for sufficient time so that the
system relaxes sufficiently in the target ensemble to allow the
production run to be commenced (using :ref:`gmx grompp` and
:ref:`gmx mdrun`, then :ref:`gmx energy` and `trajectory
visualization tools
<http://www.gromacs.org/Documentation/How-tos/Trajectory_Visualization>`_).

10. Select the appropriate simulation parameters for the production
simulation (defined in .mdp file). In particular, be careful not
to re-generate the velocities. You still need to be consistent
with how the force field was derived and how to measure the
property or phenomena of interest.

.. _Reference Manual: `gmx-manual`_

Tips and tricks
---------------

Database files
^^^^^^^^^^^^^^

The ``share/top`` directory of a |Gromacs| installation contains
numerous plain-text helper files with the ``.dat`` file extension.
Some of the command-line tools (see :doc:`cmdline`) refer to these,
and each tool documents which files it uses, and how they are used.

If you need to modify these files (e.g. to introduce new atom types
with VDW radii into ``vdwradii.dat``), you can copy the file from your
installation directory into your working directory, and the |Gromacs|
tools will automatically load the copy from your working directory
rather than the standard one. To suppress all the standard
definitions, use an empty file in the working directory.
7 changes: 6 additions & 1 deletion src/contrib/fftw/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#
# This file is part of the GROMACS molecular simulation package.
#
# Copyright (c) 2012,2013,2014,2015,2016, by the GROMACS development team, led by
# Copyright (c) 2012,2013,2014,2015,2016,2017, 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.
Expand Down Expand Up @@ -73,7 +73,12 @@ elseif(${GMX_SIMD} MATCHES "^(AVX)")
# Support for --enable-avx2 was only added in 3.3.5, but
# configuring with it is at worst a warning, even on an earlier
# version.
if((CMAKE_COMPILER_IS_GNUCC AND (C_COMPILER_VERSION VERSION_GREATER 4.9 OR CXX_COMPILER_VERSION VERSION_GREATER 4.9)) OR
(CMAKE_C_COMPILER_ID MATCHES "Clang" AND (C_COMPILER_VERSION VERSION_GREATER 3.9 OR CXX_COMPILER_VERSION VERSION_GREATER 3.9)))
set(_fftw_simd_support_level --enable-sse2;--enable-avx;--enable-avx2;--enable-avx512)
elseif()
set(_fftw_simd_support_level --enable-sse2;--enable-avx;--enable-avx2)
endif()
elseif(${GMX_SIMD} MATCHES "^(VSX)")
set(_fftw_simd_support_level --enable-vsx)
endif()
Expand Down
6 changes: 3 additions & 3 deletions src/gromacs/gmxana/gmx_do_dssp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
* Copyright (c) 2012,2013,2014,2015, by the GROMACS development team, led by
* Copyright (c) 2012,2013,2014,2015,2017, 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.
Expand Down Expand Up @@ -423,8 +423,8 @@ void analyse_ss(const char *outfile, t_matrix *mat, const char *ss_string,
}
fprintf(fp, "\n");

/* now print percentages */
fprintf(fp, "%-8s %5.2f", "# SS %", total_count / static_cast<real>(mat->nx * mat->ny));
/* now print probabilities */
fprintf(fp, "%-8s %5.2f", "# SS pr.", total_count / static_cast<real>(mat->nx * mat->ny));
for (s = 0; s < static_cast<size_t>(mat->nmap); s++)
{
fprintf(fp, " %5.2f", total[s] / static_cast<real>(mat->nx * mat->ny));
Expand Down
15 changes: 8 additions & 7 deletions src/gromacs/gmxana/gmx_mindist.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
* Copyright (c) 2013,2014,2015,2016, by the GROMACS development team, led by
* Copyright (c) 2013,2014,2015,2016,2017, 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.
Expand Down Expand Up @@ -413,15 +413,16 @@ void dist_plot(const char *fn, const char *afile, const char *dfile,
sprintf(buf, "%simum Distance", bMin ? "Min" : "Max");
respertime = xvgropen(rfile, buf, output_env_get_time_label(oenv), "Distance (nm)", oenv);
xvgr_legend(respertime, ng-1, (const char**)leg, oenv);
if (bPrintResName)
if (bPrintResName && output_env_get_print_xvgr_codes(oenv) )
{
fprintf(respertime, "# ");

for (j = 0; j < nres; j++)
{
fprintf(respertime, "%s%d ", *(atoms->resinfo[atoms->atom[index[0][residue[j]]].resind].name), atoms->atom[index[0][residue[j]]].resind);
}
fprintf(respertime, "\n");
}
for (j = 0; j < nres; j++)
{
fprintf(respertime, "%s%d ", *(atoms->resinfo[atoms->atom[index[0][residue[j]]].resind].name), atoms->atom[index[0][residue[j]]].resind);
}
fprintf(respertime, "\n");

}

Expand Down
4 changes: 2 additions & 2 deletions src/gromacs/gmxana/gmx_traj.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
* Copyright (c) 2013,2014,2015,2016, by the GROMACS development team, led by
* Copyright (c) 2013,2014,2015,2016,2017, 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.
Expand Down Expand Up @@ -461,7 +461,7 @@ static void write_pdb_bfac(const char *fname, const char *xname,
svmul(scale, sum[index[i]], sum[index[i]]);
}

fp = xvgropen(xname, title, "Atom", "", oenv);
fp = xvgropen(xname, title, "Atom", "Spatial component", oenv);
for (i = 0; i < isize; i++)
{
fprintf(fp, "%-5d %10.3f %10.3f %10.3f\n", 1+i,
Expand Down
6 changes: 1 addition & 5 deletions src/gromacs/gmxana/gmx_trjconv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
* Copyright (c) 2013,2014,2015,2016, by the GROMACS development team, led by
* Copyright (c) 2013,2014,2015,2016,2017, 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.
Expand Down Expand Up @@ -665,10 +665,6 @@ int gmx_trjconv(int argc, char *argv[])
" results if you in fact have a cluster. Luckily that can be checked",
" afterwards using a trajectory viewer. Note also that if your molecules",
" are broken this will not work either.",
"",
" The separate option [TT]-clustercenter[tt] can be used to specify an",
" approximate center for the cluster. This is useful e.g. if you have",
" two big vesicles, and you want to maintain their relative positions.",
" * [TT]whole[tt] only makes broken molecules whole.",
"",

Expand Down
Loading

0 comments on commit a30561b

Please sign in to comment.