|
PaCO++
0.05
|

Go to the source code of this file.
Defines | |
| #define | LIBGRAPH |
Functions | |
| void | emuleSrc (int id) |
| int | main (int argc, char *argv[]) |
Variables | |
| vector< BasicBC > | dd |
| vector< long * > | ddata |
| vector< BasicBC > | sd |
| vector< long * > | sdata |
| vector< PieceToSend * > | spiece |
| vector< unsigned > | ssize |
| vector< void * > | vdescr |
| int main | ( | int | argc, |
| char * | argv[] | ||
| ) |
Definition at line 28 of file debug.cc.
References dd, ddata, PieceToSend::destNode, PieceToSend::id, sd, sdata, PieceToSend::size, spiece, ssize, PaCO::PacoTopology_s::total, and vdescr.
{
PaCO::PacoTopology_t stopo;
PaCO::PacoTopology_t dtopo;
unsigned long glen = 10;
unsigned long bz = 0;
switch(argc) {
case 5:
sscanf(argv[4],"%lu",&bz);
case 4:
sscanf(argv[3],"%lu",&glen);
case 3:
case 2:
sscanf(argv[1],"%lu",&stopo.total);
sscanf(argv[2],"%lu",&dtopo.total);
break;
default:
cerr << "Usage: " << argv[0] << " sd.total dd.total [glen [sz=0 bloc, else bloccyclic(sz)]]\n";
exit(-1);
}
cerr << "stopo: " << stopo.total << endl;
cerr << "dtopo: " << dtopo.total << endl;
// Allocating memory
sd.resize(stopo.total);
dd.resize(dtopo.total);
sdata.resize(stopo.total);
ddata.resize(dtopo.total);
vdescr.resize(stopo.total*dtopo.total);
spiece.resize(stopo.total);
ssize.resize(stopo.total);
cerr << " glen: " << glen << endl;
// Allocating & initializing comm matrix
unsigned ** comm_matrix = new unsigned *[stopo.total];
unsigned* comm_area = (unsigned*)calloc(stopo.total*dtopo.total, sizeof(unsigned)); // ZEROED !
if (comm_area == NULL) {
cerr << "Can not allocate memory of size " << stopo.total*dtopo.total*sizeof(unsigned) << endl;
abort();
}
for(unsigned i=0; i<stopo.total; i++)
{
comm_matrix[i] = &comm_area[i*dtopo.total];
}
// Allocating & initializing info matrix : 1 => number of argument
void *** info_matrix = new void **[stopo.total];
void ** info_area = (void**) calloc(stopo.total*dtopo.total*1, sizeof(void*)); // zeroed
if (info_area == NULL) {
cerr << "Can not allocate memory of size " << stopo.total*dtopo.total*sizeof(unsigned) << endl;
abort();
}
for(unsigned i=0; i<stopo.total; i++)
{
info_matrix[i] = &info_area[i*dtopo.total*1];
}
cerr<<endl<<"##############################"<<endl;
for(unsigned i=0; i<stopo.total; i++) {
cerr<<endl<<"###### Sender "<<i<<endl<<endl;
sd[i].setSourceTopology(stopo);
sd[i].setDestTopology(dtopo);
sd[i].setNodeRank(i);
sd[i].setEltSize(sizeof(long));
sd[i].setTotalNbElt(glen);
sd[i].setBlocSize(bz);
long* ptr = sdata[i] = (long*) malloc(glen);
sd[i].setDataPtr((void*) ptr);
for(unsigned j=0;j<glen;j++)
ptr[j] = i*0x1000+j;
spiece[i]=sd[i].computePiecesToSend(ssize[i]);
for ( unsigned j = 0; j < ssize[i]; j++)
{
PieceToSend& p = spiece[i][j];
long dest = p.destNode;
comm_matrix[i][dest] += p.size;
info_matrix[i][dest+0] = p.id;
cerr << "p.id: " << p.id<<endl;
}
}
cerr<<endl<<"##############################"<<endl;
for(unsigned i=0; i<stopo.total; i++) {
cerr<<endl<<"###### Sender "<<i<<endl;
if (ssize[i] > dtopo.total) {
cerr << "*** case not yet supported (cf descr)\n";
abort();
}
for(unsigned j=0; j<ssize[i]; j++) {
cerr<<" Message "<<j;
fprintf(stderr," , %2d -> %2d : %4d octets (%p)\n",
spiece[i][j].sourceNode, spiece[i][j].destNode, spiece[i][j].size, spiece[i][j].id);
bool b=false;
long msz= spiece[i][j].size;
while(!b) {
long mlen;
void* ptr = sd[i].getClientData(spiece[i][j].id, i, msz, mlen, b);
fprintf(stderr," #element: %2u ptr:%p -- ", mlen, ptr);
for(int k=0; k<mlen; k++)
fprintf(stderr," %d", ((int*)ptr)[k]);
fprintf(stderr,"\n");
}
if (msz) {
cerr << "BIIIGGGG TROUBLE: msz is not 0: " <<msz<<endl;
exit(-1);
}
vdescr[i*dtopo.total+j] = sd[i].getDescr();
cerr<<endl;
//cerr << " descr: "<<sd[i].getDescr()<<endl;
}
}
cerr<<endl<<"##############################"<<endl;
#ifdef LIBGRAPH
//build our graph
bigraph g;
//add nodes
for(unsigned int i = 0 ; i < stopo.total ; i++)
g.add_node(true);
for(unsigned int i = 0 ; i < dtopo.total ; i++)
g.add_node(false);
// 2. fill the bigraph
for (unsigned i = 0; i < (unsigned) stopo.total; i++)
{
for (unsigned j = 0; j < dtopo.total; j++)
{
edge*e = g.add_edge(g.get_node(i, true),
g.get_node(j, false),
comm_matrix[i][j],
info_matrix[i][j]);
cerr << "id: " << info_matrix[i][j]<<" "<<e->getDecoration()<<endl;
}
}
g.remove_empty_nodes();
g.set_beta(10);
g.set_k(100);
kbps_approximation* _schedule_info = new kbps_approximation(&g);
_schedule_info->compute_poly();
_schedule_info->serialize();
_schedule_info->serial_display();
// Display result
unsigned int phases = _schedule_info->infophases[0];
unsigned int k=0;
for(unsigned int i = 0; i < phases; i++)
{
for(unsigned int j = 0 ; j < _schedule_info->infophases[i+1] ; j++)
{
kbps_approximation::_comm_t& s= _schedule_info->comms[k];
fprintf(stderr," %d -> %d : %d %p\n", s.src, s.dst, s.weight, s.info);
k++;
}
}
#endif
// Init receiver
for(unsigned i=0; i<dtopo.total; i++) {
cerr<<endl<<"##############################"<<endl;
cerr<<"###### Receiver "<<i<<endl<<endl;
dd[i].setSourceTopology(stopo);
dd[i].setDestTopology(dtopo);
dd[i].setNodeRank(i);
dd[i].setEltSize(sizeof(long));
dd[i].setBlocSize(bz);
// Receive data
}
}
Definition at line 15 of file debug.cc.
Referenced by computeSendDataBlock1DClient(), and main().
Definition at line 14 of file debug.cc.
Referenced by computeReceiveDataBlock1DServer(), and main().
| vector<PieceToSend*> spiece |