|
PaCO++
0.05
|
#include <PaCO++_operation.h>

Definition at line 29 of file PaCO++_operation.h.
| typedef map<long, _com_info_t*> PaCO_operation::_com_info_map_t |
Definition at line 143 of file PaCO++_operation.h.
| PaCO_operation::PaCO_operation | ( | int | _number_arguments | ) |
Definition at line 13 of file PaCO++_operation.cc.
References _current_id, _exception, _level, _mode, client_id, FabCom, FabComScheduling, FabManager, FabThread, libraries_in, libraries_in_name, libraries_out, libraries_out_name, my_comScheduling, myRank, mytopo, number_arguments, paco_getFabriqueManager(), return_op, PaCO::ServerSide, termine, termine2, PaCO::PacoTopology_s::total, and typeClient.
{
// Default case : sequential client
_current_id = -1;
myRank = 0;
mytopo.total = 1;
_mode = PaCO::ServerSide;
typeClient = false;
termine = false;
termine2 = false;
client_id = -1;
number_arguments = _number_arguments;
libraries_in = new DistributionLibrary*[number_arguments];
libraries_out = new DistributionLibrary*[number_arguments];
#ifdef PACO_WARN_DISTLIB
libraries_in_name.resize(number_arguments);
libraries_out_name.resize(number_arguments);
#endif
for(int i=0; i<number_arguments; i++)
{
libraries_in[i] = NULL;
libraries_out[i] = NULL;
#ifdef PACO_WARN_DISTLIB
libraries_in_name[i]=NULL;
libraries_out_name[i]=NULL;
#endif
}
FabManager=paco_getFabriqueManager();
FabThread=0;
FabCom=0;
FabComScheduling=0;
my_comScheduling=0;
return_op = 0;
// Exception handling
_exception = false;
_level = 0;
// Timing
#ifdef PADICO
_ticks=(padico_timing_t*)malloc(sizeof(padico_timing_t)*10);
#endif
}

| PaCO_operation::~PaCO_operation | ( | ) | [virtual] |
Definition at line 58 of file PaCO++_operation.cc.
References libraries_in, libraries_in_name, libraries_out, libraries_out_name, my_condition, my_condition2, my_mutex, my_mutex2, my_mutex3, and number_arguments.
{
#ifdef PACO_WARN_DISTLIB
for(int i=0; i<number_arguments; i++)
{
if (libraries_in_name[i])
free(libraries_in_name[i]);
if (libraries_out_name[i])
free(libraries_out_name[i]);
}
#endif
delete libraries_in;
delete libraries_out;
delete my_mutex;
delete my_condition;
delete my_mutex2;
delete my_condition2;
delete my_mutex3;
// Memories must be deleted
}
Definition at line 614 of file PaCO++_operation.cc.
References paco_comScheduling::clearAllSchedules(), and my_comScheduling.
Referenced by configureTopo().
{
if (my_comScheduling)
my_comScheduling->clearAllSchedules();
}

| void PaCO_operation::clearCommunicationMemoryId | ( | long | id | ) | throw (InvalidArgument) [virtual] |
Definition at line 586 of file PaCO++_operation.cc.
{
if (id<0)
throw new InvalidArgument("clearCommunicationMemeoryId expects an id >0");
#ifdef DEBUG_INTERNAL
std::cerr <<"[INFO] clearing communication memory Id "<<id<<endl;
#endif
_com_info_map_t::iterator it2 = _com_info_map.find(id);
if (it2 != _com_info_map.end())
{
delete _com_info_map[id];
_com_info_map.erase(it2);
}
assert(my_comScheduling!=0);
my_comScheduling->clearScheduleId(id);
}
| void PaCO_operation::clearScheduleMemoryId | ( | long | id | ) | throw (InvalidArgument) [virtual] |
Definition at line 607 of file PaCO++_operation.cc.
{
assert(my_comScheduling!=0);
my_comScheduling->clearScheduleId(id);
}
| void PaCO_operation::configureTopo | ( | ) | [virtual] |
Definition at line 447 of file PaCO++_operation.cc.
References clearAllScheduleMemory(), libraries_in, libraries_out, myRank, number_arguments, return_op, serveur_topo_aller, serveur_topo_retour, DistributionLibrary::setDestTopology(), DistributionLibrary::setNodeRank(), and DistributionLibrary::setSourceTopology().
{
// DO NOT FORGET TO CLEAR MEMORIES (WHAT ABOUT COMMUNICATION MATRICES??) !!!!
clearAllScheduleMemory();
if (return_op == 0)
{
for (int i = 0; i < number_arguments; i++)
{
if (libraries_in[i] != NULL)
{
libraries_in[i]->setDestTopology(serveur_topo_aller);
libraries_in[i]->setSourceTopology(serveur_topo_retour);
libraries_in[i]->setNodeRank(myRank);
}
if (libraries_out[i] != NULL)
{
libraries_out[i]->setDestTopology(serveur_topo_retour);
libraries_out[i]->setSourceTopology(serveur_topo_aller);
libraries_out[i]->setNodeRank(myRank);
}
}
}
}

