if(GMX_THREAD_MPI)
# enable MPI functions
tmpi_enable()
- set(PKG_CFLAGS "${PKG_CFLAGS} -DGMX_THREAD_MPI")
set(GMX_MPI 1)
set(MPI_IN_PLACE_EXISTS 1)
endif()
include(gmxTestSignal)
gmx_test_sigusr1(HAVE_SIGUSR1)
-include(gmxTestInline)
-gmx_test_inline(INLINE_KEYWORD)
-
-include(gmxTestRestrict)
-gmx_test_restrict(RESTRICT_KEYWORD)
-
include(gmxTestPipes)
gmx_test_pipes(HAVE_PIPES)
+++ /dev/null
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2009,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.
-#
-# 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.
-
-# - Define macro to check inline keyword
-#
-# GMX_TEST_INLINE(VARIABLE)
-#
-# VARIABLE will be set to the keyword
-#
-# Remember to have a cmakedefine for it too...
-
-MACRO(GMX_TEST_INLINE VARIABLE)
- IF(NOT DEFINED TEST_${VARIABLE})
-
- MESSAGE(STATUS "Checking for inline keyword")
-
- FOREACH(KEYWORD "__inline__" "__inline" "inline")
- IF(NOT TEST_${VARIABLE})
- TRY_COMPILE(TEST_${VARIABLE} "${CMAKE_BINARY_DIR}"
- "${CMAKE_SOURCE_DIR}/cmake/TestInline.c"
- COMPILE_DEFINITIONS "-DTESTINLINEDEF=${KEYWORD}" )
- SET(LAST_INLINE_KEYWORD ${KEYWORD})
- ENDIF()
- ENDFOREACH(KEYWORD)
-
- IF(TEST_${VARIABLE})
- SET(${VARIABLE} ${LAST_INLINE_KEYWORD} CACHE INTERNAL "Inline keyword" FORCE)
- MESSAGE(STATUS "Checking for inline keyword - ${LAST_INLINE_KEYWORD}")
- ELSE()
- SET(${VARIABLE} " " CACHE INTERNAL "Inline keyword" FORCE)
- MESSAGE(STATUS "Checking for inline keyword - not found")
- ENDIF()
-
- ENDIF()
-ENDMACRO(GMX_TEST_INLINE VARIABLE)
+++ /dev/null
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2010,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.
-#
-# 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.
-
-# - Define macro to check restrict keyword
-#
-# GMX_TEST_RESTRICT(VARIABLE)
-#
-# VARIABLE will be set to the keyword
-#
-# Remember to have a cmakedefine for it too...
-
-MACRO(GMX_TEST_RESTRICT VARIABLE)
- IF(NOT DEFINED TEST_${VARIABLE})
-
- MESSAGE(STATUS "Checking for restrict keyword")
-
-# Start with __restrict__, since that is the C++ default keyword.
- FOREACH(KEYWORD "__restrict__" "__restrict" "restrict")
- IF(NOT TEST_${VARIABLE})
- TRY_COMPILE(TEST_${VARIABLE} "${CMAKE_BINARY_DIR}"
- "${CMAKE_SOURCE_DIR}/cmake/TestRestrict.c"
- COMPILE_DEFINITIONS "-DTESTRESTRICTDEF=${KEYWORD}" )
- SET(LAST_RESTRICT_KEYWORD ${KEYWORD})
- ENDIF()
- ENDFOREACH(KEYWORD)
-
- IF(TEST_${VARIABLE})
- SET(${VARIABLE} ${LAST_RESTRICT_KEYWORD} CACHE INTERNAL "Restrict keyword" FORCE)
- MESSAGE(STATUS "Checking for restrict keyword - ${LAST_RESTRICT_KEYWORD}")
- ELSE()
- SET(${VARIABLE} " " CACHE INTERNAL "Restrict keyword" FORCE)
- MESSAGE(STATUS "Checking for restrict keyword - not found")
- ENDIF()
-
- ENDIF()
-ENDMACRO(GMX_TEST_RESTRICT VARIABLE)
/* Some systems requires this to be set to 64 for large file support */
#cmakedefine _FILE_OFFSET_BITS @_FILE_OFFSET_BITS@
-/* Define to __inline__ or __inline if that is what the C compiler
- calls it, or to nothing if inline is not supported under any name.
- Please do NOT remove the gmx_inline keyword from here. The classical
- C++ inline keyword is merely a recommendation to the compiler, and
- many compilers support stronger alternatives (e.g. __forceinline)
- that we might want to use. */
-#define gmx_inline ${INLINE_KEYWORD}
-
-/* Define to __restrict__ or __restrict if that is what the C compiler
- calls it, unless we are on C99 when it is simply called restrict.
- Since restrict is a reserved key word in C99 we are not allowed to
- redefine the word itself, so call this gmx_restrict to avoid having
- to identify the language standard level. If it is not supported, it
- is still defined to an empty string here. */
-#define gmx_restrict ${RESTRICT_KEYWORD}
/* Build special-purpose mdrun library */
#cmakedefine GMX_FAHCORE
#include <config.h>
#endif
-#ifdef __cplusplus
-extern "C" {
-#endif
-
#ifdef NOGMX
/*#define GMX_MPI*/
/*#define GMX_FFT_FFTW3*/
#endif
#ifdef NOGMX
+#ifdef __cplusplus
+extern "C" {
+#endif
struct fft5d_time_t {
double fft, local, mpi1, mpi2;
};
typedef struct fft5d_time_t *fft5d_time;
#else
#include "gromacs/timing/wallcycle.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
typedef gmx_wallcycle_t fft5d_time;
#endif
#ifndef GMX_FILEIO_FILENM_H
#define GMX_FILEIO_FILENM_H
-#include "../legacyheaders/types/simple.h"
-#include "../legacyheaders/types/commrec.h"
+#include "../legacyheaders/typedefs.h"
#ifdef __cplusplus
extern "C" {
#endif
#include "gromacs/legacyheaders/gmx_fatal.h"
+#include "gromacs/legacyheaders/types/commrec.h"
#include "gromacs/legacyheaders/network.h"
#include "gromacs/legacyheaders/smalloc.h"
#include "gromacs/legacyheaders/string2.h"
#include <stdio.h>
#include "../legacyheaders/typedefs.h"
-#include "../legacyheaders/types/commrec.h"
#ifdef __cplusplus
extern "C" {
#include "gromacs/legacyheaders/xvgr.h"
#include "gromacs/legacyheaders/mdrun.h"
#include "gromacs/legacyheaders/smalloc.h"
+#include "gromacs/legacyheaders/types/commrec.h"
#include "gromacs/legacyheaders/mvdata.h"
#include "gromacs/legacyheaders/domdec.h"
#include "trnio.h"
#include <stdio.h>
#include "filenm.h"
#include "mdoutf.h"
-#include "../legacyheaders/types/simple.h"
-#include "../legacyheaders/types/commrec.h"
+#include "../legacyheaders/typedefs.h"
#include "../legacyheaders/mdebin.h"
/*! \brief Wrapper routine for writing trajectories during mdrun
#include "gromacs/commandline/pargs.h"
#include "typedefs.h"
+#include "types/commrec.h"
#include "smalloc.h"
#include "vec.h"
#include "copyrite.h"
#include "gromacs/commandline/pargs.h"
#include "typedefs.h"
+#include "types/commrec.h"
#include "smalloc.h"
#include "vec.h"
#include "copyrite.h"
#include "copyrite.h"
#include "names.h"
#include "typedefs.h"
+#include "types/commrec.h"
#include "smalloc.h"
#include "txtdump.h"
#include "vec.h"
#include <math.h>
#include "typedefs.h"
+#include "types/commrec.h"
#include "sysstuff.h"
#include "smalloc.h"
#include "macros.h"
#include <math.h>
#include "gromacs/math/utilities.h"
#include "typedefs.h"
+#include "types/commrec.h"
#include "vec.h"
#include "coulomb.h"
#include "smalloc.h"
#include <string.h>
#include "main.h"
+#include "types/commrec.h"
#include "network.h"
#include "gmx_fatal.h"
#include "copyrite.h"
#endif
#include "smalloc.h"
+#include "types/commrec.h"
#include "gmx_fatal.h"
#include "network.h"
#include "main.h"
#include "typedefs.h"
#include "main.h"
#include "mvdata.h"
+#include "types/commrec.h"
#include "network.h"
#include "smalloc.h"
#include "gmx_fatal.h"
*
* 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.
#include "gmx_fatal.h"
#include "main.h"
#include "smalloc.h"
+#include "types/commrec.h"
#include "network.h"
#include "copyrite.h"
#include <ctype.h>
#ifdef GMX_MPI
-void gmx_sumd_comm(int nr, double r[], MPI_Comm mpi_comm)
+static void gmx_sumd_comm(int nr, double r[], MPI_Comm mpi_comm)
{
#if defined(MPI_IN_PLACE_EXISTS)
MPI_Allreduce(MPI_IN_PLACE, r, nr, MPI_DOUBLE, MPI_SUM, mpi_comm);
#endif
#ifdef GMX_MPI
-void gmx_sumf_comm(int nr, float r[], MPI_Comm mpi_comm)
+static void gmx_sumf_comm(int nr, float r[], MPI_Comm mpi_comm)
{
#if defined(MPI_IN_PLACE_EXISTS)
MPI_Allreduce(MPI_IN_PLACE, r, nr, MPI_FLOAT, MPI_SUM, mpi_comm);
#include "smalloc.h"
#include "vec.h"
#include "nrjac.h"
+#include "types/commrec.h"
#include "network.h"
#include "orires.h"
#include "do_fit.h"
#include "sysstuff.h"
#include "typedefs.h"
+#include "types/commrec.h"
#include "vec.h"
#include "gromacs/math/utilities.h"
#include "main.h"
#include <stdio.h>
#include "smalloc.h"
#include "typedefs.h"
+#include "types/commrec.h"
#include "names.h"
#include "txtdump.h"
#include "string2.h"
#include "vec.h"
#include "macros.h"
#include "smalloc.h"
+#include "types/commrec.h"
#include "force.h"
#include "names.h"
#include "nsgrid.h"
#
# This file is part of the GROMACS molecular simulation package.
#
-# Copyright (c) 2009,2010,2012,2013, by the GROMACS development team, led by
+# Copyright (c) 2009,2010,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.
# the research papers on the package. Check out http://www.gromacs.org.
# includes: Nothing to build, just installation
-file(GLOB ROOT_LEGACY_HEADERS *.h)
-file(GLOB THREAD_MPI_LEGACY_HEADERS thread_mpi/*.h)
-file(GLOB THREAD_MPI_ATOMIC_LEGACY_HEADERS thread_mpi/atomic/*.h)
-file(GLOB TYPES_LEGACY_HEADERS types/*.h)
+file(GLOB ROOT_LEGACY_HEADERS *.h)
+file(GLOB ROOT_LEGACY_HEADERS_PRIVATE thread_mpi.h tmpi.h gmx_hash.h
+ gmx_ga2la.h gpu_utils.h pmalloc_cuda.h nbnxn_cuda_data_mgmt.h)
+file(GLOB TYPES_LEGACY_HEADERS types/*.h)
+file(GLOB TYPES_LEGACY_HEADERS_PRIVATE types/commrec.h)
+list(REMOVE_ITEM ROOT_LEGACY_HEADERS ${ROOT_LEGACY_HEADERS_PRIVATE})
+list(REMOVE_ITEM TYPES_LEGACY_HEADERS ${TYPES_LEGACY_HEADERS_PRIVATE})
gmx_install_headers(legacyheaders ${ROOT_LEGACY_HEADERS})
-gmx_install_headers(legacyheaders/thread_mpi ${THREAD_MPI_LEGACY_HEADERS})
-gmx_install_headers(legacyheaders/thread_mpi/atomic ${THREAD_MPI_ATOMIC_LEGACY_HEADERS})
gmx_install_headers(legacyheaders/types ${TYPES_LEGACY_HEADERS})
*
* 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.
#ifndef _constr_h
#define _constr_h
#include "typedefs.h"
-#include "types/commrec.h"
#ifdef __cplusplus
extern "C" {
*
* 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.
#include <stdio.h>
#include "typedefs.h"
-#include "types/commrec.h"
#ifdef __cplusplus
extern "C" {
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2005,2006,2007,2008,2009,2010,2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2005,2006,2007,2008,2009,2010,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.
#define _domdec_h
#include "typedefs.h"
-#include "types/commrec.h"
#include "vsite.h"
#include "genborn.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2008,2009,2010,2012, by the GROMACS development team, led by
+ * Copyright (c) 2008,2009,2010,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.
#define _domdec_network_h
#include "typedefs.h"
-#include "types/commrec.h"
#ifdef __cplusplus
extern "C" {
#define _genborn_h
#include "typedefs.h"
-#include "types/commrec.h"
#ifdef __cplusplus
extern "C" {
/*
* 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.
#ifndef GMX_HARDWARE_DETECT_H
#define GMX_HARDWARE_DETECT_H
-#include "types/hw_info.h"
+#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
/* the init and consistency functions depend on commrec that may not be
consistent in cuda because MPI types don't exist there. */
#ifndef __CUDACC__
-#include "types/commrec.h"
/* return a pointer to a global hwinfo structure. */
gmx_hw_info_t *gmx_detect_hardware(FILE *fplog, const t_commrec *cr,
gmx_bool bDetectGPUs);
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2012, 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.
#ifndef _fatal_collective_h
#define _fatal_collective_h
-#include "types/simple.h"
-#include "types/commrec.h"
+#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2010, by the GROMACS development team, led by
+ * Copyright (c) 2010,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.
#define _gmx_ga2la_h
#include "typedefs.h"
+#include "types/commrec.h"
#include "smalloc.h"
#ifdef __cplusplus
/*
* This file is part of the GROMACS molecular simulation package.
*
- * 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.
#include "typedefs.h"
#include "smalloc.h"
+#include "gmx_fatal.h"
#ifdef __cplusplus
extern "C" {
/*
* 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.
#ifndef GMX_OMP_NTHREADS
#define GMX_OMP_NTHREADS
-#include "types/commrec.h"
+#include <stdio.h>
+#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
/*
* 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.
*/
#ifndef GMX_THREAD_AFFINITY_H_
#define GMX_THREAD_AFFINITY_H_
-#include "types/commrec.h"
#include "typedefs.h"
#ifdef __cplusplus
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2010, The GROMACS development team.
- * 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.
#ifndef _GPU_UTILS_H_
#define _GPU_UTILS_H_
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
#include "types/simple.h"
#include "types/hw_info.h"
*
* 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.
#include <stdio.h>
+#include "typedefs.h"
#include "network.h"
#include "../fileio/filenm.h"
*
* 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.
#ifndef _md_logging_h
#define _md_logging_h
-#include "types/commrec.h"
+#include <stdio.h>
+#include "typedefs.h"
#ifdef __cplusplus
extern "C" {
#include "types/membedt.h"
#include "types/globsig.h"
-#include "thread_mpi/threads.h"
-
#ifdef __cplusplus
extern "C" {
#endif
ddnoSEL, ddnoINTERLEAVE, ddnoPP_PME, ddnoCARTESIAN, ddnoNR
};
-/* Variables for temporary use with the deform option,
- * used in runner.c and md.c.
- * (These variables should be stored in the tpx file.)
- */
-extern gmx_int64_t deform_init_init_step_tpx;
-extern matrix deform_init_box_tpx;
-extern tMPI_Thread_mutex_t deform_init_box_mutex;
-
-#ifdef GMX_THREAD_MPI
-/* The minimum number of atoms per tMPI thread. With fewer atoms than this,
- * the number of threads will get lowered.
- */
-#define MIN_ATOMS_PER_MPI_THREAD 90
-#define MIN_ATOMS_PER_GPU 900
-#endif
-
-
typedef double gmx_integrator_t (FILE *log, t_commrec *cr,
int nfile, const t_filenm fnm[],
const output_env_t oenv, gmx_bool bVerbose,
#define _mvdata_h
#include "typedefs.h"
-#include "types/commrec.h"
#ifdef __cplusplus
extern "C" {
/*
* 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.
#include "types/interaction_const.h"
#include "types/nbnxn_cuda_types_ext.h"
#include "types/hw_info.h"
+#include "types/nb_verlet.h"
#ifdef GMX_GPU
#define FUNC_TERM ;
*
* 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.
#include <stdio.h>
#include "types/simple.h"
-#include "types/commrec.h"
#include "typedefs.h"
#include "main.h"
#include "gmx_fatal.h"
void gmx_sumd(int nr, double r[], const t_commrec *cr);
/* Calculate the global sum of an array of doubles */
-void gmx_sumf_comm(int nr, float r[], MPI_Comm mpi_comm);
-/* Calculate the global sum of an array of floats */
-
-void gmx_sumd_comm(int nr, double r[], MPI_Comm mpi_comm);
-/* Calculate the global sum of an array of doubles */
-
void gmx_sumi_sim(int nr, int r[], const gmx_multisim_t *ms);
/* Calculate the sum over the simulations of an array of ints */
/* Abort the parallel run */
#ifdef GMX_DOUBLE
-#define gmx_sum_comm gmx_sumd_comm
#define gmx_sum gmx_sumd
#define gmx_sum_sim gmx_sumd_sim
#else
-#define gmx_sum_comm gmx_sumf_comm
#define gmx_sum gmx_sumf
#define gmx_sum_sim gmx_sumf_sim
#endif
*
* 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.
#define _nrnb_h
#include "typedefs.h"
-#include "types/commrec.h"
#ifdef __cplusplus
extern "C" {
*
* 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.
#include "sysstuff.h"
#include "typedefs.h"
-#include "types/commrec.h"
#ifdef __cplusplus
extern "C" {
/*
* 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.
#ifndef PMALLOC_CUDA_H
#define PMALLOC_CUDA_H
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdlib.h>
#include "types/simple.h"
#ifdef GMX_GPU
/*
* This file is part of the GROMACS molecular simulation package.
*
- * 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.
#ifndef _tables_h
#define _tables_h
-
+#include "types/simple.h"
#ifdef __cplusplus
extern "C" {
real max_cutoff(real cutoff1, real cutoff2);
/* Returns the maximum of the cut-off's, taking into account that 0=inf. */
+/* Following are forward declarations for structures in commrec.h */
+typedef struct t_commrec t_commrec;
+typedef struct gmx_domdec_t gmx_domdec_t;
+typedef struct gmx_multisim_t gmx_multisim_t;
+typedef struct gmx_domdec_zones_t gmx_domdec_zones_t;
+typedef struct gmx_ddbox_t gmx_ddbox_t;
+
#ifdef __cplusplus
}
#endif
#define _commrec_h
#include "../../utility/gmxmpi.h"
+#include "../typedefs.h"
#include "idef.h"
#ifdef __cplusplus
rvec bb_x1; /* Zone bounding box upper corner in Cartesian coords */
} gmx_domdec_zone_size_t;
-typedef struct {
+struct gmx_domdec_zones_t {
/* The number of zones including the home zone */
int n;
/* The shift of the zones with respect to the home zone */
gmx_domdec_zone_size_t size[DD_MAXZONE];
/* The cg density of the home zone */
real dens_zone0;
-} gmx_domdec_zones_t;
+};
typedef struct gmx_ga2la *gmx_ga2la_t;
typedef struct gmx_pme_comm_n_box *gmx_pme_comm_n_box_p_t;
-typedef struct {
+struct gmx_ddbox_t {
int npbcdim;
int nboundeddim;
rvec box0;
rvec v[DIM][DIM];
/* Normal vectors for the cells walls */
rvec normal[DIM];
-} gmx_ddbox_t;
+};
typedef struct {
} mpi_in_place_buf_t;
-typedef struct {
+struct gmx_domdec_t {
/* The DD particle-particle nodes only */
/* The communication setup within the communicator all
* defined in dd->comm in domdec.c
int pme_recv_f_alloc;
rvec *pme_recv_f_buf;
-} gmx_domdec_t;
+};
-typedef struct {
+struct gmx_multisim_t {
int nsim;
int sim;
MPI_Group mpi_group_masters;
/* these buffers are used as destination buffers if MPI_IN_PLACE isn't
supported.*/
mpi_in_place_buf_t *mpb;
-} gmx_multisim_t;
+};
#define DUTY_PP (1<<0)
#define DUTY_PME (1<<1)
} gmx_nodecomm_t;
-typedef struct {
+struct t_commrec {
/* The nodeids in one sim are numbered sequentially from 0.
* All communication within some simulation should happen
* in mpi_comm_mysim, or its subset mpi_comm_mygroup.
/* these buffers are used as destination buffers if MPI_IN_PLACE isn't
supported.*/
mpi_in_place_buf_t *mpb;
-} t_commrec;
+};
#define MASTERNODE(cr) (((cr)->nodeid == 0) || !PAR(cr))
/* #define MASTERTHREAD(cr) ((cr)->threadid == 0) */
#include "simple.h"
#include "enums.h"
#include "../sysstuff.h"
-#include "gromacs/swap/enums.h"
+#include "../../swap/enums.h"
#ifdef __cplusplus
extern "C" {
#ifndef _nbnxn_pairlist_h
#define _nbnxn_pairlist_h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
#include "nblist.h"
-#include "../thread_mpi/atomic.h"
-
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
int cj; /* The j-cluster */
unsigned int excl; /* The exclusion (interaction) bits */
-#ifdef GMX_SIMD_IBM_QPX
/* Indices into the arrays of SIMD interaction masks. */
char interaction_mask_indices[4];
-#endif
} nbnxn_cj_t;
/* In nbnxn_ci_t the integer shift contains the shift in the lower 7 bits.
ljcrGEOM, ljcrLB, ljcrNONE, ljcrNR
};
+/* TODO: Remove need for forward declare */
+struct tMPI_Atomic;
+
typedef struct {
nbnxn_alloc_t *alloc;
nbnxn_free_t *free;
*/
unsigned int *simd_exclusion_filter1;
unsigned int *simd_exclusion_filter2;
-#ifdef GMX_SIMD_IBM_QPX
real *simd_interaction_array; /* Array of masks needed for exclusions on QPX */
-#endif
int nout; /* The number of force arrays */
nbnxn_atomdata_output_t *out; /* Output data structures */
int nalloc; /* Allocation size of all arrays (for x/f *x/fstride) */
gmx_bool bUseBufferFlags; /* Use the flags or operate on all atoms */
nbnxn_buffer_flags_t buffer_flags; /* Flags for buffer zeroing+reduc. */
gmx_bool bUseTreeReduce; /* Use tree for force reduction */
- tMPI_Atomic_t *syncStep; /* Synchronization step for tree reduce */
+ struct tMPI_Atomic *syncStep; /* Synchronization step for tree reduce */
} nbnxn_atomdata_t;
#ifdef __cplusplus
#ifndef _simple_h
#define _simple_h
-/* Dont remove this instance of HAVE_CONFIG_H!!!
- *
- * We dont _require_ config.h here, but IF one is
- * available it might contain valuable information about simple types
- * that helps us automate things better and avoid bailing out.
- *
- * Note that this does not have to be the gromacs config.h - several
- * package setups define these simple types.
- */
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
/* Information about integer data type sizes */
#include <limits.h>
#define __STDC_LIMIT_MACROS
#define GMX_UINT64_MAX UINT64_MAX
#define GMX_UINT64_MIN UINT64_MIN
-#ifndef gmx_inline
-/* config.h tests for inline definitions and should work on a much wider range
- * of compilers, but does not work with installed headers. These compiler checks
- * still enable a real inline keyword for the most common compilers.
- */
-
-/* Try to define suitable inline keyword for gmx_inline.
- * Set it to empty if we cannot find one (and dont complain to the user)
- */
-#ifndef __cplusplus
-
-#ifdef __GNUC__
-/* GCC */
-# define gmx_inline __inline__
-#elif (defined(__INTEL_COMPILER) || defined(__ECC)) && defined(__ia64__)
-/* ICC */
-# define gmx_inline __inline__
-#elif defined(__PATHSCALE__)
-/* Pathscale */
-# define gmx_inline __inline__
-#elif defined(__PGIC__)
-/* Portland */
-# define gmx_inline __inline
-#elif defined _MSC_VER
-/* MSVC */
-# define gmx_inline __inline
-#elif defined(__xlC__)
-/* IBM */
-# define gmx_inline __inline
-#else
-# define gmx_inline
-#endif
-
+#if !defined __cplusplus && _MSC_VER
+#define gmx_inline __inline
#else
-/* C++ */
-# define gmx_inline inline
+/* C++ or C99 */
+#define gmx_inline inline
#endif
-#endif /* ifndef gmx_inline */
-
-
-/* Restrict keywords. Note that this has to be done for C++ too, unless
- * it was set from the more general checks if we had config.h (gmx internal)
- */
-#ifndef gmx_restrict
-
-#ifdef __GNUC__
-/* GCC */
-# define gmx_restrict __restrict__
-#elif (defined(__INTEL_COMPILER) || defined(__ECC)) && defined(__ia64__)
-/* ICC */
-# define gmx_restrict __restrict__
-#elif defined(__PATHSCALE__)
-/* Pathscale */
-# define gmx_restrict __restrict
-#elif defined(__PGIC__)
-/* Portland */
-# define gmx_restrict __restrict
-#elif defined _MSC_VER
-/* MSVC */
-# define gmx_restrict __restrict
-#elif defined(__xlC__)
-/* IBM */
-# define gmx_restrict __restrict
-#else
-# define gmx_restrict
-#endif
-
-#endif
+/* ICC, GCC, MSVC, Pathscale, PGI, XLC support __restrict.
+ * Any other compiler can be added here. We cannot
+ * use restrict because it is in C99 but not in C++ */
+#define gmx_restrict __restrict
/*
* These attributes suppress compiler warnings about unused function arguments
#include "simple.h"
-#include "gromacs/swap/enums.h"
+#include "../../swap/enums.h"
#ifdef __cplusplus
extern "C" {
real trace(matrix m) = trace(m)
*/
+/* The file only depends on config.h for GMX_SOFTWARE_INVSQRT and
+ HAVE_*SQRT*. This is no problem with public headers because
+ it is OK if user code uses a different rsqrt implementation */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
#include "types/simple.h"
#include "../math/utilities.h"
#include "typedefs.h"
#include <stdio.h>
#include "typedefs.h"
-#include "types/commrec.h"
#ifdef __cplusplus
extern "C" {
gmxcomplex.h
utilities.h
)
-gmx_install_headers(maths ${MATH_PUBLIC_HEADERS})
+gmx_install_headers(math ${MATH_PUBLIC_HEADERS})
if (BUILD_TESTING)
# add_subdirectory(tests)
#endif
#include "gromacs/fileio/confio.h"
+#include "types/commrec.h"
#include "constr.h"
#include "copyrite.h"
#include "invblock.h"
#include <assert.h>
#include "typedefs.h"
+#include "types/commrec.h"
#include "smalloc.h"
#include "update.h"
#include "vec.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2009,2010, by the GROMACS development team, led by
+ * Copyright (c) 2009,2010,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.
#include "typedefs.h"
#include "vec.h"
#include "pbc.h"
+#include "types/commrec.h"
#include "domdec.h"
#include "domdec_network.h"
#include "nsgrid.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2006,2007,2008,2009,2010,2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2006,2007,2008,2009,2010,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.
#include "smalloc.h"
#include "vec.h"
#include "constr.h"
+#include "types/commrec.h"
#include "domdec.h"
#include "domdec_network.h"
#include "mtop_util.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2008,2009,2010,2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2008,2009,2010,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.
#endif
#include <string.h>
+#include "types/commrec.h"
#include "domdec_network.h"
#include "gromacs/utility/gmxmpi.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2008,2009,2010,2011,2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2008,2009,2010,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.
#include <stdio.h>
#include <assert.h>
#include "domdec.h"
+#include "types/commrec.h"
#include "network.h"
#include "perf_est.h"
#include "physics.h"
#include <string.h>
#include "typedefs.h"
#include "smalloc.h"
+#include "types/commrec.h"
#include "domdec.h"
#include "domdec_network.h"
#include "names.h"
#include <stdio.h>
#include <math.h>
#include "typedefs.h"
+#include "types/commrec.h"
#include "vec.h"
#include "smalloc.h"
#include "gmx_fatal.h"
#include <assert.h>
#include "sysstuff.h"
#include "typedefs.h"
+#include "types/commrec.h"
#include "vec.h"
#include "gromacs/math/utilities.h"
#include "macros.h"
#include <string.h>
#include "typedefs.h"
+#include "types/commrec.h"
#include "smalloc.h"
#include "genborn.h"
#include "vec.h"
#include "nbnxn_search.h"
#include "gromacs/utility/gmxomp.h"
#include "gmx_omp_nthreads.h"
+#include "thread_mpi/atomic.h"
/* Default nbnxn allocation routine, allocates NBNXN_MEM_ALIGN byte aligned */
void nbnxn_alloc_aligned(void **ptr, size_t nbytes)
* To help us fund GROMACS development, we humbly ask that you cite
* the research papers on the package. Check out http://www.gromacs.org.
*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
#include <stdlib.h>
#include <assert.h>
/*
* 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.
#ifndef NBNXN_CUDA_H
#define NBNXN_CUDA_H
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
#include "types/nbnxn_cuda_types_ext.h"
#include "types/simple.h"
#include "sysstuff.h"
#include "smalloc.h"
+#include "types/commrec.h"
#include "macros.h"
#include "gromacs/math/utilities.h"
#include "vec.h"
#include "macros.h"
#include "gromacs/math/utilities.h"
#include "vec.h"
+#include "types/commrec.h"
#include "network.h"
#include "nsgrid.h"
#include "force.h"
#include <string.h>
#include <math.h>
#include "typedefs.h"
+#include "types/commrec.h"
#include "smalloc.h"
#include "gmx_fatal.h"
#include "vec.h"
*
* 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.
#include <math.h>
#include "sysstuff.h"
#include "typedefs.h"
+#include "types/commrec.h"
#include "macros.h"
#include "smalloc.h"
#include "physics.h"
#include <string.h>
#include "typedefs.h"
+#include "types/commrec.h"
#include "smalloc.h"
#include "gmx_fatal.h"
#include "vec.h"
#include <string.h>
#include <stdio.h>
#include "typedefs.h"
+#include "types/commrec.h"
#include "sysstuff.h"
#include "gmx_fatal.h"
#include "network.h"
*
* 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.
#include "string2.h"
#include "force.h"
#include "smalloc.h"
+#include "types/commrec.h"
#include "ns.h"
#include "nrnb.h"
#include "gmx_fatal.h"
#include "gromacs/fileio/gmxfio.h"
#include "vec.h"
#include "typedefs.h"
+#include "types/commrec.h"
#include "network.h"
#include "gromacs/fileio/filenm.h"
#include <string.h>
#include "vec.h"
#include "smalloc.h"
#include "typedefs.h"
+#include "types/commrec.h"
#include "names.h"
#include "gmx_fatal.h"
#include "macros.h"
flags.h
gmx_header_config.h
gmxassert.h
- gmxmpi.h
init.h
programcontext.h
stringutil.h
/*
* This file is part of the GROMACS molecular simulation package.
*
- * 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.
* \ingroup module_utility
*/
-/** Detect Cygwin */
-#cmakedefine GMX_CYGWIN
+#ifdef __CYGWIN__
+#define GMX_CYGWIN
+#endif
-/** Detect native (i.e. non-Cygwin) Windows */
-#cmakedefine GMX_NATIVE_WINDOWS
+/* We currently don't support MingW. And ICC also defines it */
+#ifdef _MSC_VER
+#define GMX_NATIVE_WINDOWS
+#endif
/** Define if we have sufficient C++11 support */
#cmakedefine GMX_CXX11
#ifndef GMX_UTILITY_GMXMPI_H
#define GMX_UTILITY_GMXMPI_H
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
/*! \cond */
#ifdef GMX_LIB_MPI
/* MPI C++ binding is deprecated and can cause name conflicts (e.g. stdio/mpi seek) */
#include "config.h"
#endif
+#ifndef GMX_NATIVE_WINDOWS
/* Ugly hack because the openmp implementation below hacks into the SIMD
* settings to decide when to use _mm_pause(). This should eventually be
* changed into proper detection of the intrinsics uses, not SIMD.
(defined GMX_SIMD_X86_AVX2_256)
# include <xmmintrin.h>
#endif
+#else
+#include <windows.h>
+#endif
#include "types/commrec.h"
#include "mdrun.h"
*/
static gmx_inline void gmx_pause()
{
+#ifndef GMX_NATIVE_WINDOWS
/* Ugly hack because the openmp implementation below hacks into the SIMD
* settings to decide when to use _mm_pause(). This should eventually be
* changed into proper detection of the intrinsics uses, not SIMD.
#else
/* No wait for unknown architecture */
#endif
+#else
+ YieldProcessor();
+#endif
}
/*! \} */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 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.
+ */
+
+#ifndef GMX_MDRUN_DEFORM_H
+#define GMX_MDRUN_DEFORM_H
+
+#include "thread_mpi/threads.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Variables for temporary use with the deform option,
+ * used in runner.c and md.c.
+ * (These variables should be stored in the tpx file.)
+ */
+extern gmx_int64_t deform_init_init_step_tpx;
+extern matrix deform_init_box_tpx;
+extern tMPI_Thread_mutex_t deform_init_box_mutex;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
#include "pme.h"
#include "mdatoms.h"
#include "repl_ex.h"
+#include "deform.h"
#include "qmmm.h"
#include "domdec.h"
#include "domdec_network.h"
#include "gromacs/legacyheaders/network.h"
#include "gromacs/legacyheaders/readinp.h"
#include "gromacs/legacyheaders/typedefs.h"
+#include "gromacs/legacyheaders/types/commrec.h"
#include "gromacs/commandline/pargs.h"
#include "gromacs/fileio/filenm.h"
#include <signal.h>
#include <stdlib.h>
#include "typedefs.h"
+#include "types/commrec.h"
#include "smalloc.h"
#include "sysstuff.h"
#include "vec.h"
#endif
#include "smalloc.h"
+#include "types/commrec.h"
#include "network.h"
#include "calcgrid.h"
#include "pme.h"
#include "pme.h"
#include "mdatoms.h"
#include "repl_ex.h"
+#include "deform.h"
#include "qmmm.h"
#include "domdec.h"
#include "coulomb.h"
#ifdef GMX_THREAD_MPI
+/* The minimum number of atoms per tMPI thread. With fewer atoms than this,
+ * the number of threads will get lowered.
+ */
+#define MIN_ATOMS_PER_MPI_THREAD 90
+#define MIN_ATOMS_PER_GPU 900
+
struct mdrunner_arglist
{
gmx_hw_opt_t hw_opt;