20 #ifndef __PLAYGROUND_HXX__
21 #define __PLAYGROUND_HXX__
42 Resource(
const std::string& name,
int nbCores):_name(name),_nbCores(nbCores),_occupied(_nbCores,false) { }
43 Resource(
const std::pair<std::string,int>&
p):_name(
p.first),_nbCores(
p.second),_occupied(_nbCores,false) { }
44 std::pair<std::string,int>
toPair()
const {
return {_name,_nbCores}; }
46 std::string
name()
const {
return _name; }
47 std::size_t getNumberOfFreePlace(
int nbCoresPerCont)
const;
48 std::vector<std::size_t> allocateFor(std::size_t& nbOfPlacesToTake,
int nbCoresPerCont)
const;
49 void release(std::size_t workerId,
int nbCoresPerCont)
const;
50 std::size_t getNumberOfWorkers(
int nbCoresPerCont)
const;
51 void printSelf(std::ostream& oss)
const;
60 std::input_iterator_tag,
64 std::pair<std::string,int> >
66 const std::vector< Resource > *
_vec;
79 PlayGround(
const std::vector< std::pair<std::string,int> >& defOfRes):_data(defOfRes.begin(),defOfRes.end()) { checkCoherentInfo(); }
81 std::string printSelf()
const;
82 void loadFromKernelCatalog();
84 void setData(
const std::vector< std::pair<std::string,int> >& defOfRes);
85 int getNumberOfCoresAvailable()
const;
86 int getMaxNumberOfContainersCanBeHostedWithoutOverlap(
int nbCoresPerCont)
const;
87 std::vector<int> computeOffsets()
const;
88 std::vector< YACS::BASES::AutoRefCnt<PartDefinition> > partition(
const std::vector< std::pair<const PartDefinition *, const ComplexWeight *> >& parts,
const std::vector<int> &nbCoresPerShot)
const;
89 int fromWorkerIdToResId(
int workerId,
int nbProcPerNode)
const;
90 std::string deduceMachineFrom(
int workerId,
int nbProcPerNode)
const;
91 int getNumberOfWorkers(
int nbCoresPerWorker)
const;
92 void highlightOnIds(
const std::vector<int>& coreIds, std::vector<bool>& v)
const;
94 std::vector<std::size_t> getWorkerIdsFullyFetchedBy(
int nbCoresPerComp,
const std::vector<bool>& coreFlags)
const;
95 static std::vector<int> BuildVectOfIdsFromVecBool(
const std::vector<bool>& v);
96 static std::vector<int> GetIdsMatching(
const std::vector<bool>& bigArr,
const std::vector<bool>& pat);
98 std::size_t getNumberOfFreePlace(
int nbCoresPerCont)
const;
99 std::vector<std::size_t> allocateFor(std::size_t nbOfPlacesToTake,
int nbCoresPerCont)
const;
100 void release(std::size_t workerId,
int nbCoresPerCont)
const;
102 void printMe()
const;
104 std::vector< std::pair <const ComplexWeight *, int> > bigToTiny(
const std::vector< std::pair <const ComplexWeight *, int> > &weights, std::map<int,int> &saveOrder)
const;
105 std::vector< std::vector<int> > backToOriginalOrder(
const std::vector< std::vector<int> > &disorderVec,
const std::map<int,int> &saveOrder)
const;
106 int getCriticalPath(
const std::vector<std::pair <const ComplexWeight *, int > >& weights,
const std::vector<int>& maxNbOfCores)
const;
107 std::vector< std::vector<int> > splitIntoParts(
const std::vector<int>& coreIds,
const std::vector<std::pair <const ComplexWeight *, int> >& weights)
const;
108 std::vector<int> takePlace(
int maxNbOfCoresToAlloc,
int nbCoresPerShot, std::vector<bool>& distributionOfCores,
bool lastOne=
false)
const;
110 void checkCoherentInfo()
const;
130 std::vector<std::size_t> computeWorkerIdsCovered(
int nbCoresPerComp)
const;
144 std::string printSelf()
const;
145 std::vector<bool> getCoresOn()
const;
149 int getNumberOfCoresConsumed()
const;
162 std::string printSelf()
const;
163 std::vector<bool> getCoresOn()
const;
164 std::vector<int>
getIDs()
const {
return _ids; }
166 int getNumberOfCoresConsumed()
const;
168 void checkOKIds()
const;
179 std::string printSelf()
const;
180 std::vector<bool> getCoresOn()
const;
182 int getNumberOfCoresConsumed()
const;
194 void setIDS(
const std::vector<std::size_t>& ids) { _ids=ids; }
198 std::vector<int> getIDS()
const;
#define YACSLIBENGINE_EXPORT
AllPartDefinition(const PlayGround *pg)
std::string _container_type
YACS::BASES::AutoConstRefCnt< PartDefinition > _pd
void setPD(YACS::BASES::AutoConstRefCnt< PartDefinition > pd)
void setIDS(const std::vector< std::size_t > &ids)
std::vector< std::size_t > _ids
void setContainerType(const std::string &ct)
std::string getContainerType() const
const PartDefinition * getPD() const
std::vector< int > getIDs() const
~NonContigPartDefinition()
virtual std::vector< bool > getCoresOn() const =0
virtual int getNumberOfCoresConsumed() const =0
const PlayGround * getPlayGround() const
virtual PartDefinition * copy() const =0
virtual std::string printSelf() const =0
YACS::BASES::AutoConstRefCnt< PlayGround > _pg
std::vector< Resource > _data
std::vector< std::pair< std::string, int > > getData() const
std::mutex & getLocker() const
PlayGround(const std::vector< std::pair< std::string, int > > &defOfRes)
std::vector< bool > getFetchedCores(int nbCoresPerWorker) const
bool operator!=(ResourceIterator other) const
const std::vector< Resource > * _vec
ResourceIterator(const std::vector< Resource > *vec, const std::size_t num)
reference operator*() const
bool operator==(ResourceIterator other) const
ResourceIterator & operator++()
std::vector< bool > _occupied
std::pair< std::string, int > toPair() const
Resource(const std::pair< std::string, int > &p)
Resource(const std::string &name, int nbCores)