Definition at line 527 of file PaCO++_operation.cc.
References _com_info_map.
{
// lookup existing communication info
_com_info_map_t::iterator it2 = _com_info_map.find(id);
if (it2 != _com_info_map.end())
{
#ifdef DEBUG_INTERNAL
std::cerr <<"[INFO] found communication info for Id "<<id<<endl;
#endif
return _com_info_map[id];
}
else
{
return NULL;
}
}
| void PaCO_operation::init | ( | int | rank, |
| int | total | ||
| ) | [virtual] |
Definition at line 342 of file PaCO++_operation.cc.
References myRank, mytopo, and PaCO::PacoTopology_s::total.
| virtual void PaCO_operation::init_complete_context | ( | PaCO_operation * | op | ) | [inline, virtual] |
Definition at line 87 of file PaCO++_operation.h.
{ cerr << "WARNING : init_complete_context of PaCO_Operation" << endl;}
| void PaCO_operation::init_context | ( | PaCO_operation * | op | ) | [virtual] |
Definition at line 86 of file PaCO++_operation.cc.
References FabCom, FabComScheduling, FabManager, FabThread, group, my_com, my_comScheduling, my_condition, my_condition2, my_mutex, my_mutex2, my_mutex3, myRank, mytopo, number_stubs, serveur_topo_aller, serveur_topo_retour, setServerTopo(), PaCO::PacoTopology_s::total, and typeClient.
{
myRank = op->myRank ;
mytopo = op->mytopo ;
number_stubs = op->number_stubs ;
FabManager = op->FabManager;
group = op->group;
my_com = op->my_com ;
FabCom = op->FabCom ;
my_comScheduling = op->my_comScheduling ;
FabComScheduling = op->FabComScheduling ;
// Client part
typeClient = op->typeClient ;
if (op->serveur_topo_aller.total > 0)
{
setServerTopo(op->serveur_topo_aller,"in");
}
if (op->serveur_topo_retour.total > 0)
{
setServerTopo(op->serveur_topo_retour,"out");
}
// Server part
FabThread = op->FabThread ;
my_mutex = op->my_mutex ;
my_condition = op->my_condition ;
my_mutex2 = op->my_mutex2 ;
my_condition2 = op->my_condition2 ;
my_mutex3 = op->my_mutex3 ;
}

| void PaCO_operation::init_context_args | ( | PaCO_operation * | op | ) | [virtual] |
Definition at line 173 of file PaCO++_operation.cc.
References _mode, group, libraries_in, libraries_out, number_arguments, return_op, and DistributionLibrary::setCommunicator().
{
return_op = 1;
number_arguments = op->number_arguments;
_mode = op->_mode;
libraries_in = op->libraries_out;
libraries_out = op->libraries_in;
for(int i=0; i<number_arguments; i++)
{
if (libraries_in[i])
{
libraries_in[i]->setCommunicator(group);
}
if (libraries_out[i])
{
libraries_out[i]->setCommunicator(group);
}
}
}

| void PaCO_operation::init_context_proxy | ( | PaCO_operation * | op | ) | [virtual] |
Definition at line 153 of file PaCO++_operation.cc.
References group, libraries_in, libraries_out, number_arguments, and DistributionLibrary::setCommunicator().
{
number_arguments = op->number_arguments;
libraries_in = op->libraries_in;
libraries_out = op->libraries_out;
for(int i=0; i<number_arguments; i++)
{
if (libraries_in[i])
{
libraries_in[i]->setCommunicator(group);
}
if (libraries_out[i])
{
libraries_out[i]->setCommunicator(group);
}
}
}

