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().