Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MpiParallelNonBlockingCollective.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 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/* MpiParallelNonBlockingCollective.cc (C) 2000-2016 */
9/* */
10/* Implémentation des collectives non bloquantes avec MPI. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/utils/ArcanePrecomp.h"
15
16#include "arcane/parallel/mpi/MpiParallelMng.h"
17#include "arcane/parallel/mpi/MpiParallelNonBlockingCollectiveDispatch.h"
18#include "arcane/parallel/mpi/MpiParallelNonBlockingCollective.h"
19#include "arcane/parallel/mpi/MpiAdapter.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24ARCANE_BEGIN_NAMESPACE
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29MpiParallelNonBlockingCollective::
30MpiParallelNonBlockingCollective(ITraceMng* tm,IParallelMng* pm,MpiAdapter* adapter)
31: ParallelNonBlockingCollectiveDispatcher(pm)
32, m_trace_mng(tm)
33, m_adapter(adapter)
34{
35}
36
37/*---------------------------------------------------------------------------*/
38/*---------------------------------------------------------------------------*/
39
40MpiParallelNonBlockingCollective::
41~MpiParallelNonBlockingCollective()
42{
43}
44
45/*---------------------------------------------------------------------------*/
46/*---------------------------------------------------------------------------*/
47
48void MpiParallelNonBlockingCollective::
49build()
50{
51 MpiAdapter* adapter = m_adapter;
52 ITraceMng* tm = m_trace_mng;
58 auto i = new MpiParallelNonBlockingCollectiveDispatchT<int>(tm,this,adapter);
60 auto l = new MpiParallelNonBlockingCollectiveDispatchT<long>(tm,this,adapter);
72 _setDispatchers(c,sc,uc,s,us,i,ui,l,ul,ll,ull,
73 f,d,ld,r2,r3,r22,r33,hpr);
74}
75
76/*---------------------------------------------------------------------------*/
77/*---------------------------------------------------------------------------*/
78
79Parallel::Request MpiParallelNonBlockingCollective::
80barrier()
81{
82 return m_adapter->nonBlockingBarrier();
83}
84
85/*---------------------------------------------------------------------------*/
86/*---------------------------------------------------------------------------*/
87
88bool MpiParallelNonBlockingCollective::
89hasValidReduceForDerivedType() const
90{
91 bool is_valid = true;
92
93#if defined(OMPI_MAJOR_VERSION) && defined(OMPI_MINOR_VERSION) && defined(OMPI_RELEASE_VERSION)
94 // Pour l'instant toutes les versions connues de OpenMPI (jusqu'à la 1.8.4)
95 // ont un bug pour les reduce sur les types dérivés.
96 is_valid = false;
97#endif
98
99 return is_valid;
100}
101
102/*---------------------------------------------------------------------------*/
103/*---------------------------------------------------------------------------*/
104
105ARCANE_END_NAMESPACE
106
107/*---------------------------------------------------------------------------*/
108/*---------------------------------------------------------------------------*/
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Interface du gestionnaire de traces.
Requête d'un message.
Definition Request.h:77