Arcane  v4.1.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
AlinaSamplesCommon.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/* AlinaSamplesCommon.h (C) 2000-2026 */
9/* */
10/* Utilitary functions used by all samples. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCCORE_ALINA_ALINASAMPLESCOMMON_H
13#define ARCCORE_ALINA_ALINASAMPLESCOMMON_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arccore/alina/AlinaGlobal.h"
18#include "arccore/trace/TraceGlobal.h"
19#include "arccore/common/accelerator/CommonAcceleratorGlobal.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25#ifdef ARCANE_COMPONENT_arcane_alina
26#define ARCCORE_ALINA_SAMPLES_EXPORT ARCANE_EXPORT
27#else
28#define ARCCORE_ALINA_SAMPLES_EXPORT ARCANE_IMPORT
29#endif
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
33
34namespace Arcane::Alina
35{
36
38
39/*---------------------------------------------------------------------------*/
40/*---------------------------------------------------------------------------*/
41
42// Prototype for main functor
43typedef int (*MainFunction)(const SampleMainContext& ctx, int argc, char* argv[]);
44
45class ARCCORE_ALINA_SAMPLES_EXPORT SampleMainContext
46{
47 private:
48
49 SampleMainContext(ITraceMng* tm, Accelerator::IAcceleratorMng* accelerator_mng,
50 MessagePassing::IMessagePassingMng* message_passing_mng)
51 : m_trace_mng(tm)
52 , m_accelerator_mng(accelerator_mng)
53 , m_message_passing_mng(message_passing_mng)
54 {}
55
56 public:
57
58 static int execMain(MainFunction f, int argc, char* argv[]);
59
60 public:
61
62 ITraceMng* traceMng() const { return m_trace_mng; }
63 Accelerator::IAcceleratorMng* acceleratorMng() const { return m_accelerator_mng; }
64 MessagePassing::IMessagePassingMng* messagePassingMng() const { return m_message_passing_mng; }
65
66 private:
67
68 ITraceMng* m_trace_mng = nullptr;
69 Accelerator::IAcceleratorMng* m_accelerator_mng = nullptr;
70 MessagePassing::IMessagePassingMng* m_message_passing_mng = nullptr;
71};
72
73/*---------------------------------------------------------------------------*/
74/*---------------------------------------------------------------------------*/
75
76/*---------------------------------------------------------------------------*/
77/*---------------------------------------------------------------------------*/
78
79} // namespace Arcane::Alina
80
81/*---------------------------------------------------------------------------*/
82/*---------------------------------------------------------------------------*/
83
84#endif
Déclarations générales de la composante 'message_passing'.
Interface du gestionnaire de traces.
Interface du gestionnaire des échanges de messages.