Skip to content

Commit 3e8c1a2

Browse files
Merge pull request #1753 from arcaneframework/dev/gg-move-some-implementation-of-runcommand-in-impl
Move remaining implementation of 'RunQueue' in 'RunQueueImpl'
2 parents ac56aa1 + 26bbdf7 commit 3e8c1a2

File tree

6 files changed

+71
-32
lines changed

6 files changed

+71
-32
lines changed

arcane/src/arcane/accelerator/NumArrayViews.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ NumArrayViewBase(const ViewBuildInfo& vbi, Span<const std::byte> bytes)
4343
impl::RunQueueImpl* q = vbi._internalQueue();
4444
if (q->isAutoPrefetchCommand()) {
4545
ConstMemoryView mem_view(bytes);
46-
q->_internalStream()->prefetchMemory(MemoryPrefetchArgs(mem_view).addAsync());
46+
q->prefetchMemory(MemoryPrefetchArgs(mem_view).addAsync());
4747
}
4848
}
4949

arcane/src/arcane/accelerator/core/RunQueue.cc

+13-23
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616

1717
#include "arcane/utils/FatalErrorException.h"
1818

19-
#include "arcane/accelerator/core/Runner.h"
2019
#include "arcane/accelerator/core/internal/IRunnerRuntime.h"
2120
#include "arcane/accelerator/core/internal/IRunQueueStream.h"
22-
#include "arcane/accelerator/core/RunQueueEvent.h"
2321
#include "arcane/accelerator/core/internal/IRunQueueEventImpl.h"
24-
#include "arcane/accelerator/core/Memory.h"
2522
#include "arcane/accelerator/core/internal/RunQueueImpl.h"
2623
#include "arcane/accelerator/core/internal/RunnerImpl.h"
24+
#include "arcane/accelerator/core/Runner.h"
25+
#include "arcane/accelerator/core/RunQueueEvent.h"
26+
#include "arcane/accelerator/core/Memory.h"
2727

2828
/*---------------------------------------------------------------------------*/
2929
/*---------------------------------------------------------------------------*/
@@ -230,7 +230,7 @@ void RunQueue::
230230
copyMemory(const MemoryCopyArgs& args) const
231231
{
232232
_checkNotNull();
233-
_internalStream()->copyMemory(args);
233+
m_p->copyMemory(args);
234234
}
235235

236236
/*---------------------------------------------------------------------------*/
@@ -240,7 +240,7 @@ void RunQueue::
240240
prefetchMemory(const MemoryPrefetchArgs& args) const
241241
{
242242
_checkNotNull();
243-
_internalStream()->prefetchMemory(args);
243+
m_p->prefetchMemory(args);
244244
}
245245

246246
/*---------------------------------------------------------------------------*/
@@ -250,8 +250,7 @@ void RunQueue::
250250
waitEvent(RunQueueEvent& event)
251251
{
252252
_checkNotNull();
253-
auto* p = event._internalEventImpl();
254-
return p->waitForEvent(_internalStream());
253+
m_p->waitEvent(event);
255254
}
256255

257256
/*---------------------------------------------------------------------------*/
@@ -260,8 +259,9 @@ waitEvent(RunQueueEvent& event)
260259
void RunQueue::
261260
waitEvent(Ref<RunQueueEvent>& event)
262261
{
263-
_checkNotNull();
264-
waitEvent(*event.get());
262+
RunQueueEvent* e = event.get();
263+
ARCANE_CHECK_POINTER(e);
264+
waitEvent(*e);
265265
}
266266

267267
/*---------------------------------------------------------------------------*/
@@ -271,8 +271,7 @@ void RunQueue::
271271
recordEvent(RunQueueEvent& event)
272272
{
273273
_checkNotNull();
274-
auto* p = event._internalEventImpl();
275-
return p->recordQueue(_internalStream());
274+
m_p->recordEvent(event);
276275
}
277276

278277
/*---------------------------------------------------------------------------*/
@@ -281,8 +280,9 @@ recordEvent(RunQueueEvent& event)
281280
void RunQueue::
282281
recordEvent(Ref<RunQueueEvent>& event)
283282
{
284-
_checkNotNull();
285-
recordEvent(*event.get());
283+
RunQueueEvent* e = event.get();
284+
ARCANE_CHECK_POINTER(e);
285+
recordEvent(*e);
286286
}
287287

288288
/*---------------------------------------------------------------------------*/
@@ -320,16 +320,6 @@ isAsync() const
320320
/*---------------------------------------------------------------------------*/
321321
/*---------------------------------------------------------------------------*/
322322

