LCOV - code coverage report
Current view: top level - usr/include/openmpi-x86_64/openmpi/ompi/mpi/cxx - intracomm.h (source / functions) Hit Total Coverage
Test: ctest_coverage.info Lines: 0 1 0.0 %
Date: 2023-11-06 10:06:49 Functions: 0 1 0.0 %

          Line data    Source code
       1             : // -*- c++ -*-
       2             : //
       3             : // Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
       4             : //                         University Research and Technology
       5             : //                         Corporation.  All rights reserved.
       6             : // Copyright (c) 2004-2005 The University of Tennessee and The University
       7             : //                         of Tennessee Research Foundation.  All rights
       8             : //                         reserved.
       9             : // Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
      10             : //                         University of Stuttgart.  All rights reserved.
      11             : // Copyright (c) 2004-2005 The Regents of the University of California.
      12             : //                         All rights reserved.
      13             : // Copyright (c) 2006      Cisco Systems, Inc.  All rights reserved.
      14             : // $COPYRIGHT$
      15             : //
      16             : // Additional copyrights may follow
      17             : //
      18             : // $HEADER$
      19             : //
      20             : 
      21             : class Intracomm : public Comm {
      22             : public:
      23             : 
      24             :   // construction
      25           0 :   Intracomm() { }
      26             :   // copy
      27             :   Intracomm(const Comm_Null& data) : Comm(data) { }
      28             :   // inter-language operability
      29             : 
      30             : #if 0 /* OMPI_ENABLE_MPI_PROFILING */
      31             :   //NOTE: it is extremely important that Comm(data) happens below
      32             :   //  because there is a not only pmpi_comm in this Intracomm but
      33             :   //  there is also a pmpi_comm in the inherited Comm part. Both
      34             :   //  of these pmpi_comm's need to be initialized with the same
      35             :   //  MPI_Comm object. Also the assignment operators must take this
      36             :   //  into account.
      37             :   Intracomm(const Intracomm& data) : Comm(data), pmpi_comm(data) { }
      38             : 
      39             :   Intracomm(MPI_Comm data) : Comm(data), pmpi_comm(data) { }
      40             : 
      41             :   Intracomm(const PMPI::Intracomm& data)
      42             :     : Comm((const PMPI::Comm&)data), pmpi_comm(data) { }
      43             : 
      44             :   // assignment
      45             :   Intracomm& operator=(const Intracomm& data) {
      46             :     Comm::operator=(data);
      47             :     pmpi_comm = data.pmpi_comm;
      48             :     return *this;
      49             :   }
      50             :   Intracomm& operator=(const Comm_Null& data) {
      51             :     Comm::operator=(data);
      52             :     pmpi_comm = (PMPI::Intracomm)data; return *this;
      53             :   }
      54             :   // inter-language operability
      55             :   Intracomm& operator=(const MPI_Comm& data) {
      56             :     Comm::operator=(data);
      57             :     pmpi_comm = data;
      58             :     return *this;
      59             :   }
      60             : 
      61             : #else
      62             :   Intracomm(const Intracomm& data) : Comm(data.mpi_comm) { }
      63             : 
      64             :   inline Intracomm(MPI_Comm data);
      65             : 
      66             :   // assignment
      67             :   Intracomm& operator=(const Intracomm& data) {
      68             :     mpi_comm = data.mpi_comm; return *this;
      69             :   }
      70             : 
      71             :   Intracomm& operator=(const Comm_Null& data) {
      72             :     mpi_comm = data; return *this;
      73             :   }
      74             : 
      75             :   // inter-language operability
      76             :   Intracomm& operator=(const MPI_Comm& data) {
      77             :     mpi_comm = data; return *this; }
      78             : 
      79             : #endif
      80             : 
      81             :   //
      82             :   // Collective Communication
      83             :   //
      84             :   // All the rest are up in comm.h -- Scan and Exscan are not defined
      85             :   // in intercomm's, so they're down here in Intracomm.
      86             :   //
      87             :   virtual void
      88             :   Scan(const void *sendbuf, void *recvbuf, int count,
      89             :        const Datatype & datatype, const Op & op) const;
      90             : 
      91             :   virtual void
      92             :   Exscan(const void *sendbuf, void *recvbuf, int count,
      93             :          const Datatype & datatype, const Op & op) const;
      94             : 
      95             :   //
      96             :   // Communicator maintenance
      97             :   //
      98             : 
      99             :   Intracomm Dup() const;
     100             : 
     101             :   virtual Intracomm& Clone() const;
     102             : 
     103             :   virtual Intracomm
     104             :   Create(const Group& group) const;
     105             : 
     106             :   virtual Intracomm
     107             :   Split(int color, int key) const;
     108             : 
     109             :   virtual Intercomm
     110             :   Create_intercomm(int local_leader, const Comm& peer_comm,
     111             :                    int remote_leader, int tag) const;
     112             : 
     113             :   virtual Cartcomm
     114             :   Create_cart(int ndims, const int dims[],
     115             :               const bool periods[], bool reorder) const;
     116             : 
     117             :   virtual Graphcomm
     118             :   Create_graph(int nnodes, const int index[],
     119             :                const int edges[], bool reorder) const;
     120             : 
     121             : 
     122             :   //
     123             :   // Process Creation and Management
     124             :   //
     125             : 
     126             :   virtual Intercomm Accept(const char* port_name, const Info& info, int root)
     127             :     const;
     128             : 
     129             :   virtual Intercomm Connect(const char* port_name, const Info& info, int root)
     130             :     const;
     131             : 
     132             :   virtual Intercomm Spawn(const char* command, const char* argv[],
     133             :                           int maxprocs, const Info& info, int root) const;
     134             : 
     135             :   virtual Intercomm Spawn(const char* command, const char* argv[],
     136             :                           int maxprocs, const Info& info,
     137             :                           int root, int array_of_errcodes[]) const;
     138             : 
     139             :   virtual Intercomm Spawn_multiple(int count, const char* array_of_commands[],
     140             :                                    const char** array_of_argv[],
     141             :                                    const int array_of_maxprocs[],
     142             :                                    const Info array_of_info[], int root);
     143             : 
     144             :   virtual Intercomm Spawn_multiple(int count, const char* array_of_commands[],
     145             :                                    const char** array_of_argv[],
     146             :                                    const int array_of_maxprocs[],
     147             :                                    const Info array_of_info[], int root,
     148             :                                    int array_of_errcodes[]);
     149             : 
     150             : 
     151             :   //#if 0 /* OMPI_ENABLE_MPI_PROFILING */
     152             :   //  virtual const PMPI::Comm& get_pmpi_comm() const { return pmpi_comm; }
     153             :   //#endif
     154             : protected:
     155             : 
     156             : 
     157             : #if 0 /* OMPI_ENABLE_MPI_PROFILING */
     158             :   PMPI::Intracomm pmpi_comm;
     159             : #endif
     160             : 
     161             :   // Convert an array of p_nbr Info object into an array of MPI_Info.
     162             :   // A pointer to the allocated array is returned and must be
     163             :   // eventually deleted.
     164             :   static inline MPI_Info *convert_info_to_mpi_info(int p_nbr,
     165             :                                                    const Info p_info_tbl[]);
     166             : };

Generated by: LCOV version 1.16