Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::Accelerator::Runner

Gestionnaire d'exécution pour accélérateur. Plus de détails...

#include <arcane/accelerator/core/Runner.h>

+ Graphe de collaboration de Arcane::Accelerator::Runner:

Fonctions membres publiques

 Runner ()
 Créé un gestionnaire d'exécution non initialisé.
 
 Runner (eExecutionPolicy p)
 Créé et initialise un gestionnaire pour l'accélérateur p.
 
 Runner (eExecutionPolicy p, DeviceId device)
 Créé et initialise un gestionnaire pour l'accélérateur p et l'accélérateur device.
 
eExecutionPolicy executionPolicy () const
 Politique d'exécution associée.
 
void initialize (eExecutionPolicy v)
 Initialise l'instance. Cette méthode ne doit être appelée qu'une seule fois.
 
void initialize (eExecutionPolicy v, DeviceId device)
 Initialise l'instance. Cette méthode ne doit être appelée qu'une seule fois.
 
bool isInitialized () const
 Indique si l'instance a été initialisée.
 
void setConcurrentQueueCreation (bool v)
 Indique si on autorise la création de RunQueue depuis plusieurs threads.
 
bool isConcurrentQueueCreation () const
 Indique si la création concurrent de plusieurs RunQueue est autorisé
 
double cumulativeCommandTime () const
 Temps total passé dans les commandes associées à cette instance.
 
void setDeviceReducePolicy (eDeviceReducePolicy v)
 Positionne la politique d'exécution des réductions.
 
eDeviceReducePolicy deviceReducePolicy () const
 politique d'exécution des réductions
 
void setMemoryAdvice (ConstMemoryView buffer, eMemoryAdvice advice)
 Positionne un conseil sur la gestion d'une zone mémoire.
 
void unsetMemoryAdvice (ConstMemoryView buffer, eMemoryAdvice advice)
 Supprime un conseil sur la gestion d'une zone mémoire.
 
DeviceId deviceId () const
 Device associé à cette instance.
 
void setAsCurrentDevice ()
 Positionne le device associé à cette instance comme le device par défaut du contexte.
 
const DeviceInfodeviceInfo () const
 Information sur le device associé à cette instance.
 
void fillPointerAttribute (PointerAttribute &attr, const void *ptr)
 Remplit attr avec les informations concernant la zone mémoire pointée par ptr.
 
RunnerInternal_internalApi ()
 API interne à Arcane.
 

Fonctions membres publiques statiques

static const IDeviceInfoListdeviceInfoList (eExecutionPolicy policy)
 Liste des devices pour la politique d'exécution policy.
 

Fonctions membres privées

impl::IRunnerRuntime_internalRuntime () const
 
impl::RunnerImpl_impl () const
 
void _checkIsInit () const
 
bool _isAutoPrefetchCommand () const
 

Fonctions membres privées statiques

static RunQueue _makeQueue (const Runner &runner)
 
static RunQueue _makeQueue (const Runner &runner, const RunQueueBuildInfo &bi)
 
static Ref< RunQueue_makeQueueRef (const Runner &runner)
 
static Ref< RunQueue_makeQueueRef (Runner &runner, const RunQueueBuildInfo &bi)
 

Attributs privés

friend RunQueue
 
friend RunQueueEvent
 
std::shared_ptr< impl::RunnerImplm_p
 

Amis

RunQueue makeQueue (const Runner &runner)
 Créé une file associée à runner.
 
RunQueue makeQueue (const Runner *runner)
 Créé une file associée à runner.
 
RunQueue makeQueue (const Runner &runner, const RunQueueBuildInfo &bi)
 Créé une file associée à runner avec les propriétés bi.
 
RunQueue makeQueue (const Runner *runner, const RunQueueBuildInfo &bi)
 Créé une file associée à runner avec les propriétés bi.
 
Ref< RunQueuemakeQueueRef (const Runner &runner)
 Créé une référence sur file avec la politique d'exécution par défaut de runner.
 
