Project

General

Profile

nbnxn_sum.cpp

Berk Hess, 05/16/2019 01:52 PM

 
1
/*
2
 * This file is part of the GROMACS molecular simulation package.
3
 *
4
 * Copyright (c) 2012,2013,2014,2015,2016,2017,2018,2019, by the GROMACS development team, led by
5
 * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
6
 * and including many others, as listed in the AUTHORS file in the
7
 * top-level source directory and at http://www.gromacs.org.
8
 *
9
 * GROMACS is free software; you can redistribute it and/or
10
 * modify it under the terms of the GNU Lesser General Public License
11
 * as published by the Free Software Foundation; either version 2.1
12
 * of the License, or (at your option) any later version.
13
 *
14
 * GROMACS is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17
 * Lesser General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU Lesser General Public
20
 * License along with GROMACS; if not, see
21
 * http://www.gnu.org/licenses, or write to the Free Software Foundation,
22
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
23
 *
24
 * If you want to redistribute modifications to GROMACS, please
25
 * consider that scientific software is very special. Version
26
 * control is crucial - bugs must be traceable. We will be happy to
27
 * consider code for inclusion in the official distribution, but
28
 * derived work must not be called official GROMACS. Details are found
29
 * in the README & COPYING files - if they are missing, get the
30
 * official version at http://www.gromacs.org.
31
 *
32
 * To help us fund GROMACS development, we humbly ask that you cite
33
 * the research papers on the package. Check out http://www.gromacs.org.
34
 */
35

    
36
#include "gmxpre.h"
37

    
38
#include "gromacs/mdlib/nbnxn_pairlist.h"
39
#include "gromacs/mdlib/nbnxn_sum.h"
40

    
41
using namespace gmx; // TODO: Remove when this file is moved into gmx namespace
42

    
43
//#pragma GCC push_options
44
//#pragma GCC optimize ("O2")
45

    
46
/* This routine re-balances the pairlists such that all are nearly equally
47
 * sized. Only whole i-entries are moved between lists. These are moved
48
 * between the ends of the lists, such that the buffer reduction cost should
49
 * not change significantly.
50
 * Note that all original reduction flags are currently kept. This can lead
51
 * to reduction of parts of the force buffer that could be avoided. But since
52
 * the original lists are quite balanced, this will only give minor overhead.
53
 */
54
int sumSimpleLists(int                                  numLists,
55
                   nbnxn_pairlist_t * const * const     srcSet)
56
{
57
    int ncjTotal = 0;
58
    for (int s = 0; s < numLists; s++)
59
    {
60
        ncjTotal += srcSet[s]->ncjInUse;
61
    }
62

    
63
    return ncjTotal;
64
}
65

    
66
//#pragma GCC pop_options