Arcane  4.2.3.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
StandaloneMpiMessagePassingMng.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* StandaloneMpiMessagePassingMng.h (C) 2000-2026 */
9/* */
10/* Version autonome de MpiMessagePassingMng. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCCORE_MESSAGEPASSINGMPI_STANDALONEMPIMESSAGEPASSINGMNG_H
13#define ARCCORE_MESSAGEPASSINGMPI_STANDALONEMPIMESSAGEPASSINGMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arccore/message_passing_mpi/MessagePassingMpiGlobal.h"
18#include "arccore/message_passing/IMessagePassingMng.h"
19
20#include "arccore/base/Ref.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane::MessagePassing::Mpi
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30/*!
31 * \brief Version autonome de IMessagePassingMng associée à un communicateur MPI
32 *
33 * La création se fait via la méthode statique createRef() ou la méthode
34 * obsolète create().
35 *
36 * À partir du IMessagePassingMng retourné, il est possible de récupérer
37 * le MPI_Comm associé en utilisant les fonctions d'aide
38 * fillMpiCommunicatorIfValid() ou toMpiCommunicator().
39 */
40class ARCCORE_MESSAGEPASSINGMPI_EXPORT StandaloneMpiMessagePassingMng
41{
42 public:
43
44 /*!
45 * \brief Créé un gestionnaire associé au communicateur \a comm.
46 *
47 * \deprecated Utiliser createRef() à la place car cette méthode gère
48 * automatiquement la mémoire.
49 */
50 ARCCORE_DEPRECATED_REASON("Y2026: Use createRef() instead")
51 static IMessagePassingMng* create(MPI_Comm comm, bool clean_comm = false);
52
53 /*!
54 * \brief Créé un gestionnaire associé au communicateur \a comm.
55 *
56 * Si \a clean_comm est vrai, on appelle MPI_Comm_free() sur \a comm
57 * lors de la destruction de l'instance.
58 */
59 static Ref<IMessagePassingMng> createRef(MPI_Comm comm, bool clean_comm = false);
60
61 /*!
62 * \brief Créé un gestionnaire associé au communicateur MPI_WORLD_COMM.
63 */
65
66 /*!
67 * \brief Initialise MPI et créé un gestionnaire associé au communicateur
68 * MPI_WORLD_COMM.
69 *
70 * L'initialisation se fait en appelant `MPI_Init_thread()` avec le niveau
71 * de thread \a wanted_thread_level (une des valeurs `MPI_THREAD_SINGLE`,
72 * `MPI_THREAD_FUNNELED`, `MPI_THREAD_SERIALIZED`, `MPI_THREAD_MULTIPLE`)
73 * et les arguments \a argc et \a argv.
74 *
75 * MPI_Finalize() sera appelé lorsque l'instance sort du domaine de validité.
76 */
77 static Ref<IMessagePassingMng> createAndInitializeMPI(int* argc, char** argv[], int wanted_thread_level);
78};
79
80/*---------------------------------------------------------------------------*/
81/*---------------------------------------------------------------------------*/
82
83} // End namespace Arcane::MessagePassing::Mpi
84
85/*---------------------------------------------------------------------------*/
86/*---------------------------------------------------------------------------*/
87
88#endif
Gestion des références à une classe C++.
Interface du gestionnaire des échanges de messages.
Version autonome de IMessagePassingMng associée à un communicateur MPI.
static Ref< IMessagePassingMng > createAndInitializeMPI(int *argc, char **argv[], int wanted_thread_level)
Initialise MPI et créé un gestionnaire associé au communicateur MPI_WORLD_COMM.
static Ref< IMessagePassingMng > createRef(MPI_Comm comm, bool clean_comm=false)
Créé un gestionnaire associé au communicateur comm.
static Ref< IMessagePassingMng > createWorldRef()
Créé un gestionnaire associé au communicateur MPI_WORLD_COMM.
static IMessagePassingMng * create(MPI_Comm comm, bool clean_comm=false)
Créé un gestionnaire associé au communicateur comm.
Référence à une instance.