Ref< RunQueuemakeQueueRef (Runner &runner, const RunQueueBuildInfo &bi)
 Créé une référence sur file avec la politique d'exécution par défaut de runner.
 
Ref< RunQueuemakeQueueRef (Runner *runner)
 Créé une référence sur file avec la politique d'exécution par défaut de runner.
 

Description détaillée

Gestionnaire d'exécution pour accélérateur.

Cette classe utilise une sémantique par référence

Une instance de cette classe représente un backend d'exécution. Il faut d'abord appelé initialize() avant de pouvoir utiliser les méthodes de l'instance ou alors il faut appeler l'un des constructeurs autre que le constructeur par défaut.

Une instance de cette classe est associée à un device qui n'est pas forcément celui utilisé par défaut pour le thread courant. Pour garantir que les kernels associés à ce runner seront bien exécutés sur le bon device il est nécessaire d'appeler au moins une fois la méthode setAsCurrentDevice().

Il est possible de changer le mécanisme utilisé pour les réductions via la méthode setDeviceReducePolicy(). Par défaut on utilise un kernel utilisant des synchronisations entre blocs. Cela permet de garantir la répétabilité des résultats.

Définition à la ligne 52 du fichier core/Runner.h.

Documentation des constructeurs et destructeur

◆ Runner() [1/3]

Arcane::Accelerator::Runner::Runner ( )

Créé un gestionnaire d'exécution non initialisé.

Il faudra appeler initialize() avant de pouvoir utiliser l'instance

Définition à la ligne 257 du fichier Runner.cc.

◆ Runner() [2/3]

Arcane::Accelerator::Runner::Runner ( eExecutionPolicy  p)
explicit

Créé et initialise un gestionnaire pour l'accélérateur p.

Définition à la ligne 266 du fichier Runner.cc.

Références initialize().

◆ Runner() [3/3]

Arcane::Accelerator::Runner::Runner ( eExecutionPolicy  p,
DeviceId  device 
)

Créé et initialise un gestionnaire pour l'accélérateur p et l'accélérateur device.

Définition à la ligne 276 du fichier Runner.cc.

Références initialize().

Documentation des fonctions membres

◆ _checkIsInit()

void Arcane::Accelerator::Runner::_checkIsInit ( ) const
private

Définition à la ligne 371 du fichier Runner.cc.

◆ _impl()

impl::RunnerImpl * Arcane::Accelerator::Runner::_impl ( ) const
inlineprivate

Définition à la ligne 178 du fichier core/Runner.h.

◆ _internalApi()

RunnerInternal * Arcane::Accelerator::Runner::_internalApi ( )

API interne à Arcane.

Définition à la ligne 478 du fichier Runner.cc.

◆ _internalRuntime()

impl::IRunnerRuntime * Arcane::Accelerator::Runner::_internalRuntime ( ) const
private

Définition à la ligne 289 du fichier Runner.cc.

◆ _isAutoPrefetchCommand()

bool Arcane::Accelerator::Runner::_isAutoPrefetchCommand ( ) const
private

Définition à la ligne 469 du fichier Runner.cc.

◆ _makeQueue() [1/2]

static RunQueue Arcane::Accelerator::Runner::_makeQueue ( const Runner runner)
inlinestaticprivate

Définition à la ligne 153 du fichier core/Runner.h.

◆ _makeQueue() [2/2]

static RunQueue Arcane::Accelerator::Runner::_makeQueue ( const Runner runner,
const RunQueueBuildInfo bi 
)
inlinestaticprivate

Définition à la ligne 157 du fichier core/Runner.h.

◆ _makeQueueRef() [1/2]

static Ref< RunQueue > Arcane::Accelerator::Runner::_makeQueueRef ( const Runner runner)
inlinestaticprivate

Définition à la ligne 161 du fichier core/Runner.h.

◆ _makeQueueRef() [2/2]

