Arcane  v3.15.3.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ITimeStats.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* ITimeStats.h (C) 2000-2025 */
9/* */
10/* Interface gérant les statistiques sur les temps d'exécution. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ITIMESTATS_H
13#define ARCANE_CORE_ITIMESTATS_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24class Properties;
25class Timer;
26class JSONWriter;
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30/*!
31 * \internal
32 * \brief Interface gérant les statistiques sur les temps d'exécution.
33 *
34 * Il faut appeler beginGatherStats() pour commencer à collecter les
35 * informations et appeler endGatherStats() pour arrêter la collection.
36 *
37 * En général cette interface ne s'utilise pas directement mais par
38 * l'intermédiaire des classes Timer::Phase et Timer::Action.
39 *
40 * Les méthodes de cette classe ne doivent être appelées que par un seul thread.
41 */
43{
44 public:
45
46 // Libère les ressources.
47 virtual ~ITimeStats() = default;
48
49 public:
50
51 //! Démarre la collection des temps
52 virtual void beginGatherStats() = 0;
53 //! Arrête la collection des temps
54 virtual void endGatherStats() = 0;
55
56 public:
57
58 virtual void beginAction(const String& action_name) = 0;
59 virtual void endAction(const String& action_name, bool print_time) = 0;
60
61 virtual void beginPhase(eTimePhase phase) = 0;
62 virtual void endPhase(eTimePhase phase) = 0;
63
64 public:
65
66 /*!
67 * \brief Temps réel écoulé pour la phase \a phase
68 *
69 * Retourne le temps réel écoulé (en seconde) pour la phase \a phase.
70 */
71 virtual Real elapsedTime(eTimePhase phase) = 0;
72
73 /*!
74 * \brief Temps écoulé pour une phase d'une action.
75 *
76 * Retourne le temps réel écoulé (en seconde) pour la phase \a phase
77 * de l'action \a action. Le temps retourné est celui de l'action et
78 * de chacune de ses filles.
79 */
80 virtual Real elapsedTime(eTimePhase phase, const String& action) = 0;
81
82 /*!
83 * \brief Affiche les statistiques d'une action.
84 *
85 * Affiche les statistiques de l'action \a name ainsi que ces sous-actions
86 * pour l'itération courante.
87 */
88 virtual void dumpCurrentStats(const String& name) = 0;
89
90 public:
91
92 /*!
93 * \brief Affiche les statistiques sur les temps d'exécution.
94 *
95 * Il est possible de spécifier une valeur pour avoir un temps
96 * par itération ou par entité. Si \a use_elapsed_time est vrai,
97 * utilise le temps horloge, sinon utilise le temps CPU.
98 */
99 virtual void dumpStats(std::ostream& ostr, bool is_verbose, Real nb,
100 const String& name, bool use_elapsed_time = false) = 0;
101
102 /*!
103 * \brief Affiche la date actuelle et la mémoire consommée.
104 *
105 * Cette opération est collective sur \a pm.
106 *
107 * Cette opération affiche la mémoire consommée pour le sous-domaine
108 * courant ainsi que le min et le max pour tous les sous-domaines.
109 */
111
112 /*!
113 * \brief Indique si les statistiques sont actives.
114 *
115 * Les statistiques sont actives entre l'appel à beginGatherStats()
116 * et endGatherStats().
117 */
118 virtual bool isGathering() const = 0;
119
120 //! Sérialise dans l'écrivain \a writer les statistiques temporelles.
121 virtual void dumpStatsJSON(JSONWriter& writer) = 0;
122
123 //! Interface de collection associée
124 virtual ITimeMetricCollector* metricCollector() = 0;
125
126 /*!
127 * \brief Notifie qu'on commence une nouvelle itération de la boucle de calcul.
128 *
129 * Cette information est utilisée pour calculer les temps par itération.
130 */
131 virtual void notifyNewIterationLoop() = 0;
132 virtual void saveTimeValues(Properties* p) = 0;
133 virtual void mergeTimeValues(Properties* p) = 0;
134
135 /*
136 * \brief Remet à zéro les statistiques courantes une action est ses sous-actions
137 *
138 * Remet à zéro les statistiques pour l'action \a action_name est ses
139 * sous-actions. Si aucune action de nom \a action_name n'existe, ne fait rien.
140 *
141 * Cette méthode est réservée pour les tests et ne doit pas être utilisée
142 * en dehors de cette configuration pour éviter de rendre invalides les
143 * statistiques temporelles.
144 */
145 virtual void resetStats(const String& action_name) = 0;
146};
147
148/*---------------------------------------------------------------------------*/
149/*---------------------------------------------------------------------------*/
150
151} // End namespace Arcane
152
153/*---------------------------------------------------------------------------*/
154/*---------------------------------------------------------------------------*/
155
156#endif
157
Déclarations des types généraux de Arcane.
Interface du gestionnaire de parallélisme pour un sous-domaine.
virtual Real elapsedTime(eTimePhase phase)=0
Temps réel écoulé pour la phase phase.
virtual void dumpTimeAndMemoryUsage(IParallelMng *pm)=0
Affiche la date actuelle et la mémoire consommée.
virtual void dumpCurrentStats(const String &name)=0
Affiche les statistiques d'une action.
virtual void endGatherStats()=0
Arrête la collection des temps.
virtual void beginGatherStats()=0
Démarre la collection des temps.
virtual ITimeMetricCollector * metricCollector()=0
Interface de collection associée.
virtual void dumpStats(std::ostream &ostr, bool is_verbose, Real nb, const String &name, bool use_elapsed_time=false)=0
Affiche les statistiques sur les temps d'exécution.
virtual bool isGathering() const =0
Indique si les statistiques sont actives.
virtual void notifyNewIterationLoop()=0
Notifie qu'on commence une nouvelle itération de la boucle de calcul.
virtual Real elapsedTime(eTimePhase phase, const String &action)=0
Temps écoulé pour une phase d'une action.
virtual void dumpStatsJSON(JSONWriter &writer)=0
Sérialise dans l'écrivain writer les statistiques temporelles.
Ecrivain au format JSON.
Definition JSONWriter.h:33
Liste de propriétés.
Definition Properties.h:64
Référence à une instance.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eTimePhase
Phase d'une action temporelle.