Arcane  v3.15.0.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.
 
DeviceMemoryInfo deviceMemoryInfo () 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 back-end 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. Le back-end utilisé est choisi via l'énumération eExecutionPolicy. Les back-ends sont de deux types:

La fonction isAcceleratorPolicy() permet de savoir si une eExecutionPolicy est associée à un accélérateur.

Si une instance de cette classe est associée à un accélérateur, celui-ci 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() et de le refaire si une autre partie du code ou si une bibliothèque externe change l'accélérateur par défaut.

La classe Runner permet de créer des files d'exécutions (RunQueue) via la fonction makeQueue(). Ces files peuvent ensuite être utilisées pour lancer des commandes (RunCommand). La page arcanedoc_acceleratorapi décrit le fonctionnement de l'API accélérateur.

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 67 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 259 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 268 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 278 du fichier Runner.cc.

Références initialize().

Documentation des fonctions membres

◆ _checkIsInit()

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

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

◆ _impl()

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

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

◆ _internalApi()

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

API interne à Arcane.

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

◆ _internalRuntime()

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

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

◆ _isAutoPrefetchCommand()

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

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

◆ _makeQueue() [1/2]

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

Définition à la ligne 173 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 177 du fichier core/Runner.h.

◆ _makeQueueRef() [1/2]

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

Définition à la ligne 181 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 185 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 384 du fichier Runner.cc.

◆ deviceId()

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

Device associé à cette instance.

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

Référencé par deviceInfo(), et deviceMemoryInfo().

◆ deviceInfo()

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

Information sur le device associé à cette instance.

Définition à la ligne 432 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 449 du fichier Runner.cc.

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

Référencé par deviceInfo().

◆ deviceMemoryInfo()

DeviceMemoryInfo Arcane::Accelerator::Runner::deviceMemoryInfo ( ) const

Information sur le device associé à cette instance.

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

Références deviceId().

◆ deviceReducePolicy()

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

politique d'exécution des réductions

Définition à la ligne 347 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 471 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 356 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 365 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 328 du fichier Runner.cc.

◆ isInitialized()

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

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

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

Référencé par Arcane::VariableSynchronizer::_setCurrentDevice().

◆ 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 413 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.

Obsolète:
La création de file est toujours thread-safe depuis la version 3.15 de Arcane.

Définition à la ligne 319 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 337 du fichier Runner.cc.

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

◆ 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 393 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 403 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.

Définition à la ligne 222 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.

Définition à la ligne 249 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.

Définition à la ligne 235 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.

Définition à la ligne 262 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 277 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 291 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 305 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 202 du fichier core/Runner.h.

◆ RunQueue

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

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

◆ RunQueueEvent

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

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


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