Arcane  v3.15.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
arcane/src/arcane/utils/PlatformUtils.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/* PlatformUtils.h (C) 2000-2024 */
9/* */
10/* Fonctions utilitaires dépendant de la plateforme. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_UTILS_PLATFORMUTILS_H
13#define ARCANE_UTILS_PLATFORMUTILS_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arccore/base/PlatformUtils.h"
19
20#include <iosfwd>
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31class IOnlineDebuggerService;
32class IProfilingService;
33class IProcessorAffinityService;
34class IDynamicLibraryLoader;
35class ISymbolizerService;
36
37/*---------------------------------------------------------------------------*/
38/*---------------------------------------------------------------------------*/
44namespace platform
45{
46
54extern "C++" ARCANE_UTILS_EXPORT void platformInitialize();
55
61extern "C++" ARCANE_UTILS_EXPORT void platformTerminate();
62
63/*---------------------------------------------------------------------------*/
64/*---------------------------------------------------------------------------*/
65
87using Arccore::Platform::safeStringCopy;
89
94
99
102
103/*---------------------------------------------------------------------------*/
104/*---------------------------------------------------------------------------*/
111extern "C++" ARCANE_UTILS_EXPORT ISymbolizerService*
113
120extern "C++" ARCANE_UTILS_EXPORT ISymbolizerService*
121setSymbolizerService(ISymbolizerService* service);
122
128extern "C++" ARCANE_UTILS_EXPORT IProcessorAffinityService*
130
136extern "C++" ARCANE_UTILS_EXPORT IProcessorAffinityService*
137setProcessorAffinityService(IProcessorAffinityService* service);
138
144extern "C++" ARCANE_UTILS_EXPORT IProfilingService*
146
152extern "C++" ARCANE_UTILS_EXPORT IProfilingService*
153setProfilingService(IProfilingService* service);
154
160extern "C++" ARCANE_UTILS_EXPORT IOnlineDebuggerService*
162
168extern "C++" ARCANE_UTILS_EXPORT IOnlineDebuggerService*
169setOnlineDebuggerService(IOnlineDebuggerService* service);
170
176extern "C++" ARCANE_UTILS_EXPORT IThreadImplementation*
178
184extern "C++" ARCANE_UTILS_EXPORT IThreadImplementation*
185setThreadImplementationService(IThreadImplementation* service);
186
192extern "C++" ARCANE_UTILS_EXPORT IDynamicLibraryLoader*
194
200extern "C++" ARCANE_UTILS_EXPORT IDynamicLibraryLoader*
201setDynamicLibraryLoader(IDynamicLibraryLoader* idll);
202
208extern "C++" ARCANE_UTILS_EXPORT IPerformanceCounterService*
209setPerformanceCounterService(IPerformanceCounterService* service);
210
216extern "C++" ARCANE_UTILS_EXPORT IPerformanceCounterService*
218
219/*---------------------------------------------------------------------------*/
220/*---------------------------------------------------------------------------*/
226extern "C++" ARCANE_UTILS_EXPORT void
227resetAlarmTimer(Integer nb_second);
228
232extern "C++" ARCANE_UTILS_EXPORT bool
234
241extern "C++" ARCANE_UTILS_EXPORT void
242setHasDotNETRuntime(bool v);
243
244/*---------------------------------------------------------------------------*/
245/*---------------------------------------------------------------------------*/
246
248extern "C++" ARCANE_UTILS_EXPORT void
250
251/*---------------------------------------------------------------------------*/
252/*---------------------------------------------------------------------------*/
258extern "C++" ARCANE_DEPRECATED_REASON("Y2024: Use MemoryUtils::getDefaultDataAllocator() instead.")
259ARCANE_UTILS_EXPORT IMemoryAllocator*
261
262/*---------------------------------------------------------------------------*/
263/*---------------------------------------------------------------------------*/
272extern "C++" ARCANE_DEPRECATED_REASON("Y2024: This method is internal to Arcane")
273ARCANE_UTILS_EXPORT IMemoryAllocator*
274setAcceleratorHostMemoryAllocator(IMemoryAllocator* a);
275
276/*---------------------------------------------------------------------------*/
277/*---------------------------------------------------------------------------*/
290extern "C++" ARCANE_UTILS_EXPORT IMemoryAllocator*
292
293/*---------------------------------------------------------------------------*/
294/*---------------------------------------------------------------------------*/
304extern "C++" ARCANE_DEPRECATED_REASON("Y2024: This method is internal to Arcane")
305ARCANE_UTILS_EXPORT IMemoryRessourceMng*
307
308
309/*---------------------------------------------------------------------------*/
310/*---------------------------------------------------------------------------*/
319extern "C++" ARCANE_DEPRECATED_REASON("Y2024: This method is internal to Arcane. Use methods from MemoryUtils instead.")
320ARCANE_UTILS_EXPORT IMemoryRessourceMng*
322
323/*---------------------------------------------------------------------------*/
324/*---------------------------------------------------------------------------*/
335extern "C++" ARCANE_UTILS_EXPORT bool
337
338/*---------------------------------------------------------------------------*/
339/*---------------------------------------------------------------------------*/
350extern "C++" ARCANE_UTILS_EXPORT bool
351readAllFile(StringView filename, bool is_binary, Array<std::byte>& out_bytes);
352
353/*---------------------------------------------------------------------------*/
354/*---------------------------------------------------------------------------*/
358extern "C++" ARCANE_UTILS_EXPORT String
360
361/*---------------------------------------------------------------------------*/
362/*---------------------------------------------------------------------------*/
366extern "C++" ARCANE_UTILS_EXPORT Int64
368
369/*---------------------------------------------------------------------------*/
370/*---------------------------------------------------------------------------*/
382extern "C++" ARCANE_UTILS_EXPORT String
384
385/*---------------------------------------------------------------------------*/
386/*---------------------------------------------------------------------------*/
396extern "C++" ARCANE_UTILS_EXPORT void
398
399/*---------------------------------------------------------------------------*/
400/*---------------------------------------------------------------------------*/
404extern "C++" ARCANE_UTILS_EXPORT Int64
406
407/*---------------------------------------------------------------------------*/
408/*---------------------------------------------------------------------------*/
419extern "C++" ARCANE_UTILS_EXPORT String
421
422/*---------------------------------------------------------------------------*/
423/*---------------------------------------------------------------------------*/
431extern "C++" ARCANE_UTILS_EXPORT String
433
434/*---------------------------------------------------------------------------*/
435/*---------------------------------------------------------------------------*/
436
437// Définition du pragma pour indiquer l'indépendance des itérations
438
450// Pour les définitions, il faut finir par GCC car Clang et ICC définissent
451// la macro __GNU__
452// Pour CLANG, il n'y a pas encore d'équivalent au pragma ivdep de ICC.
453// Celui qui s'en approche le plus est:
454// #pragma clang loop vectorize(enable)
455// mais il ne force pas la vectorisation.
456#ifdef __clang__
457# define ARCANE_PRAGMA_IVDEP_VALUE "clang loop vectorize(enable)"
458#else
459# ifdef __INTEL_COMPILER
460# define ARCANE_PRAGMA_IVDEP_VALUE "ivdep"
461# else
462# ifdef __GNUC__
463# if (__GNUC__>=5)
464# define ARCANE_PRAGMA_IVDEP_VALUE "GCC ivdep"
465# endif
466# endif
467# endif
468#endif
469
470#ifdef ARCANE_PRAGMA_IVDEP_VALUE
471#define ARCANE_PRAGMA_IVDEP _Pragma(ARCANE_PRAGMA_IVDEP_VALUE)
472#else
473#define ARCANE_PRAGMA_IVDEP
474#define ARCANE_PRAGMA_IVDEP_VALUE ""
475#endif
476
477/*---------------------------------------------------------------------------*/
478/*---------------------------------------------------------------------------*/
479
480} // End namespace platform
481
482/*---------------------------------------------------------------------------*/
483/*---------------------------------------------------------------------------*/
484
485} // End namespace Arcane
486
487/*---------------------------------------------------------------------------*/
488/*---------------------------------------------------------------------------*/
489
490#endif
491
Déclarations des types utilisés dans Arcane.
Tableau d'items de types quelconques.
Gestion des ressources mémoire pour les CPU et accélérateurs.
Vue typée sur une liste d'entités d'une connectivité.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:149
Vue sur une chaîne de caractères UTF-8.
Definition StringView.h:47
Chaîne de caractères unicode.
IPerformanceCounterService * setPerformanceCounterService(IPerformanceCounterService *service)
Positionne le service utilisé pour gérer les compteurs interne du processeur.
void callDotNETGarbageCollector()
Appelle le Garbage Collector de '.Net' s'il est disponible.
String getLLDBStack()
Récupère la pile d'appel via lldb.
String getLoadedSharedLibraryFullPath(const String &dll_name)
Retourne le chemin complet d'une bibliothèque dynamique chargée.
ISymbolizerService * setSymbolizerService(ISymbolizerService *service)
Positionne le service pour obtenir des informations sur les symboles du code source.
IDynamicLibraryLoader * getDynamicLibraryLoader()
Service utilisé pour charger dynamiquement des bibliothèques.
void fillCommandLineArguments(StringList &arg_list)
Remplit arg_list avec les arguments de la ligne de commande.
void platformInitialize()
Initialisations spécifiques à une platforme.
IOnlineDebuggerService * setOnlineDebuggerService(IOnlineDebuggerService *service)
Positionne le service a utiliser pour l'architecture en ligne de debug.
ISymbolizerService * getSymbolizerService()
Service utilisé pour obtenir des informations sur les symboles du code source.
IProfilingService * getProfilingService()
Service utilisé pour obtenir pour obtenir des informations de profiling.
void resetAlarmTimer(Integer nb_second)
Remet à timer d'alarme à nb_second.
void platformTerminate()
Routines de fin de programme spécifiques à une platforme.
IProfilingService * setProfilingService(IProfilingService *service)
Positionne le service utilisé pour obtenir des informations de profiling.
IMemoryAllocator * getDefaultDataAllocator()
Allocateur par défaut pour les données.
Int64 getPageSize()
Taille des pages du système hôte en octets.
String getExeFullPath()
Retourne le nom complet avec le chemin de l'exécutable.
Int64 getRealTimeNS()
Temps horloge en nano-secondes.
bool readAllFile(StringView filename, bool is_binary, ByteArray &out_bytes)
Lit le contenu d'un fichier et le conserve dans out_bytes.
IProcessorAffinityService * setProcessorAffinityService(IProcessorAffinityService *service)
Positionne le service utilisé pour la gestion de l'affinité des processeurs.
void setHasDotNETRuntime(bool v)
Positionne si le code s'exécute avec le runtime .NET.
IProcessorAffinityService * getProcessorAffinityService()
Service utilisé pour la gestion de l'affinité des processeurs.
IThreadImplementation * getThreadImplementationService()
Service utilisé pour gérer les threads.
IDynamicLibraryLoader * setDynamicLibraryLoader(IDynamicLibraryLoader *idll)
Positionne le service utilisé pour charger dynamiquement des bibliothèques.
IPerformanceCounterService * getPerformanceCounterService()
Service utilisé pour obtenir pour obtenir les compteurs interne du processeur.
bool hasDotNETRuntime()
Vrai si le code s'exécute avec le runtime .NET.
String getGDBStack()
Récupère la pile d'appel via gdb.
IThreadImplementation * setThreadImplementationService(IThreadImplementation *service)
Positionne le service utilisé pour gérer les threads.
IOnlineDebuggerService * getOnlineDebuggerService()
Service utilisé pour obtenir la mise en place d'une architecture en ligne de debug.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
ARCCORE_BASE_EXPORT void dumpStackTrace(std::ostream &ostr)
Affiche la pile d'appel sur le flot ostr.
ARCCORE_BASE_EXPORT bool isFloatingExceptionEnabled()
Indique si les exceptions flottantes du processeur sont activées.
ARCCORE_BASE_EXPORT bool hasFloatingExceptionSupport()
Indique si l'implémentation permet de modifier l'état d'activation des exceptions flottantes.
ARCCORE_BASE_EXPORT bool isFileReadable(const String &file_name)
Vérifie que le fichier file_name est accessible et lisible.
ARCCORE_BASE_EXPORT String getStackTrace()
Retourne une chaîne de caractere contenant la pile d'appel.
ARCCORE_BASE_EXPORT IStackTraceService * getStackTraceService()
Service utilisé pour obtenir la pile d'appel.
ARCCORE_BASE_EXPORT String getCompilerId()
Chaîne de caractère permettant d'identifier le compilateur utilisé pour compiler Arccore.
ARCCORE_BASE_EXPORT String getEnvironmentVariable(const String &name)
Variable d'environnement du nom name.
ARCCORE_BASE_EXPORT String getCurrentDateTime()
Date et l'heure courante sous la forme ISO 8601.
ARCCORE_BASE_EXPORT void enableFloatingException(bool active)
Active ou désactive les exceptions lors d'un calcul flottant. Cette opération n'est pas supportée sur...
ARCCORE_BASE_EXPORT void stdMemcpy(void *to, const void *from,::size_t len)
Copie de zone mémoire.
ARCCORE_BASE_EXPORT Real getRealTime()
Temps Real utilisé en secondes.
ARCCORE_BASE_EXPORT bool removeFile(const String &file_name)
Supprime le fichier file_name.
ARCCORE_BASE_EXPORT void sleep(Integer nb_second)
Met le process en sommeil pendant nb_second secondes.
ARCCORE_BASE_EXPORT String getUserName()
Nom de l'utilisateur.
ARCCORE_BASE_EXPORT bool getConsoleHasColor()
Indique si la console supporte les couleurs.
ARCCORE_BASE_EXPORT String getCurrentDirectory()
Chemin du répertoire courant.
ARCCORE_BASE_EXPORT String getHomeDirectory()
Répertoire contenant les documents utilisateurs.
ARCCORE_BASE_EXPORT String getFileDirName(const String &file_name)
Retourne le nom du répertoire d'un fichier.
ARCCORE_BASE_EXPORT Int64 getCPUTime()
Temps CPU utilisé en microsecondes.
ARCCORE_BASE_EXPORT long unsigned int getFileLength(const String &filename)
Longueur du fichier filename. Si le fichier n'est pas lisible ou n'existe pas, retourne 0.
ARCCORE_BASE_EXPORT int getProcessId()
Numéro du processus.
ARCCORE_BASE_EXPORT String getCurrentDate()
Date courante.
ARCCORE_BASE_EXPORT bool recursiveCreateDirectory(const String &dir_name)
Créé un répertoire.
ARCCORE_BASE_EXPORT double getMemoryUsed()
Mémoire utilisée em octets.
ARCCORE_BASE_EXPORT void raiseFloatingException()
Lève une exception flottante.
ARCCORE_BASE_EXPORT IStackTraceService * setStackTraceService(IStackTraceService *service)
Positionne le service utilisé pour obtenir la pile d'appel.
ARCCORE_BASE_EXPORT long getCurrentTime()
Date courante.
ARCCORE_BASE_EXPORT bool isDenormalized(Real v)
Retourne true si v est dénormalisé (flottant invalide).
ARCCORE_BASE_EXPORT bool createDirectory(const String &dir_name)
Créé le répertoire.
ARCCORE_BASE_EXPORT String getHostName()
Nom de la machine sur lequel tourne le processus.
ARCCORE_BASE_EXPORT String timeToHourMinuteSecond(Real t)
Retourne un temps sous forme des heures, minutes et secondes.