Changeset 177 for XMLIO_V2/dev


Ignore:
Timestamp:
04/18/11 11:30:27 (13 years ago)
Author:
hozdoba
Message:
 
Location:
XMLIO_V2/dev/dev_rv
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_V2/dev/dev_rv/Makefile.wk

    r176 r177  
    1515VTK       = no 
    1616GUI       = no 
    17 NPROC     = 2 
     17NPROC     = 11 
    1818CSUITE    = gnu 
    1919PFORME    = fedora-wk 
  • XMLIO_V2/dev/dev_rv/src/xmlio/fake_client/fake_lmdz.f90

    r152 r177  
    1919                                                  comm_client_grp,   & ! communicateur du groupe de clients 
    2020                                                  comm_client_server   ! communicateur client-serveur 
    21       INTEGER                                  :: rankGrp, nbClientAll, nbClientGrp, error 
     21      INTEGER                                  :: rankGrp, error 
    2222 
    23       CALL MPI_COMM_SIZE(comm_client, nbClientAll, err) 
    24       CALL MPI_COMM_SIZE(comm_client_grp, nbClientGrp, err) 
    25       CALL MPI_COMM_RANK(comm_client_server, rankGrp, err) 
     23      CALL MPI_COMM_RANK(comm_client, rankGrp, error) 
    2624 
    2725      IF (rankGrp .EQ. 0) THEN 
    28          PRINT*," Starting LMDZ Tests" 
     26         PRINT*," Starting LMDZ Client Tests ..." 
    2927      END IF 
    3028 
  • XMLIO_V2/dev/dev_rv/src/xmlio/fake_client/fake_nemo.f90

    r152 r177  
    2020                                                  comm_client_server   ! communicateur client-serveur 
    2121      REAL(kind = 8), DIMENSION(10000)   :: real_array 
    22       INTEGER                           :: rankGrp, nbClientAll, nbClientGrp, error 
     22      INTEGER                           :: rankGrp, error 
    2323      INTEGER                           :: ibegin, iend, jbegin, jend 
    2424      TYPE(XDate)                       :: init_date_nemo  = XDate(1985, 03, 15, 17, 35, 00) 
     
    2828                                           temp_mod__ = NULLHANDLE 
    2929 
    30       CALL MPI_COMM_SIZE(comm_client, nbClientAll, err) 
    31       CALL MPI_COMM_SIZE(comm_client_grp, nbClientGrp, err) 
    32       CALL MPI_COMM_RANK(comm_client_server, rankGrp, err) 
     30      CALL MPI_COMM_RANK(comm_client, rankGrp, error) 
    3331 
    3432      IF (rankGrp .EQ. 0) THEN 
    35          PRINT*," Starting NEMO Tests" 
     33          PRINT*," Starting NEMO Client Tests ..." 
    3634      END IF 
    3735 
  • XMLIO_V2/dev/dev_rv/src/xmlio/fake_client/fake_orchidee.f90

    r152 r177  
    1919                                                  comm_client_grp,   & ! communicateur du groupe de clients 
    2020                                                  comm_client_server   ! communicateur client-serveur 
    21       INTEGER                                  :: rankGrp, nbClientAll, nbClientGrp, error 
     21      INTEGER                                  :: rankGrp, error 
    2222 
    23       CALL MPI_COMM_SIZE(comm_client, nbClientAll, err) 
    24       CALL MPI_COMM_SIZE(comm_client_grp, nbClientGrp, err) 
    25       CALL MPI_COMM_RANK(comm_client_server, rankGrp, err) 
     23      CALL MPI_COMM_RANK(comm_client, rankGrp, error) 
    2624 
    2725      IF (rankGrp .EQ. 0) THEN 
    28          PRINT*," Starting ORCHIDEE Tests" 
     26         PRINT*," Starting ORCHIDEE Client Tests ..." 
    2927      END IF 
    3028 
  • XMLIO_V2/dev/dev_rv/src/xmlio/main_server.cpp

    r176 r177  
    1212   try 
    1313   { 
    14       comm::CMPIManager::Initialise(&argc, &argv); // < seulement en mode connecté 
     14      //comm::CMPIManager::Initialise(&argc, &argv); // < seulement en mode connecté 
    1515      
    16       CXIOSManager::Initialise(CXIOSManager::CLIENT, &argc, &argv); 
    17       CXIOSManager::AddClient("nemo", 
    18                               CMPIManager::GetCommSize(CMPIManager::GetCommWorld()), 
    19                               CMPIManager::GetCommSize(CMPIManager::GetCommWorld()), 
    20                               &nemo_fake_entry); 
    21       CXIOSManager::RunClient(); 
     16      CXIOSManager::Initialise(CXIOSManager::CLIENT_SERVER, &argc, &argv); 
     17      CXIOSManager::AddClient("nemo"    , 2, 2, &nemo_fake_entry); 
     18      CXIOSManager::AddClient("orchidee", 1, 1, &orchidee_fake_entry); 
     19      CXIOSManager::AddClient("lmdz"    , 4, 2, &lmdz_fake_entry); 
     20      CXIOSManager::RunClientServer(comm::CMPIManager::GetCommWorld()); 
    2221      CXIOSManager::Finalize(); 
    23  
    24       comm::CMPIManager::Finalize(); // < seulement en mode connecté 
    25        
    26       //CXIOSManager::AddClient("orchidee", 1, 1, &orchidee_fake_entry); 
    27       //CXIOSManager::AddClient("lmdz"    , 2, 2, &lmdz_fake_entry); 
    28       //CXIOSManager::RunClientServer(); 
    2922 
    3023   } 
  • XMLIO_V2/dev/dev_rv/src/xmlio/manager/mpi_manager.cpp

    r157 r177  
    5454 
    5555      MPIComm CMPIManager::GetCommWorld(void) 
    56       { return (mpi_comm_world); } 
     56      {  
     57         return (mpi_comm_world);  
     58      } 
    5759 
    5860      bool CMPIManager::IsMaster(MPIComm comm) 
    59       { return (CMPIManager::GetCommRank(comm) == 0); } 
     61      {  
     62         return (CMPIManager::GetCommRank(comm) == 0);  
     63      } 
    6064 
    6165      bool CMPIManager::IsRank(MPIComm comm, int rank) 
    62       { return (CMPIManager::GetCommRank(comm) == rank); } 
     66      {  
     67         return (CMPIManager::GetCommRank(comm) == rank);  
     68      } 
    6369 
    6470      MPIComm CMPIManager::CreateComm(MPIGroup group, MPIComm pcomm) 
  • XMLIO_V2/dev/dev_rv/src/xmlio/manager/xios_manager.cpp

    r152 r177  
    3333      CXIOSManager::XIOSType CXIOSManager::Type = CLIENT; 
    3434 
    35       StdString     CXIOSManager::ClientName; 
    36       comm::MPIComm CXIOSManager::Comm_Client_Server; 
    37       comm::MPIComm CXIOSManager::Comm_Server; 
     35      StdString     CXIOSManager::ClientName("unknown name"); 
     36      comm::MPIComm CXIOSManager::Comm_Client_Server = -1; 
     37      comm::MPIComm CXIOSManager::Comm_Server = -1; 
    3838 
    3939      xios_map<StdString, CXIOSManager::XIOSClient> CXIOSManager::Clients; 
    4040 
    4141      ///-------------------------------------------------------------- 
     42       
     43      void CXIOSManager::RunServer 
     44         (StdString clientName, comm::MPIComm comm_client_server, comm::MPIComm comm_server) 
     45      { 
     46             
     47      } 
     48       
     49      //-------------------------------------------------------------- 
    4250 
    4351      void CXIOSManager::RunClientServer(comm::MPIComm comm_client_server) 
     
    4553         using namespace comm; 
    4654         typedef std::pair<StdString, XIOSClient> StdPairStrClient; 
    47  
    48          MPIComm  world_comm  = CMPIManager::GetCommWorld(); 
    49          MPIGroup world_group = CMPIManager::GetGroupWorld(); 
    5055 
    5156         if (CMPIManager::IsMaster(comm_client_server)) 
     
    7176               const StdPairStrClient & elem = *iit; 
    7277               std::cout << " - " << elem.first 
    73                          << " > nombre de clients : "             << elem.second.nbClient 
    74                          << " , nombre de clients par serveur : " << elem.second.nbClientPServer 
    75                          << " , nombre de serveurs : "            << elem.second.nbClient/elem.second.nbClientPServer 
     78                         << " > nombre de clients : "              
     79                         << elem.second.nbClient 
     80                         << " , nombre de clients par serveur : "  
     81                         << elem.second.nbClientPServer 
     82                         << " , nombre de serveurs : "             
     83                         << elem.second.nbClient/elem.second.nbClientPServer 
    7684                         << std::endl; 
    7785            } 
     
    8694            iit  = CXIOSManager::Clients.begin(), 
    8795            eend = CXIOSManager::Clients.end(); 
     96          
     97         bool isClient = true, isIncl = false; 
     98         MPIComm comm_client = 0, comm_client_grp = 0; comm_client_server = 0; 
    8899 
    89100         for (;iit != eend; iit++) 
    90101         { 
    91102            const StdPairStrClient & elem = *iit; 
    92             MPIComm comm_client = 0, comm_client_grp = 0; comm_client_server = 0; 
    93  
    94             int       currentRank     = CMPIManager::GetCommRank(); 
    95             StdString clientName      = elem.first; 
    96             StdSize   nbClient        = elem.second.nbClient; 
    97             StdSize   nbClientPServer = elem.second.nbClientPServer; 
    98             StdSize   nbServer        = elem.second.nbClient/elem.second.nbClientPServer; 
    99             StdSize   totalproc       = nbClient + nbServer; 
     103 
     104            std::vector<int> clieindex, servindex ; 
     105            StdSize   currentRank      = CMPIManager::GetCommRank(); 
     106            StdString clientName       = elem.first; 
     107            StdSize   nbClient         = elem.second.nbClient; 
     108            StdSize   nbClientPServer  = elem.second.nbClientPServer; 
     109            StdSize   nbServer         = (elem.second.nbClient)/(elem.second.nbClientPServer); 
    100110 
    101111            for (StdSize i = 0; i<nbServer; i++) 
    102112            { 
    103113               end = start + nbClientPServer; 
    104                // Pas encore implémenté (interface de gestion de groupe/communicateur buggée) 
     114               MPIComm comm_  =  CMPIManager::CreateComm 
     115                  (CMPIManager::CreateSubGroup(CMPIManager::GetGroupWorld(), start, end)); 
     116               MPIComm comm__ =  CMPIManager::CreateComm 
     117                  (CMPIManager::CreateSubGroup(CMPIManager::GetGroupWorld(), start+1, end)); 
     118                   
     119               servindex.push_back(start); 
     120               for (StdSize j = start+1; j <= end; j++) 
     121                  clieindex.push_back(j); 
     122                                 
     123               if ((currentRank >= start) && (currentRank <= end)) 
     124               { 
     125                  comm_client_server = comm_; 
     126                  comm_client_grp    = comm__; 
     127                  isIncl = true; 
     128                  CXIOSManager::ClientName = clientName; 
     129               } 
     130               if (currentRank == start) 
     131               { 
     132                  isClient = false; 
     133                  CXIOSManager::Comm_Client_Server = comm_; 
     134               }                
     135               if (clieindex.size() == nbClient) 
     136               { 
     137                  MPIComm comm___  =  CMPIManager::CreateComm 
     138                  (CMPIManager::CreateSubGroup(CMPIManager::GetGroupWorld(), clieindex)); 
     139                  if (isIncl) 
     140                  { 
     141                     comm_client = comm___; 
     142                  } 
     143                  clieindex.clear(); 
     144                  isIncl = false; 
     145               } 
     146                
    105147               start = start + nbClientPServer + 1; 
    106148            } 
     149            CXIOSManager::Comm_Server =  CMPIManager::CreateComm 
     150               (CMPIManager::CreateSubGroup(CMPIManager::GetGroupWorld(), servindex)); 
     151             
     152         } 
     153          
     154         if (isClient) 
     155         { 
     156            CXIOSManager::Clients[CXIOSManager::ClientName].entry 
     157               (comm_client, comm_client_grp, comm_client_server); 
     158         } 
     159         else 
     160         { 
     161            CXIOSManager::RunServer(CXIOSManager::ClientName,  
     162                                    CXIOSManager::Comm_Client_Server, 
     163                                    CXIOSManager::Comm_Server); 
    107164         } 
    108165      } 
  • XMLIO_V2/dev/dev_rv/src/xmlio/manager/xios_manager.hpp

    r152 r177  
    2424            void (*entry)(comm::MPIComm, comm::MPIComm, comm::MPIComm) ; 
    2525         } XIOSClient; 
     26          
     27      public: 
    2628 
    2729         /// Initialisation et finalisation de la bibliothÚque /// 
     
    3739         /// Lancement des serveurs et/ou des clients /// 
    3840         static void RunServer(StdString clientName, 
    39                                comm::MPIComm comm_client_server, comm::MPIComm comm_server); // Not implemented yet. 
     41                               comm::MPIComm comm_client_server, comm::MPIComm comm_server); 
    4042         static void RunClient(comm::MPIComm comm_client = 
    41                                comm::CMPIManager::GetCommWorld());                           // Not implemented yet. 
     43                               comm::CMPIManager::GetCommWorld()); 
    4244         static void RunClientServer(comm::MPIComm comm_client_server = 
    4345                                     comm::CMPIManager::GetCommWorld()); 
Note: See TracChangeset for help on using the changeset viewer.