Ignore:
Timestamp:
06/29/22 18:19:45 (2 years ago)
Author:
ymipsl
Message:
  • Implement new infrastructure for transfert protocol.
  • new purelly one sided protocol is now available, the previous protocol (legacy, mix send/recv and one sided) is still available. Other specific protocol could be implemented more easilly in future.
  • switch can be operate with "transport_protocol" variable in XIOS context :

ex:
<variable id="transport_protocol" type="string">one_sided</variable>

Available protocols are : one_sided, legacy or default. The default protocol is "legacy".

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/node/context.cpp

    r2337 r2343  
    77#include "duration.hpp" 
    88 
    9 #include "context_client.hpp" 
    10 #include "context_server.hpp" 
     9#include "legacy_context_client.hpp" 
     10#include "legacy_context_server.hpp" 
     11#include "one_sided_context_client.hpp" 
     12#include "one_sided_context_server.hpp" 
    1113#include "nc4_data_output.hpp" 
    1214#include "node_type.hpp" 
     
    532534    comms.push_back(intraCommClient); 
    533535    // attached_mode=parentServerContext_->isAttachedMode() ; //ym probably inherited from source context 
    534     server = new CContextServer(this,intraComm_, interCommServer); // check if we need to dupl. intraComm_ ? 
    535     client = new CContextClient(this,intraCommClient,interCommClient); 
     536    server = CContextServer::getNew(this,intraComm_, interCommServer); // check if we need to dupl. intraComm_ ? 
     537    client = CContextClient::getNew(this,intraCommClient,interCommClient); 
    536538    client->setAssociatedServer(server) ;   
    537539    server->setAssociatedClient(client) ;   
     
    594596      intraCommClient=intraComm_ ; 
    595597      MPI_Comm_dup(intraComm_, &intraCommServer) ; 
    596       client = new CContextClient(this, intraCommClient, interCommClient); 
    597       server = new CContextServer(this, intraCommServer, interCommServer); 
     598      client = CContextClient::getNew(this, intraCommClient, interCommClient); 
     599      server = CContextServer::getNew(this, intraCommServer, interCommServer); 
    598600      client->setAssociatedServer(server) ; 
    599601      server->setAssociatedClient(client) ; 
     
    631633        MPI_Comm_dup(intraComm_, &intraCommServer) ; 
    632634 
    633         CContextClient* client = new CContextClient(this, intraCommClient, interCommClient) ; 
    634         CContextServer* server = new CContextServer(this, intraCommServer, interCommServer) ; 
     635        CContextClient* client = CContextClient::getNew(this, intraCommClient, interCommClient) ; 
     636        CContextServer* server = CContextServer::getNew(this, intraCommServer, interCommServer) ; 
    635637        client->setAssociatedServer(server) ; 
    636638        server->setAssociatedClient(client) ; 
     
    728730        MPI_Comm_dup(interComm, &interCommClient) ; 
    729731        MPI_Comm_dup(interComm, &interCommServer) ; 
    730         CContextClient* client = new CContextClient(this, intraCommClient, interCommClient); 
    731         CContextServer* server = new CContextServer(this, intraCommServer, interCommServer); 
     732        CContextClient* client = CContextClient::getNew(this, intraCommClient, interCommClient); 
     733        CContextServer* server = CContextServer::getNew(this, intraCommServer, interCommServer); 
    732734        client->setAssociatedServer(server) ; 
    733735        server->setAssociatedClient(client) ; 
     
    750752       MPI_Comm_dup(interComm, &interCommServer) ; 
    751753       MPI_Comm_dup(interComm, &interCommClient) ; 
    752        CContextServer* server = new CContextServer(this, intraCommServer, interCommServer); 
    753        CContextClient* client = new CContextClient(this, intraCommClient, interCommClient); 
     754       CContextServer* server = CContextServer::getNew(this, intraCommServer, interCommServer); 
     755       CContextClient* client = CContextClient::getNew(this, intraCommClient, interCommClient); 
    754756       client->setAssociatedServer(server) ; 
    755757       server->setAssociatedClient(client) ; 
     
    765767   { 
    766768      registryOut->hierarchicalGatherRegistry() ; 
    767       if (server->intraCommRank==0) CXios::getRegistryManager()->merge(*registryOut) ; 
     769      if (server->getIntraCommRank()==0) CXios::getRegistryManager()->merge(*registryOut) ; 
    768770 
    769771      if (serviceType_==CServicesManager::CLIENT) 
Note: See TracChangeset for help on using the changeset viewer.