14#include "arccore/base/NotImplementedException.h" 
   15#include "arccore/base/MemoryView.h" 
   16#include "arccore/base/PlatformUtils.h" 
   17#include "arccore/base/FatalErrorException.h" 
   19#include "arccore/common/MemoryUtils.h" 
   21#include "arcane/accelerator/core/internal/IRunnerRuntime.h" 
   22#include "arcane/accelerator/core/internal/IRunQueueStream.h" 
   23#include "arcane/accelerator/core/internal/IRunQueueEventImpl.h" 
   24#include "arcane/accelerator/core/Memory.h" 
   25#include "arcane/accelerator/core/DeviceInfoList.h" 
   26#include "arcane/accelerator/core/DeviceMemoryInfo.h" 
   27#include "arcane/accelerator/core/NativeStream.h" 
   32namespace Arcane::Accelerator::impl
 
   38class ARCANE_ACCELERATOR_CORE_EXPORT HostRunQueueStream
 
   51  void barrier()
 override { 
return m_runtime->barrier(); }
 
 
   68class ARCANE_ACCELERATOR_CORE_EXPORT HostRunQueueEvent
 
   73  explicit HostRunQueueEvent(
bool has_timer)
 
   74  : m_has_timer(has_timer)
 
   86  bool hasPendingWork() 
final { 
return false; }
 
   90    auto* true_start_event = 
static_cast<HostRunQueueEvent*
>(start_event);
 
   91    if (!m_has_timer || !true_start_event->m_has_timer)
 
   93    double diff_time = m_recorded_time - true_start_event->m_recorded_time;
 
   94    Int64 diff_as_int64 = 
static_cast<Int64>(diff_time * 1.0e9);
 
 
  100  bool m_has_timer = 
false;
 
  101  double m_recorded_time = 0.0;
 
 
  107class ARCANE_ACCELERATOR_CORE_EXPORT CommonRunnerRuntime
 
  112  CommonRunnerRuntime()
 
  116    d.setName(
"HostDevice");
 
  117    m_device_info_list.addDevice(d);
 
  122  void notifyBeginLaunchKernel() 
final {}
 
  123  void notifyEndLaunchKernel() 
final {}
 
  124  void barrier() 
final {}
 
  130  void setCurrentDevice(
DeviceId) 
final {}
 
  131  const IDeviceInfoList* deviceInfoList() 
final { 
return &m_device_info_list; }
 
  132  void getPointerAttribute(
PointerAttribute& attribute, 
const void* ptr) 
final 
  134    _fillPointerAttribute(attribute, ptr);
 
 
  151: 
public CommonRunnerRuntime
 
 
  160: 
public CommonRunnerRuntime
 
 
  177extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT IRunnerRuntime*
 
  178getSequentialRunQueueRuntime()
 
  180  return &global_sequential_runqueue_runtime;
 
  184extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT IRunnerRuntime*
 
  185getThreadRunQueueRuntime()
 
  187  return &global_thread_runqueue_runtime;
 
#define ARCANE_CHECK_POINTER(ptr)
Macro retournant le pointeur ptr s'il est non nul ou lancant une exception s'il est nul.
 
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
 
Identifiant d'un composant du système.
 
Information sur un device.
 
Information mémoire d'un accélérateur.
 
Interface d'une liste de devices.
 
Arguments pour la copie mémoire.
 
Arguments pour le préfetching mémoire.
 
Informations sur une adresse mémoire.
 
Informations pour créer une RunQueue.
 
Interface d'une liste de devices.
 
Int64 elapsedTime(IRunQueueEventImpl *start_event) final
Temps écoulé (en nanoseconde) entre l'évènement from_event et cet évènement.
 
NativeStream nativeStream() override
Pointeur sur la structure interne dépendante de l'implémentation.
 
void barrier() override
Bloque jusqu'à ce que toutes les actions associées à cette file soient terminées.
 
void copyMemory(const MemoryCopyArgs &args) override
Effectue une copie entre deux zones mémoire.
 
void notifyBeginLaunchKernel(RunCommandImpl &) override
Notification avant le lancement de la commande.
 
bool _barrierNoException() override
Barrière sans exception. Retourne true en cas d'erreur.
 
void notifyEndLaunchKernel(RunCommandImpl &) override
Notification de fin de lancement de la commande.
 
void prefetchMemory(const MemoryPrefetchArgs &) override
Effectue un pré-chargement d'une zone mémoire.
 
Interface de l'implémentation d'un évènement.
 
Interface d'un flux d'exécution pour une RunQueue.
 
Interface du runtime associé à un accélérateur.
 
Type opaque pour encapsuler une 'stream' native.
 
Implémentation d'une commande pour accélérateur.
 
Vue constante sur une zone mémoire contigue contenant des éléments de taille fixe.
 
eMemoryAdvice
Conseils pour la gestion mémoire.
 
eExecutionPolicy
Politique d'exécution pour un Runner.
 
@ Sequential
Politique d'exécution séquentielle.
 
@ Thread
Politique d'exécution multi-thread.
 
ARCCORE_COMMON_EXPORT void copyHost(MutableMemoryView destination, ConstMemoryView source)
Copie dans destination les données de source.
 
std::int64_t Int64
Type entier signé sur 64 bits.