13#ifndef ARCANE_IMPL_IBUFFERCOPIER_H
14#define ARCANE_IMPL_IBUFFERCOPIER_H
18#include "arcane/utils/MemoryView.h"
21#include "arcane/core/GroupIndexTable.h"
22#include "arcane/accelerator/core/RunQueue.h"
61 virtual void setRunQueue(
const RunQueue& queue) = 0;
79 RunQueue* q = (m_queue.isNull()) ? nullptr : &m_queue;
87 RunQueue* q = (m_queue.isNull()) ? nullptr : &m_queue;
92 void setRunQueue(
const RunQueue& queue)
override { m_queue = queue; }
102class TableBufferCopier
116 _buildFinalIndexes(final_indexes, indexes);
117 m_base_copier.copyFromBufferAsync(final_indexes, buffer, var_value);
125 _buildFinalIndexes(final_indexes, indexes);
126 m_base_copier.copyToBufferAsync(final_indexes, buffer, var_value);
128 void barrier()
override { m_base_copier.barrier(); }
130 void setRunQueue(
const RunQueue& queue)
override { m_base_copier.setRunQueue(queue); }
134 GroupIndexTable* m_table;
135 DirectBufferCopier m_base_copier;
139 void _buildFinalIndexes(Array<Int32>& final_indexes, ConstArrayView<Int32> orig_indexes)
142 GroupIndexTable& table = *m_table;
143 Int32 n = orig_indexes.size();
144 final_indexes.resize(n);
145 for (Int32 i = 0; i < n; ++i)
146 final_indexes[i] = table[orig_indexes[i]];
Fonctions de gestion mémoire et des allocateurs.
File d'exécution pour un accélérateur.
Vue constante sur une zone mémoire contigue contenant des éléments de taille fixe.
void barrier() override
Bloque tant que les copies ne sont pas terminées.
Classe de base d'une table de hachage entre les items d'un groupe et leurs positions dans la table.
Interface pour copier des éléments entre deux zones avec indexation.
virtual void barrier()=0
Bloque tant que les copies ne sont pas terminées.
Vue modifiable sur une zone mémoire contigue contenant des éléments de taille fixe.
void barrier() override
Bloque tant que les copies ne sont pas terminées.
Vecteur 1D de données avec sémantique par valeur (style STL).
void copyWithIndexedDestination(MutableMemoryView destination, ConstMemoryView source, SmallSpan< const Int32 > indexes, RunQueue *run_queue=nullptr)
Copie mémoire avec indirection.
void copyWithIndexedSource(MutableMemoryView destination, ConstMemoryView source, SmallSpan< const Int32 > indexes, RunQueue *run_queue=nullptr)
Copie sur l'hôte des données avec indirection.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.