Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
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 of a shared memory message queue. */
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"
21
23
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
30{
31using ByteSpan = Arccore::ByteSpan;
32using ByteConstSpan = Arccore::ByteConstSpan;
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
36
42class ARCANE_THREAD_EXPORT SendBufferInfo
43{
44 public:
45
46 SendBufferInfo() = default;
47 SendBufferInfo(ConstMemoryView memory_buffer)
48 : m_memory_buffer(memory_buffer)
49 {}
50 SendBufferInfo(const ISerializer* serializer)
51 : m_serializer(serializer)
52 {}
53
54 public:
55
56 ByteConstSpan memoryBuffer() { return m_memory_buffer.bytes(); }
57 const ISerializer* serializer() { return m_serializer; }
58
59 private:
60
61 ConstMemoryView m_memory_buffer;
62 const ISerializer* m_serializer = nullptr;
63};
64
65/*---------------------------------------------------------------------------*/
66/*---------------------------------------------------------------------------*/
67
73class ARCANE_THREAD_EXPORT ReceiveBufferInfo
74{
75 public:
76
77 ReceiveBufferInfo() = default;
78 explicit ReceiveBufferInfo(MutableMemoryView memory_buffer)
79 : m_memory_buffer(memory_buffer)
80 {}
81 explicit ReceiveBufferInfo(ISerializer* serializer)
82 : m_serializer(serializer)
83 {}
84
85 public:
86
87 ByteSpan memoryBuffer() { return m_memory_buffer.bytes(); }
88 ISerializer* serializer() { return m_serializer; }
89
90 private:
91
92 MutableMemoryView m_memory_buffer;
93 ISerializer* m_serializer = nullptr;
94};
95
96/*---------------------------------------------------------------------------*/
97/*---------------------------------------------------------------------------*/
98
103class ARCANE_THREAD_EXPORT ISharedMemoryMessageQueue
104: public IRequestCreator
105{
106 public:
107
108 using MessageSourceInfo = Parallel::MessageSourceInfo;
109
110 public:
111
112 virtual ~ISharedMemoryMessageQueue() = default;
113
114 public:
115
116 virtual void init(Integer nb_thread) = 0;
117 virtual void waitAll(ArrayView<Request> requests) = 0;
118 virtual void waitSome(Int32 rank, ArrayView<Request> requests,
119 ArrayView<bool> requests_done, bool is_non_blocking) = 0;
120 virtual void setTraceMng(Int32 rank, ITraceMng* tm) = 0;
121
122 public:
123
124 virtual Request addReceive(const PointToPointMessageInfo& message, ReceiveBufferInfo buf) = 0;
125 virtual Request addSend(const PointToPointMessageInfo& message, SendBufferInfo buf) = 0;
126 virtual MessageId probe(const PointToPointMessageInfo& message) = 0;
127 virtual MessageSourceInfo legacyProbe(const PointToPointMessageInfo& message) = 0;
128};
129
130/*---------------------------------------------------------------------------*/
131/*---------------------------------------------------------------------------*/
132
133} // End namespace Arcane::MessagePassing
134
135/*---------------------------------------------------------------------------*/
136/*---------------------------------------------------------------------------*/
137
138#endif
Declarations of Arcane's general types.
Declarations of types for the 'base' component of Arccore.
File containing declarations concerning the message passing model.
Modifiable view of an array of type T.
Constant view on a contiguous memory region containing fixed-size elements.
Interface for a request creator.
Definition Request.h:57
Information about the source of a message.
Information for sending/receiving a point-to-point message.
Mutable view on a contiguous memory region containing fixed-size elements.
Declarations of types and methods used by message exchange mechanisms.
Int32 Integer
Type representing an integer.
std::int32_t Int32
Signed integer type of 32 bits.