static Ref< RunQueue > Arcane::Accelerator::Runner::_makeQueueRef ( Runner runner,
const RunQueueBuildInfo bi 
)
inlinestaticprivate

Définition à la ligne 165 du fichier core/Runner.h.

◆ cumulativeCommandTime()

double Arcane::Accelerator::Runner::cumulativeCommandTime ( ) const

Temps total passé dans les commandes associées à cette instance.

Ce temps n'est significatif que si les RunQueue sont synchrones.

Définition à la ligne 381 du fichier Runner.cc.

◆ deviceId()

DeviceId Arcane::Accelerator::Runner::deviceId ( ) const

Device associé à cette instance.

Définition à la ligne 420 du fichier Runner.cc.

Référencé par deviceInfo().

◆ deviceInfo()

const DeviceInfo & Arcane::Accelerator::Runner::deviceInfo ( ) const

Information sur le device associé à cette instance.

Définition à la ligne 429 du fichier Runner.cc.

Références ARCANE_FATAL, Arcane::Accelerator::DeviceId::asInt32(), deviceId(), deviceInfoList(), et executionPolicy().

Référencé par Arcane::SubDomain::initialize().

◆ deviceInfoList()

const IDeviceInfoList * Arcane::Accelerator::Runner::deviceInfoList ( eExecutionPolicy  policy)
static

Liste des devices pour la politique d'exécution policy.

Si le runtime associé n'a pas encore été initialisé, cette méthode retourne nullptr.

Définition à la ligne 446 du fichier Runner.cc.

Références Arcane::Accelerator::None.

Référencé par deviceInfo().

◆ deviceReducePolicy()

eDeviceReducePolicy Arcane::Accelerator::Runner::deviceReducePolicy ( ) const

politique d'exécution des réductions

Définition à la ligne 344 du fichier Runner.cc.

◆ executionPolicy()

eExecutionPolicy Arcane::Accelerator::Runner::executionPolicy ( ) const

◆ fillPointerAttribute()

void Arcane::Accelerator::Runner::fillPointerAttribute ( PointerAttribute attr,
const void ptr 
)

Remplit attr avec les informations concernant la zone mémoire pointée par ptr.

Définition à la ligne 458 du fichier Runner.cc.

◆ initialize() [1/2]

void Arcane::Accelerator::Runner::initialize ( eExecutionPolicy  v)

Initialise l'instance. Cette méthode ne doit être appelée qu'une seule fois.

Définition à la ligne 353 du fichier Runner.cc.

Référencé par Arcane::Accelerator::arcaneInitializeRunner(), Runner(), et Runner().

◆ initialize() [2/2]

void Arcane::Accelerator::Runner::initialize ( eExecutionPolicy  v,
DeviceId  device 
)

Initialise l'instance. Cette méthode ne doit être appelée qu'une seule fois.

Définition à la ligne 362 du fichier Runner.cc.

◆ isConcurrentQueueCreation()

bool Arcane::Accelerator::Runner::isConcurrentQueueCreation ( ) const

Indique si la création concurrent de plusieurs RunQueue est autorisé

Définition à la ligne 326 du fichier Runner.cc.

◆ isInitialized()

bool Arcane::Accelerator::Runner::isInitialized ( ) const

Indique si l'instance a été initialisée.

Définition à la ligne 308 du fichier Runner.cc.

◆ setAsCurrentDevice()

void Arcane::Accelerator::Runner::setAsCurrentDevice ( )

Positionne le device associé à cette instance comme le device par défaut du contexte.

Cet appel est équivalent à cudaSetDevice() ou hipSetDevice();

Définition à la ligne 410 du fichier Runner.cc.

Référencé par Arcane::VariableSynchronizer::_setCurrentDevice(), et Arcane::Accelerator::arcaneInitializeRunner().

◆ setConcurrentQueueCreation()

void Arcane::Accelerator::Runner::setConcurrentQueueCreation ( bool  v)

Indique si on autorise la création de RunQueue depuis plusieurs threads.

