Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Filterer.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* Filtering.cc (C) 2000-2024 */
9/* */
10/* Algorithme de filtrage. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/accelerator/Filter.h"
15
16#include "arcane/utils/ValueConvert.h"
17
18/*---------------------------------------------------------------------------*/
19/*---------------------------------------------------------------------------*/
20
21namespace Arcane::Accelerator::impl
22{
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27GenericFilteringBase::
28GenericFilteringBase()
29{
30}
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
35Int32 GenericFilteringBase::
36_nbOutputElement() const
37{
39 return m_host_nb_out_storage[0];
40}
41
42/*---------------------------------------------------------------------------*/
43/*---------------------------------------------------------------------------*/
44
45void GenericFilteringBase::
46_allocate()
47{
48 if (auto v = Convert::Type<Int32>::tryParseFromEnvironment("ARCANE_FILTERER_USE_HOSTPINNED_STORAGE", true))
49 m_use_direct_host_storage = (v.value() != 0);
50
51 // Pour l'instant l'usage direct de l'hôte n'est testé qu'avec CUDA.
54
56 if (m_host_nb_out_storage.memoryRessource() != r)
57 m_host_nb_out_storage = NumArray<Int32, MDDim1>(r);
58 m_host_nb_out_storage.resize(1);
59}
60
61/*---------------------------------------------------------------------------*/
62/*---------------------------------------------------------------------------*/
63
64void GenericFilteringBase::
65_allocateTemporaryStorage(size_t size)
66{
67 m_algo_storage.allocate(size);
68}
69
70/*---------------------------------------------------------------------------*/
71/*---------------------------------------------------------------------------*/
72
73int* GenericFilteringBase::
74_getDeviceNbOutPointer()
75{
77 return m_host_nb_out_storage.to1DSpan().data();
78
79 return m_device_nb_out_storage.allocate();
80}
81
82/*---------------------------------------------------------------------------*/
83/*---------------------------------------------------------------------------*/
84
85void GenericFilteringBase::
86_copyDeviceNbOutToHostNbOut()
87{
90}
91
92/*---------------------------------------------------------------------------*/
93/*---------------------------------------------------------------------------*/
94
95} // namespace Arcane::Accelerator::impl
96
97/*---------------------------------------------------------------------------*/
98/*---------------------------------------------------------------------------*/
void barrier() const
Bloque tant que toutes les commandes associées à la file ne sont pas terminées.
Definition RunQueue.cc:158
eExecutionPolicy executionPolicy() const
Politique d'exécution de la file.
Definition RunQueue.cc:168
void copyToAsync(SmallSpan< DataType > dest_ptr, const RunQueue &queue)
Copie l'instance dans dest_ptr.
DeviceStorage< int > m_device_nb_out_storage
Mémoire sur le device du nombre de valeurs filtrées.
Definition Filter.h:74
NumArray< Int32, MDDim1 > m_host_nb_out_storage
Mémoire hôte pour le nombre de valeurs filtrées.
Definition Filter.h:76
RunQueue m_queue
File d'exécution. Ne doit pas être nulle.
Definition Filter.h:70
bool m_use_direct_host_storage
Indique quelle mémoire est utilisée pour le nombre de valeurs filtrées.
Definition Filter.h:84
@ CUDA
Politique d'exécution utilisant l'environnement CUDA.
eMemoryRessource
Liste des ressources mémoire disponibles.
@ HostPinned
Alloue sur l'hôte.