PaCO++  0.05
Schedule.h
Go to the documentation of this file.
00001 #ifndef SCHEDULE_BLOC_1D_IS_DEFINED
00002 #define SCHEDULE_BLOC_1D_IS_DEFINED
00003 
00004 #include <vector>
00005 #include <Abstrait.h>
00006 
00008 
00009 // vOut represents what localData/stopo have to send to nodes of dtopo (vOut[].rank is in dtopo space)
00010 void computeSendBlock1D(const GlobalData_t& gd, const LocalData_t &sd, 
00011          const Topology_t &stopo, const Topology_t &dtopo,
00012          vector<LocalData_t>& vOut);
00013 
00014 // vOut represents what localData/dtopo have to receive from nodes of stopo (vOut[].rank is in stopo space)
00015 void computeReceiveBlock1D(const GlobalData_t& gd, const LocalData_t &dd, 
00016             const Topology_t &stopo, const Topology_t &dtopo,
00017             vector<LocalData_t>& vOut);
00018 
00019 // vOut represents what localData/stopo have to send to nodes of dtopo (vOut[].rank is in dtopo space)
00020 void computeSendRemoteDataBlock1D(const GlobalData_t& gd, const LocalData_t &sd, 
00021               const Topology_t &stopo, const Topology_t &dtopo,
00022               vector<LocalData_t>& vOut, const PaCO::distLoc_t mode);
00023 
00024 
00028 
00029 void computeSendDataBlock1D(const GlobalData_t& gd, const LocalData_t &sd, 
00030              const Topology_t &stopo, const Topology_t &dtopo,
00031              vAbstrait& vdarray, vector<unsigned>& destid,
00032              const PaCO::distLoc_t& mode, void* comm);
00033 
00034 bool computeReceiveDataBlock1D(vAbstrait* sdata, const PaCO::distLoc_t& mode,
00035                 const unsigned total, const unsigned rank,
00036                 /*out*/ Abstrait* varray, void* comm);
00037 
00041 
00042 void doSchedule(const GlobalData_t& gd, const LocalData_t& ld, const Topology_t &ctopo,
00043       vector<LocalData_t>& sched_send, vector<LocalData_t>& sched_recv, void* comm);
00044 
00048 
00049 unsigned nbofPart(const PaCO::distLoc_t& mode, const unsigned stotal, const unsigned dtotal, const unsigned drank);
00050 unsigned posofPart(const PaCO::distLoc_t& mode, const unsigned dtotal, const unsigned srank);
00051 
00052 #endif