| void PaCO_operation::init_return_context | ( | PaCO_operation * | op | ) | [virtual] |
Definition at line 122 of file PaCO++_operation.cc.
References FabCom, FabComScheduling, FabManager, FabThread, group, my_com, my_comScheduling, my_condition, my_condition2, my_mutex, my_mutex2, my_mutex3, myRank, mytopo, number_stubs, serveur_topo_aller, setServerTopo(), PaCO::PacoTopology_s::total, and typeClient.
{
myRank = op->myRank ;
mytopo = op->mytopo ;
number_stubs = op->number_stubs ;
FabManager = op->FabManager;
group = op->group ;
my_com = op->my_com ;
FabCom = op->FabCom ;
my_comScheduling = op->my_comScheduling ;
FabComScheduling = op->FabComScheduling ;
// Client part
typeClient = op->typeClient ;
if (op->serveur_topo_aller.total > 0)
{
setServerTopo(op->serveur_topo_aller,"in");
}
// Server part
FabThread = op->FabThread ;
my_mutex = op->my_mutex ;
my_condition = op->my_condition ;
my_mutex2 = op->my_mutex2 ;
my_condition2 = op->my_condition2 ;
my_mutex3 = op->my_mutex3 ;
}

| void PaCO_operation::noCommunicationMemory | ( | ) | [virtual] |
Definition at line 545 of file PaCO++_operation.cc.
References _current_id.
{
_current_id = -1; // _DO_NOT_USE_COMMUNICATION_MEMORY;
#ifdef DEBUG_INTERNAL
std::cerr <<"[INFO] not using memory"<<endl;
#endif
}
| void PaCO_operation::setClientId | ( | CORBA::Short | request_uid | ) | [virtual] |
Definition at line 80 of file PaCO++_operation.cc.
References client_id.
{
client_id = request_uid;
}
| void PaCO_operation::setClientTopo | ( | PaCO::PacoTopology_t | _client_topo, |
| const string & | way | ||
| ) | throw (BadWayString) [virtual] |
Definition at line 405 of file PaCO++_operation.cc.
{
if (way == "in")
{
serveur_topo_retour = _client_topo;
}
else if (way == "out")
{
serveur_topo_aller = _client_topo;
}
else
{
// Bad way string
throw BadWayString(way);
}
}
| void PaCO_operation::setClientTopo | ( | PaCO::PacoTopology_t | _client_topo | ) | [virtual] |
Definition at line 423 of file PaCO++_operation.cc.
References serveur_topo_retour.
{
serveur_topo_retour = _client_topo;
}
| void PaCO_operation::setComFab | ( | paco_fabrique_com * | fc | ) | [virtual] |
If not set, use the fabrique manager
Definition at line 201 of file PaCO++_operation.cc.
References FabCom.
{
FabCom = fc;
}
| void PaCO_operation::setComSchedulingFab | ( | paco_fabrique_comScheduling * | ft | ) | [virtual] |
If not set, use the fabrique manager If not set, use the fabrique manager
Definition at line 501 of file PaCO++_operation.cc.
References FabComScheduling.
{
FabComScheduling = fcs;
}
| void PaCO_operation::setDisLibArg | ( | int | arg_number, |
| const string & | lib_name, | ||
| const string & | way | ||
| ) | throw (BadWayString) [virtual] |
If not set, use the fabrique manager Arg part
Definition at line 261 of file PaCO++_operation.cc.
{
if (way == "inout")
{
libraries_in [arg_number] = FabManager->get_distribution(lib_name)->create();
libraries_out[arg_number] = FabManager->get_distribution(lib_name)->create();
#ifdef PACO_WARN_DISTLIB
if (libraries_in_name[arg_number]) free(libraries_in_name[arg_number]);
if (libraries_out_name[arg_number]) free(libraries_out_name[arg_number]);
libraries_in_name [arg_number] = strdup(lib_name.c_str());
libraries_out_name [arg_number] = strdup(lib_name.c_str());
#endif
}
else if (way == "in")
{
libraries_in[arg_number] = FabManager->get_distribution(lib_name)->create();
#ifdef PACO_WARN_DISTLIB
if (libraries_in_name[arg_number]) free(libraries_in_name[arg_number]);
libraries_in_name [arg_number] = strdup(lib_name.c_str());
#endif
}
else if (way == "out")
{
libraries_out[arg_number] = FabManager->get_distribution(lib_name)->create();
#ifdef PACO_WARN_DISTLIB
if (libraries_out_name[arg_number]) free(libraries_out_name[arg_number]);
libraries_out_name [arg_number] = strdup(lib_name.c_str());
#endif
}
else
{
// Bad way string
throw BadWayString(way);
}
}
| void PaCO_operation::setFabManager | ( | paco_fabrique_manager * | fm | ) | [virtual] |
Associate a pfm to this object. By default, paco_operation is associated to a FabriqueManager (cf paco_getFabriqueManager())
Definition at line 195 of file PaCO++_operation.cc.
References FabManager.
{
FabManager = fm;
}
| void PaCO_operation::setLibCom | ( | const string & | LibCom, |
| void * | _group | ||
| ) | [virtual] |
If not set, use the fabrique manager
Definition at line 207 of file PaCO++_operation.cc.
References FabCom, FabManager, paco_fabrique_manager::get_com(), group, libraries_in, libraries_out, my_com, number_arguments, paco_fabrique_com::paco_create(), and DistributionLibrary::setCommunicator().
{
if (FabCom==0)
{
if (FabManager)
FabCom = FabManager->get_com(LibCom);
else
{
cerr << "Error: Unable to instantiate lib com "<<LibCom<<endl;
abort();
}
}
group = _group;
my_com = FabCom->paco_create(group);
for(int i=0; i<number_arguments; i++)
{
if (libraries_in[i])
{
libraries_in[i]->setCommunicator(group);
}
if (libraries_out[i])
{
libraries_out[i]->setCommunicator(group);
}
}
}

