16#include "arcane/accelerator/core/Memory.h"
17#include "arcane/accelerator/GenericFilterer.h"
37 IndexSelecter(
const RunQueue& runqueue)
41 m_memory_host =
eMemoryRessource(m_is_accelerator_policy ? eMemoryRessource::HostPinned : eMemoryRessource::Host);
42 m_memory_device =
eMemoryRessource(m_is_accelerator_policy ? eMemoryRessource::Device : eMemoryRessource::Host);
66 template <
typename PredicateType>
77 to_instantiate =
true;
89 [=] ARCCORE_HOST_DEVICE(
Int32 input_index,
Int32 output_index) ->
void {
90 out_lid_select[output_index] = input_index;
94 if (nb_idx_selected && host_view) {
97 m_localid_select_device.subView(0, nb_idx_selected).data(),
98 nb_idx_selected *
sizeof(
Int32))
103 ConstArrayView<Int32> lid_select_view = (host_view ? m_localid_select_host.subConstView(0, nb_idx_selected) : m_localid_select_device.subConstView(0, nb_idx_selected));
105 return lid_select_view;
110 bool m_is_accelerator_policy =
false;
Fonctions de gestion mémoire et des allocateurs.
Algorithme générique de filtrage sur accélérateur.
void resize(Int32 nb_idx)
Définit l'intervalle [0,nb_idx[ sur lequel va s'opérer la sélection.
GenericFilterer * m_generic_filterer_instance
Instance du GenericFilterer.
Int32 m_index_number
Intervalle [0, m_index_number[ sur lequel on va opérer la sélection.
RunQueue m_asynchronous_queue_pointer
Pointeur sur la queue du GenericFilterer.
ConstArrayView< Int32 > syncSelectIf(const RunQueue &rqueue_async, PredicateType pred, bool host_view=false)
Selectionne les indices selon le prédicat pred et synchronise rqueue_async.
Arguments pour la copie mémoire.
File d'exécution pour un accélérateur.
void copyMemory(const MemoryCopyArgs &args) const
Copie des informations entre deux zones mémoires.
void barrier() const
Bloque tant que toutes les commandes associées à la file ne sont pas terminées.
eExecutionPolicy executionPolicy() const
Politique d'exécution de la file.
Vue constante d'un tableau de type T.
Vue d'un tableau d'éléments de type T.
Vecteur 1D de données avec sémantique par valeur (style STL).
Espace de nom pour l'utilisation des accélérateurs.
bool isAcceleratorPolicy(eExecutionPolicy exec_policy)
Indique si exec_policy correspond à un accélérateur.
IMemoryAllocator * getAllocator(eMemoryResource mem_resource)
Allocateur par défaut pour la ressource mem_resource.
Arcane::eMemoryResource eMemoryRessource
Typedef pour la version Arcane historique (avec 2's')
std::int32_t Int32
Type entier signé sur 32 bits.