Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IPerformanceCounterService.h
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/* IPerformanceCounterService.h (C) 2000-2022 */
9/* */
10/* Interface d'un service d'accès aux compteurs de performance. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_UTILS_IPERFORMANCECOUNTERSERVICE_H
13#define ARCANE_UTILS_IPERFORMANCECOUNTERSERVICE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27/*!
28 * \brief Interface d'un service d'accès aux compteurs de performance.
29 */
30class ARCANE_UTILS_EXPORT IPerformanceCounterService
31{
32 public:
33
34 //! Taille minimale de la vue pour getCounters()
35 static const int MIN_COUNTER_SIZE = 8;
36
37 public:
38
39 virtual ~IPerformanceCounterService() = default;
40
41 public:
42
43 //! Initialise le service.
44 virtual void initialize() = 0;
45
46 /*!
47 * \brief Débute le suivi des compteurs de performance.
48 * \pre isStarted()==false.
49 * \post isStarted()==true.
50 */
51 virtual void start() = 0;
52
53 /*!
54 * \brief Arrête le suivi des compteurs de performance.
55 * \pre isStarted()==true.
56 * \post isStarted()==false.
57 */
58 virtual void stop() = 0;
59
60 //! Indique si le service a démarré (start() a été appelé)
61 virtual bool isStarted() const = 0;
62
63 /*!
64 * \brief Récupère les valeurs actuelles des compteurs.
65 *
66 * Cette méthode ne doit être appelée que si isStarted() est vrai.
67 *
68 * Si \a do_substract vaut \a false, remplit \a counters avec les
69 * valeurs actuelles des compteurs. Si \a do_substract vaut \a true,
70 * remplit counters avec la différence entre les valeurs actuelles et celles
71 * de \a counters lors de l'appel.
72 *
73 \code
74 * Int64ArrayView counters = ...;
75 * IPerformanceCounterService* p = ...;
76 * p->getCounters(counters,false);
77 * ... // Operation.
78 * p->getCounters(counters,true);
79 * info() << "Nb cycle=" << counters[0].
80 \endcode
81 *
82 * Le compteur d'indice 0 est toujours le nombre de cycle. \a counters
83 * doit valoir assez d'éléments pour renseigner au moins MIN_COUNTER_SIZE compteurs.
84 *
85 * \retval le nombre de compteurs renseignés.
86 * \pre isStarted()==true
87 */
88 virtual Int32 getCounters(Int64ArrayView counters, bool do_substract) = 0;
89
90 /*!
91 * \brief Valeur du compteur pour le nombre de cycles du CPU.
92 *
93 * \pre isStarted()==true
94 */
95 virtual Int64 getCycles() = 0;
96};
97
98/*---------------------------------------------------------------------------*/
99/*---------------------------------------------------------------------------*/
100
101} // End namespace Arcane
102
103/*---------------------------------------------------------------------------*/
104/*---------------------------------------------------------------------------*/
105
106#endif
Déclarations des types utilisés dans Arcane.
Interface d'un service d'accès aux compteurs de performance.
virtual bool isStarted() const =0
Indique si le service a démarré (start() a été appelé)
virtual Int32 getCounters(Int64ArrayView counters, bool do_substract)=0
Récupère les valeurs actuelles des compteurs.
virtual void stop()=0
Arrête le suivi des compteurs de performance.
virtual void start()=0
Débute le suivi des compteurs de performance.
virtual void initialize()=0
Initialise le service.
virtual Int64 getCycles()=0
Valeur du compteur pour le nombre de cycles du CPU.
Vue modifiable d'un tableau d'un type T.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-