added Verlet scheme and NxN non-bonded functionality
[gromacs.git] / include / gmx_omp_nthreads.h
blob5ab8252ffde877a1ce6ed91b2fd4a86641a305f6
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
6 * G R O M A C S
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
32 * And Hey:
33 * Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
36 #ifndef GMX_OMP_NTHREADS
37 #define GMX_OMP_NTHREADS
39 /*! Enum values corresponding to multithreaded algorithmic modules. */
40 typedef enum module_nth
42 /* Default is meant to be used in OMP regions outside the named
43 * algorithmic modules listed below. */
44 emntDefault, emntDomdec, emntPairsearch, emntNonbonded,
45 emntBonded, emntPME, emntUpdate, emntLINCS, emntSETTLE,
46 emntNR
47 } module_nth_t;
49 /*! Initializes the per-module thread count. It is compatible with tMPI,
50 * thread-safety is ensured (for the features available with tMPI).
51 * This function should caled only once during the initialization of mdrun. */
52 void gmx_omp_nthreads_init(FILE *fplog, t_commrec *cr,
53 int nthreads_hw_avail,
54 int omp_nthreads_req,
55 int omp_nthreads_pme_req,
56 gmx_bool bCurrNodePMEOnly,
57 gmx_bool bFullOmpSupport);
59 /*! Returns the number of threads to be used in the given module m. */
60 int gmx_omp_nthreads_get(int mod);
62 /*! Read the OMP_NUM_THREADS env. var. and check against the value set on the command line. */
63 void gmx_omp_nthreads_read_env(int *nthreads_omp);
65 #endif /* GMX_OMP_NTHREADS */