| void PaCO_operation::setLibComScheduling | ( | const string & | LibComScheduling | ) | [virtual] |
If not set, use the fabrique manager
Definition at line 507 of file PaCO++_operation.cc.
References paco_fabrique_comScheduling::create_comScheduling(), FabComScheduling, FabManager, paco_fabrique_manager::get_comScheduling(), and my_comScheduling.
{
if (FabComScheduling==0)
{
if (FabManager)
FabComScheduling = FabManager->get_comScheduling(LibComScheduling);
else
{
cerr << "Error: Unable to instantiate lib communication schedule "<<LibComScheduling<<endl;
abort();
}
}
if (my_comScheduling)
delete my_comScheduling;
my_comScheduling = FabComScheduling->create_comScheduling();
}

| void PaCO_operation::setLibThread | ( | const string & | LibThread | ) | [virtual] |
If not set, use the fabrique manager
Definition at line 479 of file PaCO++_operation.cc.
References FabManager, FabThread, paco_fabrique_manager::get_thread(), my_condition, my_condition2, my_mutex, my_mutex2, my_mutex3, paco_fabrique_thread::paco_create_condition(), and paco_fabrique_thread::paco_create_mutex().
{
if (FabThread==0)
{
if (FabManager)
FabThread = FabManager->get_thread(LibThread);
else
{
cerr << "Error: Unable to instantiate lib thread "<<LibThread<<endl;
abort();
}
}
my_mutex = FabThread->paco_create_mutex();
my_condition = FabThread->paco_create_condition(my_mutex);
my_mutex2 = FabThread->paco_create_mutex();
my_condition2 = FabThread->paco_create_condition(my_mutex2);
my_mutex3 = FabThread->paco_create_mutex();
}

