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