Gestionnaire d'exécution pour accélérateur. Plus de détails...
#include <arcane/accelerator/core/Runner.h>
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 DeviceInfo & | deviceInfo () 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 IDeviceInfoList * | deviceInfoList (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::RunnerImpl > | m_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< RunQueue > | makeQueueRef (const Runner &runner) |
Créé une référence sur file avec la politique d'exécution par défaut de runner. | |
Ref< RunQueue > | makeQueueRef (Runner &runner, const RunQueueBuildInfo &bi) |
Créé une référence sur file avec la politique d'exécution par défaut de runner. | |
Ref< RunQueue > | makeQueueRef (Runner *runner) |
Créé une référence sur file avec la politique d'exécution par défaut de runner. | |
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.
Arcane::Accelerator::Runner::Runner | ( | ) |
Créé un gestionnaire d'exécution non initialisé.
Il faudra appeler initialize() avant de pouvoir utiliser l'instance
|
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().
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().
|
private |
|
inlineprivate |
Définition à la ligne 198 du fichier core/Runner.h.
RunnerInternal * Arcane::Accelerator::Runner::_internalApi | ( | ) |
|
private |
|
private |
|
inlinestaticprivate |
Définition à la ligne 173 du fichier core/Runner.h.
|
inlinestaticprivate |
Définition à la ligne 177 du fichier core/Runner.h.
|
inlinestaticprivate |
Définition à la ligne 181 du fichier core/Runner.h.
|
inlinestaticprivate |
Définition à la ligne 185 du fichier core/Runner.h.
double Arcane::Accelerator::Runner::cumulativeCommandTime | ( | ) | const |
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().
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().
|
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 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().
eDeviceReducePolicy Arcane::Accelerator::Runner::deviceReducePolicy | ( | ) | const |
eExecutionPolicy Arcane::Accelerator::Runner::executionPolicy | ( | ) | const |
Politique d'exécution associée.
Définition à la ligne 301 du fichier Runner.cc.
Référencé par Arcane::Accelerator::impl::arcaneCheckPointerIsAccessible(), deviceInfo(), Arcane::Accelerator::getPointerAccessibility(), et Arcane::SubDomain::initialize().
void Arcane::Accelerator::Runner::fillPointerAttribute | ( | PointerAttribute & | attr, |
const void * | ptr | ||
) |
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().
void Arcane::Accelerator::Runner::initialize | ( | eExecutionPolicy | v, |
DeviceId | device | ||
) |
bool Arcane::Accelerator::Runner::isConcurrentQueueCreation | ( | ) | const |
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().
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().
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.
void Arcane::Accelerator::Runner::setMemoryAdvice | ( | ConstMemoryView | buffer, |
eMemoryAdvice | advice | ||
) |
void Arcane::Accelerator::Runner::unsetMemoryAdvice | ( | ConstMemoryView | buffer, |
eMemoryAdvice | advice | ||
) |
Créé une file associée à runner.
Cet appel est thread-safe.
Définition à la ligne 222 du fichier core/Runner.h.
|
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.
Créé une file associée à runner.
Cet appel est thread-safe.
Définition à la ligne 235 du fichier core/Runner.h.
|
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.
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.
|
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.
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.
|
private |
Définition à la ligne 202 du fichier core/Runner.h.
|
private |
Définition à la ligne 71 du fichier core/Runner.h.
|
private |
Définition à la ligne 72 du fichier core/Runner.h.