Arcane  v4.1.3.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
SpecificMemoryCopy.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 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/* SpecificMemoryCopy.cc (C) 2000-2026 */
9/* */
10/* Classes pour gérer des fonctions spécialisées de copie mémoire. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arccore/common/internal/SpecificMemoryCopyList.h"
15#include "arccore/common/internal/HostSpecificMemoryCopy.h"
16
17/*---------------------------------------------------------------------------*/
18/*---------------------------------------------------------------------------*/
19
20namespace Arcane::Impl
21{
22
23ISpecificMemoryCopyList* GlobalMemoryCopyList::default_global_copy_list = nullptr;
24ISpecificMemoryCopyList* GlobalMemoryCopyList::accelerator_global_copy_list = nullptr;
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
30{
31 public:
32
33 using InterfaceType = ISpecificMemoryCopy;
34 template <typename DataType, typename Extent> using SpecificType = HostSpecificMemoryCopy<DataType, Extent>;
36};
37
70
71namespace
72{
73 // Copieur spécifique lorsqu'aucun runtime accélérateur n'est initialisé
74 HostSpecificMemoryCopyList global_host_copy_list;
75} // namespace
76
77/*---------------------------------------------------------------------------*/
78/*---------------------------------------------------------------------------*/
79
82{
83 if (!default_global_copy_list) {
84 default_global_copy_list = ptr;
85 }
86 accelerator_global_copy_list = ptr;
87}
88
89/*---------------------------------------------------------------------------*/
90/*---------------------------------------------------------------------------*/
91
93getDefault(const RunQueue* queue)
94{
95 if (queue && !default_global_copy_list)
96 ARCCORE_FATAL("No instance of copier is available for RunQueue");
97 if (default_global_copy_list && queue)
98 return default_global_copy_list;
99 return &global_host_copy_list;
100}
101
102/*---------------------------------------------------------------------------*/
103/*---------------------------------------------------------------------------*/
104
105} // namespace Arcane::impl
106
107/*---------------------------------------------------------------------------*/
108/*---------------------------------------------------------------------------*/
#define ARCCORE_FATAL(...)
Macro envoyant une exception FatalErrorException.
static void setAcceleratorInstance(ISpecificMemoryCopyList *ptr)
Positionne l'instance par défaut pour les copies lorsqu'un runtime accélérateur est activé
static ISpecificMemoryCopyList * getDefault(const RunQueue *queue)
Retourne l'instance par défaut pour la file queue.
Implémentation des copies et du remplissage sur hôte.
Interface d'une liste d'instances de ISpecificMemoryCopy spécialisées.
Interface d'un copieur mémoire spécialisé pour une taille de donnée.
Informations pour une dimension fixe connue à la compilation.