Arcane  4.2.3.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ISharedMemoryMessageQueue.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/* ISharedMemoryMessageQueue.h (C) 2000-2023 */
9/* */
10/* Interface d'une file de messages en mémoire partagée. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_PARALLEL_THREAD_ISHAREDMEMORYMESSAGEQUEUE_H
13#define ARCANE_PARALLEL_THREAD_ISHAREDMEMORYMESSAGEQUEUE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/MemoryView.h"
18
19#include "arcane/parallel/thread/ArcaneThread.h"
20#include "arcane/Parallel.h"
21
22#include "arcane/ArcaneTypes.h"
23
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
30{
31using ByteSpan = Arccore::ByteSpan;
32using ByteConstSpan = Arccore::ByteConstSpan;
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
41class ARCANE_THREAD_EXPORT SendBufferInfo
42{
43 public:
44 SendBufferInfo() = default;
45 SendBufferInfo(ConstMemoryView memory_buffer)
46 : m_memory_buffer(memory_buffer){}
47 SendBufferInfo(const ISerializer* serializer)
48 : m_serializer(serializer){}
49 public:
50
51 ByteConstSpan memoryBuffer() const { return m_memory_buffer.bytes(); }
52 const ISerializer* serializer() const { return m_serializer; }
53
54 private:
55
56 ConstMemoryView m_memory_buffer;
57 const ISerializer* m_serializer = nullptr;
58};
59
60/*---------------------------------------------------------------------------*/
61/*---------------------------------------------------------------------------*/
67class ARCANE_THREAD_EXPORT ReceiveBufferInfo
68{
69 public:
70 ReceiveBufferInfo() = default;
71 explicit ReceiveBufferInfo(MutableMemoryView memory_buffer)
72 : m_memory_buffer(memory_buffer){}
73 explicit ReceiveBufferInfo(ISerializer* serializer)
74 : m_serializer(serializer){}
75 public:
76
77 ByteSpan memoryBuffer() const { return m_memory_buffer.bytes(); }
78 ISerializer* serializer() const { return m_serializer; }
79
80 private:
81 MutableMemoryView m_memory_buffer;
82 ISerializer* m_serializer = nullptr;
83};
84
85/*---------------------------------------------------------------------------*/
86/*---------------------------------------------------------------------------*/
91class ARCANE_THREAD_EXPORT ISharedMemoryMessageQueue
92: public IRequestCreator
93{
94 public:
95
96 using MessageSourceInfo = Parallel::MessageSourceInfo;
97
98 public:
99
100 virtual ~ISharedMemoryMessageQueue() = default;
101
102 public:
103
104 virtual void init(Integer nb_thread) = 0;
105 virtual void waitAll(Int32 calling_rank,ArrayView<Request> requests) = 0;
106 virtual void waitSome(Int32 rank, ArrayView<Request> requests,
107 ArrayView<bool> requests_done, bool is_non_blocking) = 0;
108 virtual void setTraceMng(Int32 rank, ITraceMng* tm) = 0;
109
110 public:
111
112 virtual Request addReceive(const PointToPointMessageInfo& message,ReceiveBufferInfo buf) =0;
113 virtual Request addSend(const PointToPointMessageInfo& message,SendBufferInfo buf) =0;
114 virtual MessageId probe(const PointToPointMessageInfo& message) =0;
115 virtual MessageSourceInfo legacyProbe(const PointToPointMessageInfo& message) =0;
116};
117
118/*---------------------------------------------------------------------------*/
119/*---------------------------------------------------------------------------*/
120
121} // End namespace Arcane::MessagePassing
122
123/*---------------------------------------------------------------------------*/
124/*---------------------------------------------------------------------------*/
125
126#endif
Déclarations des types de la composante 'base' de Arccore.
Vue modifiable d'un tableau d'un type T.
Vue constante sur une zone mémoire contigue contenant des éléments de taille fixe.
Interface du gestionnaire de traces.
Interface d'un créateur de requête.
Definition Request.h:52
Interface d'une file de messages avec les threads.
Informations sur la source d'un message.
Informations pour envoyer/recevoir un message point à point.
Informations des buffers de réception.
Requête d'un message.
Definition Request.h:77
Vue modifiable sur une zone mémoire contigue contenant des éléments de taille fixe.
Déclarations des types et méthodes utilisés par les mécanismes d'échange de messages.
Int32 Integer
Type représentant un entier.
std::int32_t Int32
Type entier signé sur 32 bits.