PaCO++
0.05
|
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