| void PaCO_operation::setServerTopo | ( | PaCO::PacoTopology_t | _serveur_topo, |
| const string & | way | ||
| ) | throw (BadWayString) [virtual] |
Definition at line 429 of file PaCO++_operation.cc.
Referenced by init_context(), and init_return_context().
{
if (way == "in")
{
serveur_topo_aller = _serveur_topo;
}
else if (way == "out")
{
serveur_topo_retour = _serveur_topo;
}
else
{
// Bad way string
throw BadWayString(way);
}
}
| void PaCO_operation::setThreadFab | ( | paco_fabrique_thread * | ft | ) | [virtual] |
If not set, use the fabrique manager
Definition at line 473 of file PaCO++_operation.cc.
References FabThread.
{
FabThread = ft;
}
| void PaCO_operation::setTypeClient | ( | bool | type | ) | [virtual] |
Object part
Definition at line 398 of file PaCO++_operation.cc.
References typeClient.
{
typeClient = type;
}
| void PaCO_operation::useCommunicationMemoryId | ( | long | id | ) | throw (InvalidArgument) [virtual] |
Definition at line 556 of file PaCO++_operation.cc.
{
if (id<0)
throw new InvalidArgument("useCommunicationMemeoryId expect an id >0");
#ifdef DEBUG_INTERNAL
std::cerr <<"[INFO] using memory Id "<<id<<endl;
#endif
// set current id
_current_id = id;
// Beta patch
for(int i=0; i<number_arguments; i++)
{
if (libraries_in[i])
{
bool res=libraries_in[i]->setComId(id);
if (!res) {
#ifdef PACO_WARN_DISTLIB
std::cerr << "warning: argument #"<<i<<" with dist lib "<<libraries_in_name[i]<<" does not support comm cache\n";
#else
std::cerr << "warning: argument #"<<i<<" does not support comm cache\n";
#endif
}
}
}
}
Definition at line 144 of file PaCO++_operation.h.
Referenced by getComMemoryId().
Definition at line 136 of file PaCO++_operation.h.
Referenced by noCommunicationMemory(), and PaCO_operation().
Definition at line 131 of file PaCO++_operation.h.
Referenced by PaCO_operation().
Definition at line 132 of file PaCO++_operation.h.
Referenced by PaCO_operation().
Definition at line 96 of file PaCO++_operation.h.
Referenced by init_context_args(), and PaCO_operation().
| CORBA::Short PaCO_operation::client_id |
Definition at line 128 of file PaCO++_operation.h.
Referenced by PaCO_operation(), and setClientId().
Definition at line 109 of file PaCO++_operation.h.
Referenced by init_context(), init_return_context(), PaCO_operation(), setComFab(), and setLibCom().
Definition at line 121 of file PaCO++_operation.h.
Referenced by init_context(), init_return_context(), PaCO_operation(), setComSchedulingFab(), and setLibComScheduling().
Definition at line 98 of file PaCO++_operation.h.
Referenced by init_context(), init_return_context(), PaCO_operation(), setFabManager(), setLibCom(), setLibComScheduling(), and setLibThread().
Definition at line 100 of file PaCO++_operation.h.
Referenced by init_context(), init_return_context(), PaCO_operation(), setLibThread(), and setThreadFab().
| void* PaCO_operation::group |
Definition at line 107 of file PaCO++_operation.h.
Referenced by init_context(), init_context_args(), init_context_proxy(), init_return_context(), and setLibCom().
Definition at line 111 of file PaCO++_operation.h.
Referenced by configureTopo(), init_context_args(), init_context_proxy(), PaCO_operation(), setLibCom(), and ~PaCO_operation().
| std::vector<char*> PaCO_operation::libraries_in_name |
Definition at line 115 of file PaCO++_operation.h.
Referenced by PaCO_operation(), and ~PaCO_operation().
Definition at line 112 of file PaCO++_operation.h.
Referenced by configureTopo(), init_context_args(), init_context_proxy(), PaCO_operation(), setLibCom(), and ~PaCO_operation().
| std::vector<char*> PaCO_operation::libraries_out_name |
Definition at line 116 of file PaCO++_operation.h.
Referenced by PaCO_operation(), and ~PaCO_operation().
Definition at line 108 of file PaCO++_operation.h.
Referenced by init_context(), init_return_context(), paco_comScheduling::propageComMatrix(), and setLibCom().
Definition at line 120 of file PaCO++_operation.h.
Referenced by clearAllScheduleMemory(), init_context(), init_return_context(), PaCO_operation(), and setLibComScheduling().
Definition at line 102 of file PaCO++_operation.h.
Referenced by init_context(), init_return_context(), setLibThread(), and ~PaCO_operation().
Definition at line 104 of file PaCO++_operation.h.
Referenced by init_context(), init_return_context(), setLibThread(), and ~PaCO_operation().
Definition at line 101 of file PaCO++_operation.h.
Referenced by init_context(), init_return_context(), setLibThread(), and ~PaCO_operation().
Definition at line 103 of file PaCO++_operation.h.
Referenced by init_context(), init_return_context(), setLibThread(), and ~PaCO_operation().
Definition at line 105 of file PaCO++_operation.h.
Referenced by init_context(), init_return_context(), setLibThread(), and ~PaCO_operation().
Definition at line 93 of file PaCO++_operation.h.
Referenced by configureTopo(), init(), init_context(), init_return_context(), and PaCO_operation().
Definition at line 94 of file PaCO++_operation.h.
Referenced by init(), init_context(), init_return_context(), PaCO_operation(), and paco_comScheduling::propageComMatrix().
Definition at line 92 of file PaCO++_operation.h.
Referenced by configureTopo(), init_context_args(), init_context_proxy(), PaCO_operation(), setLibCom(), and ~PaCO_operation().
Definition at line 95 of file PaCO++_operation.h.
Referenced by init_context(), and init_return_context().
Definition at line 91 of file PaCO++_operation.h.
Referenced by configureTopo(), init_context_args(), and PaCO_operation().
Definition at line 124 of file PaCO++_operation.h.
Referenced by configureTopo(), init_context(), init_return_context(), and paco_comScheduling::propageComMatrix().
Definition at line 125 of file PaCO++_operation.h.
Referenced by configureTopo(), init_context(), and setClientTopo().
Definition at line 126 of file PaCO++_operation.h.
Referenced by PaCO_operation().
Definition at line 127 of file PaCO++_operation.h.
Referenced by PaCO_operation().
Definition at line 123 of file PaCO++_operation.h.
Referenced by init_context(), init_return_context(), PaCO_operation(), and setTypeClient().