323-
bool RunQueue::
324-
_isAutoPrefetchCommand() const
325-
{
326-
_checkNotNull();
327-
return m_p->m_runner_impl->isAutoPrefetchCommand();
328-
}
329-
330-
/*---------------------------------------------------------------------------*/
331-
/*---------------------------------------------------------------------------*/
332-
333323
bool RunQueue::
334324
isAcceleratorPolicy() const
335325
{

arcane/src/arcane/accelerator/core/RunQueue.h

-1
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,6 @@ class ARCANE_ACCELERATOR_CORE_EXPORT RunQueue
226226
// Pour VariableViewBase
227227
friend class VariableViewBase;
228228
friend class NumArrayViewBase;
229-
bool _isAutoPrefetchCommand() const;
230229

231230
private:
232231

arcane/src/arcane/accelerator/core/RunQueueEvent.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
22
//-----------------------------------------------------------------------------
3-
// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
3+
// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
44
// See the top-level COPYRIGHT file for details.
55
// SPDX-License-Identifier: Apache-2.0
66
//-----------------------------------------------------------------------------
77
/*---------------------------------------------------------------------------*/
8-
/* RunQueueEvent.h (C) 2000-2022 */
8+
/* RunQueueEvent.h (C) 2000-2024 */
99
/* */
1010
/* Evènement sur une file d'exécution. */
1111
/*---------------------------------------------------------------------------*/
@@ -37,7 +37,8 @@ class ARCANE_ACCELERATOR_CORE_EXPORT RunQueueEvent
3737
{
3838
friend RunQueueEvent makeEvent(Runner& runner);
3939
friend Ref<RunQueueEvent> makeEventRef(Runner& runner);
40-
friend class RunQueue;
40+
friend RunQueue;
41+
friend impl::RunQueueImpl;
4142

4243
private:
4344

arcane/src/arcane/accelerator/core/RunQueueImpl.cc

+43-3
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@
1616
#include "arcane/utils/FatalErrorException.h"
1717
#include "arcane/utils/MemoryUtils.h"
1818

19-
#include "arcane/accelerator/core/Runner.h"
20-
#include "arcane/accelerator/core/RunQueueBuildInfo.h"
2119
#include "arcane/accelerator/core/internal/IRunnerRuntime.h"
2220
#include "arcane/accelerator/core/internal/IRunQueueStream.h"
23-
#include "arcane/accelerator/core/DeviceId.h"
2421
#include "arcane/accelerator/core/internal/RunCommandImpl.h"
2522
#include "arcane/accelerator/core/internal/RunnerImpl.h"
23+
#include "arcane/accelerator/core/internal/IRunQueueEventImpl.h"
24+
#include "arcane/accelerator/core/Runner.h"
25+
#include "arcane/accelerator/core/RunQueueBuildInfo.h"
26+
#include "arcane/accelerator/core/DeviceId.h"
27+
#include "arcane/accelerator/core/RunQueueEvent.h"
2628

2729
/*---------------------------------------------------------------------------*/
2830
/*---------------------------------------------------------------------------*/
@@ -119,6 +121,44 @@ isAutoPrefetchCommand() const
119121
/*---------------------------------------------------------------------------*/
120122
/*---------------------------------------------------------------------------*/
121123

124+
void RunQueueImpl::
125+
copyMemory(const MemoryCopyArgs& args) const
126+
{
127+
_internalStream()->copyMemory(args);
128+
}
129+
130+
/*---------------------------------------------------------------------------*/
131+
/*---------------------------------------------------------------------------*/
132+
133+
void RunQueueImpl::
134+
prefetchMemory(const MemoryPrefetchArgs& args) const
135+
{
136+
_internalStream()->prefetchMemory(args);
137+
}
138+
139+
/*---------------------------------------------------------------------------*/
140+
/*---------------------------------------------------------------------------*/
141+
142+
void RunQueueImpl::
143+
recordEvent(RunQueueEvent& event)
144+
{
145+
auto* p = event._internalEventImpl();
146+
return p->recordQueue(_internalStream());
147+
}
148+
149+
/*---------------------------------------------------------------------------*/
150+
/*---------------------------------------------------------------------------*/
151+
152+
void RunQueueImpl::
153+
waitEvent(RunQueueEvent& event)
154+
{
155+
auto* p = event._internalEventImpl();
156+
return p->waitForEvent(_internalStream());
157+
}
158+
159+
/*---------------------------------------------------------------------------*/
160+
/*---------------------------------------------------------------------------*/
161+
122162
RunQueueImpl* RunQueueImpl::
123163
create(RunnerImpl* r)
124164
{

arcane/src/arcane/accelerator/core/internal/RunQueueImpl.h

+10-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ namespace Arcane::Accelerator::impl
3333
/*!
3434
* \internal
3535
* \brief File d'exécution pour accélérateur.
36+
*
37+
* Cette classe gère l'implémentation d'une RunQueue.
38+
* La description des méthodes se trouve dans RunQueue.
3639
*/
3740
class ARCANE_ACCELERATOR_CORE_EXPORT RunQueueImpl
3841
{
@@ -68,7 +71,12 @@ class ARCANE_ACCELERATOR_CORE_EXPORT RunQueueImpl
6871
RunnerImpl* runner() const { return m_runner_impl; }
6972
MemoryAllocationOptions allocationOptions() const;
7073
bool isAutoPrefetchCommand() const;
71-
IRunQueueStream* _internalStream() const { return m_queue_stream; }
74+
75+
void copyMemory(const MemoryCopyArgs& args) const;
76+
void prefetchMemory(const MemoryPrefetchArgs& args) const;
77+
78+
void recordEvent(RunQueueEvent& event);
79+
void waitEvent(RunQueueEvent& event);
7280

7381
public:
7482

@@ -87,6 +95,7 @@ class ARCANE_ACCELERATOR_CORE_EXPORT RunQueueImpl
8795

8896
RunCommandImpl* _internalCreateOrGetRunCommandImpl();
8997
IRunnerRuntime* _internalRuntime() const { return m_runtime; }
98+
IRunQueueStream* _internalStream() const { return m_queue_stream; }
9099
void _internalFreeRunningCommands();
91100
void _internalBarrier();
92101
bool _isInPool() const { return m_is_in_pool; }

0 commit comments

Comments
 (0)