Cela nécessite d'utiliser un verrou (comme std::mutex) et peut dégrader les performances. Le défaut est false.

Définition à la ligne 317 du fichier Runner.cc.

◆ setDeviceReducePolicy()

void Arcane::Accelerator::Runner::setDeviceReducePolicy ( eDeviceReducePolicy  v)

Positionne la politique d'exécution des réductions.

Définition à la ligne 335 du fichier Runner.cc.

◆ setMemoryAdvice()

void Arcane::Accelerator::Runner::setMemoryAdvice ( ConstMemoryView  buffer,
eMemoryAdvice  advice 
)

Positionne un conseil sur la gestion d'une zone mémoire.

Définition à la ligne 390 du fichier Runner.cc.

◆ unsetMemoryAdvice()

void Arcane::Accelerator::Runner::unsetMemoryAdvice ( ConstMemoryView  buffer,
eMemoryAdvice  advice 
)

Supprime un conseil sur la gestion d'une zone mémoire.

Définition à la ligne 400 du fichier Runner.cc.

Documentation des fonctions amies et associées

◆ makeQueue [1/4]

RunQueue makeQueue ( const Runner runner)
friend

Créé une file associée à runner.

Cet appel est thread-safe si runner.isConcurrentQueueCreation()==true.

Définition à la ligne 202 du fichier core/Runner.h.

◆ makeQueue [2/4]

RunQueue makeQueue ( const Runner runner,
const RunQueueBuildInfo bi 
)
friend

Créé une file associée à runner avec les propriétés bi.

Cet appel est thread-safe si runner.isConcurrentQueueCreation()==true.

Définition à la ligne 229 du fichier core/Runner.h.

◆ makeQueue [3/4]

RunQueue makeQueue ( const Runner runner)
friend

Créé une file associée à runner.

Cet appel est thread-safe si runner.isConcurrentQueueCreation()==true.

Définition à la ligne 215 du fichier core/Runner.h.

◆ makeQueue [4/4]

RunQueue makeQueue ( const Runner runner,
const RunQueueBuildInfo bi 
)
friend

Créé une file associée à runner avec les propriétés bi.

Cet appel est thread-safe si runner.isConcurrentQueueCreation()==true.

Définition à la ligne 242 du fichier core/Runner.h.

◆ makeQueueRef [1/3]

Ref< RunQueue > makeQueueRef ( const Runner runner)
friend

Créé une référence sur file avec la politique d'exécution par défaut de runner.

Si la file est temporaire, il est préférable d'utiliser makeQueue() à la place pour éviter une allocation inutile.

Définition à la ligne 257 du fichier core/Runner.h.

◆ makeQueueRef [2/3]

Ref< RunQueue > makeQueueRef ( Runner runner,
const RunQueueBuildInfo bi 
)
friend

Créé une référence sur file avec la politique d'exécution par défaut de runner.

Si la file est temporaire, il est préférable d'utiliser makeQueue() à la place pour éviter une allocation inutile.

Définition à la ligne 271 du fichier core/Runner.h.

◆ makeQueueRef [3/3]

Ref< RunQueue > makeQueueRef ( Runner runner)
friend

Créé une référence sur file avec la politique d'exécution par défaut de runner.

Si la file est temporaire, il est préférable d'utiliser makeQueue() à la place pour éviter une allocation inutile.

Définition à la ligne 285 du fichier core/Runner.h.

Documentation des données membres

◆ m_p

std::shared_ptr<impl::RunnerImpl> Arcane::Accelerator::Runner::m_p
private

Définition à la ligne 182 du fichier core/Runner.h.

◆ RunQueue

friend Arcane::Accelerator::Runner::RunQueue
private

Définition à la ligne 56 du fichier core/Runner.h.

◆ RunQueueEvent

friend Arcane::Accelerator::Runner::RunQueueEvent
private

Définition à la ligne 57 du fichier core/Runner.h.


La documentation de cette classe a été générée à partir des fichiers suivants :