19 #undef STANDALONE_FILE 30 const Topology_t &stopo,
const Topology_t &dtopo,
31 vAbstrait& vdarray, vector<unsigned>& destid,
void* comm)
35 cerr <<
"In computeSendDataBlock1DClient...\n";
38 vector<LocalData_t> sched_send;
39 vector<LocalData_t> sched_recv;
50 cerr <<
"In computeSendDataBlock1DClient...computing what to send\n";
60 cerr <<
"In computeSendDataBlock1DClient...computing what to receive\n";
64 unsigned int nvdarray = dtopo.total/stopo.total;
65 unsigned int remaining = (nvdarray*stopo.total + sd.rank < dtopo.total)?1:0;
66 nvdarray += remaining;
70 vdarray.resize(nvdarray);
72 destid.resize(nvdarray);
75 unsigned dlbsz =
blockSize(gd.len, dtopo.total, param);
79 for (
unsigned it=0; it<nvdarray; it++) {
82 cerr <<
"computeSendDataBlock1DClient: it = " << it << endl;
85 Abstrait* out = vdarray[it];
87 out->topo().total = dtopo.total;
93 out->dist().length(1);
98 pld.
rank = dd.rank = sd.rank + it * stopo.total;
102 #ifdef DEBUG_INTERNAL 103 fprintf(stderr,
"dd loop %d: r:%d gl:%ld ll:%d start:%d dt:%ld\n", it,
104 dd.rank, gd.len, dd.len, dd.start, dtopo.total);
107 destid[it] = dd.rank;
113 #ifdef DEBUG_INTERNAL 114 cerr <<
"Allocating a sequence of length " << pld.
len << endl;
116 out->setDataLength(0, pld.
len);
118 dd.base = out->getDataBuffer(0,
false);
123 cerr <<
"Cannot allocate memory for #elements" << pld.
len << endl;
125 #ifdef DEBUG_INTERNAL 126 fprintf(stderr,
"dd.base = %p\n", dd.base);
139 doSchedule(gd, sd, stopo, sched_send, sched_recv, comm);
141 #ifdef DEBUG_INTERNAL 142 cerr <<
"In computeSendDataBlock1DClient...ok\n";
157 const Topology_t &stopo,
const Topology_t &dtopo,
158 vAbstrait& vdarray, vector<unsigned>& destid)
166 unsigned int nvdarray = dtopo.total/stopo.total;
167 unsigned int remaining = (nvdarray*stopo.total + sd.rank < dtopo.total)?1:0;
168 nvdarray += remaining;
171 if ( nvdarray == 0 ) nvdarray=1;
175 vdarray.resize(nvdarray);
177 destid.resize(nvdarray);
179 for (
unsigned it=0; it<nvdarray; it++) {
181 Abstrait* out = vdarray[it];
183 out->topo().total = stopo.total;
190 out->dist().length(1);
191 out->setSeqLength(1);
193 out->dist()[0].rank = sd.rank;
194 out->dist()[0].start = sd.start;
195 out->dist()[0].len = sd.len;
196 out->DataReplace(0, sd.len, sd.base,
false);
198 out->dist().length(0);
199 out->setSeqLength(0);
201 destid[it] = ( sd.rank + it * stopo.total ) % dtopo.total;
217 vAbstrait& vdarray, vector<unsigned>& destid,
221 case PaCO::none: cerr <<
"INTERNAL ERROR: " << __FILE__ <<
" " << __FUNCTION__ << endl;
static unsigned TotalNumberOfElementProc(const unsigned glen, const unsigned rank, const unsigned nbprocs, const unsigned bsz)
void computeSendBlock1D(const GlobalData_t &gd, const LocalData_t &sd, const Topology_t &stopo, const Topology_t &dtopo, const ParisBlock_param_t *param, vector< LocalData_t > &vOut)
void computeSendDataBlock1DComm()
void computeSendDataBlock1DClient(const GlobalData_t &gd, const LocalData_t &sd, const ParisBlock_param_t *param, const Topology_t &stopo, const Topology_t &dtopo, vAbstrait &vdarray, vector< unsigned > &destid, void *comm)
static unsigned computeBlockBoundInf(const unsigned bsz, const unsigned rank, const unsigned nbprocs, const unsigned pos)
void computeSendDataBlock1DServer(const GlobalData_t &gd, const LocalData_t &sd, const Topology_t &stopo, const Topology_t &dtopo, vAbstrait &vdarray, vector< unsigned > &destid)
void computeSendDataBlock1D(const GlobalData_t &gd, const LocalData_t &sd, const Topology_t &stopo, const Topology_t &dtopo, const ParisBlock_param_t *param, vAbstrait &vdarray, vector< unsigned > &destid, const PaCO::distLoc_t &mode, void *comm)
void doSchedule(const GlobalData_t &gd, const LocalData_t &ld, const Topology_t &ctopo, vector< LocalData_t > &sched_send, vector< LocalData_t > &sched_recv, void *comm)
static unsigned blockSize(const unsigned glen, const unsigned nbprocs, const ParisBlock_param_t *param)
void computeReceiveBlock1D(const GlobalData_t &gd, const LocalData_t &dd, const Topology_t &stopo, const Topology_t &dtopo, const ParisBlock_param_t *param, vector< LocalData_t > &vOut)