/usr/include/freefoam/OpenFOAM/commSchedule.H is in libfreefoam-dev 0.1.0+dfsg-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | /*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM 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 General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::commSchedule
Description
Determines the order in which a set of processors should communicate
with one another.
The communication order should
- have maximum overlap
- allow blocking communication without deadlock
Does a very simple scheduling which assumes same time for all operations.
After construction:
- schedule() gives the order in which the input communication should occur
- procSchedule()[procI] gives per procI
Does not care whether 'talking' is first send, second receive or maybe
full swap. This is all responsability of caller. See ProcessorTopology
class for use in scheduling processor boundary swaps.
SourceFiles
commSchedule.C
\*---------------------------------------------------------------------------*/
#ifndef commSchedule_H
#define commSchedule_H
#include <OpenFOAM/DynamicList.H>
#include <OpenFOAM/labelPair.H>
#include <OpenFOAM/labelList.H>
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class commSchedule Declaration
\*---------------------------------------------------------------------------*/
class commSchedule
{
// Private data
//- Order in which input communication has been scheduled
labelList schedule_;
//- Per processor the order in which communication has been scheduled
labelListList procSchedule_;
// Private Member Functions
//- Count the number of outstanding communications for a single
// processor
label outstandingComms(const labelList&, DynamicList<label>&) const;
public:
ClassName("commSchedule");
// Constructors
//- Construct from wanted communication. Wanted communication is between
// two processors. Can be a one-way communication or
// two-way communication, that is up to the caller. This class just
// determines an order for it such that any processor is only talking
// to one other at a time. After construction:
// - schedule is the order in which comms is done.
// - procSchedule[procI] is for procI the order in which comms is done.
commSchedule(const label nProcs, const List<labelPair>& comms);
// Member Functions
//- order in which comms is scheduled
const labelList& schedule() const
{
return schedule_;
}
//- Per processor the order in which communication has been scheduled
const labelListList& procSchedule() const
{
return procSchedule_;
}
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************ vim: set sw=4 sts=4 et: ************************ //
|