1 /* -*- mode: c; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; c-file-style: "stroustrup"; -*-
4 * This source code is part of
8 * GROningen MAchine for Chemical Simulations
10 * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
11 * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
12 * Copyright (c) 2001-2012, The GROMACS development team,
13 * check out http://www.gromacs.org for more information.
15 * This program is free software; you can redistribute it and/or
16 * modify it under the terms of the GNU General Public License
17 * as published by the Free Software Foundation; either version 2
18 * of the License, or (at your option) any later version.
20 * If you want to redistribute modifications, please consider that
21 * scientific software is very special. Version control is crucial -
22 * bugs must be traceable. We will be happy to consider code for
23 * inclusion in the official distribution, but derived work must not
24 * be called official GROMACS. Details are found in the README & COPYING
25 * files - if they are missing, get the official version at www.gromacs.org.
27 * To help us fund GROMACS development, we humbly ask that you cite
28 * the papers on the package - you can find them in the top README file.
30 * For more info, check our website at http://www.gromacs.org
33 * Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
36 #ifndef GMX_OMP_NTHREADS
37 #define GMX_OMP_NTHREADS
38 #include "visibility.h"
39 #include "types/commrec.h"
42 /*! Enum values corresponding to multithreaded algorithmic modules. */
43 typedef enum module_nth
45 /* Default is meant to be used in OMP regions outside the named
46 * algorithmic modules listed below. */
47 emntDefault
, emntDomdec
, emntPairsearch
, emntNonbonded
,
48 emntBonded
, emntPME
, emntUpdate
, emntVSITE
, emntLINCS
, emntSETTLE
,
52 /*! Initializes the per-module thread count. It is compatible with tMPI,
53 * thread-safety is ensured (for the features available with tMPI).
54 * This function should caled only once during the initialization of mdrun. */
56 void gmx_omp_nthreads_init(FILE *fplog
, t_commrec
*cr
,
57 int nthreads_hw_avail
,
59 int omp_nthreads_pme_req
,
60 gmx_bool bCurrNodePMEOnly
,
61 gmx_bool bFullOmpSupport
);
63 /*! Returns the number of threads to be used in the given module m. */
65 int gmx_omp_nthreads_get(int mod
);
67 /*! Read the OMP_NUM_THREADS env. var. and check against the value set on the command line. */
69 void gmx_omp_nthreads_read_env(int *nthreads_omp
);
71 #endif /* GMX_OMP_NTHREADS */