14#include "arcane/core/IData.h"
16#include "arcane/utils/NotSupportedException.h"
17#include "arcane/utils/FatalErrorException.h"
18#include "arcane/utils/ArrayShape.h"
19#include "arcane/utils/MemoryUtils.h"
21#include "arcane/core/IDataFactory.h"
22#include "arcane/core/IDataVisitor.h"
23#include "arcane/core/ISerializedData.h"
24#include "arcane/core/internal/IDataInternal.h"
28#include "arcane/accelerator/core/RunQueue.h"
29#include "arcane/accelerator/core/Memory.h"
47applyDataVisitor(IMultiArray2Data*)
49 ARCANE_THROW(NotSupportedException,
"using applyDataVisitor with IMultiArray2Data is no longer supported");
65copyContiguousData(INumericDataInternal* num_destination, ConstMemoryView source_buf,
70 MutableMemoryView destination_buf = num_destination->memoryView();
71 if (source_buf.datatypeSize() != destination_buf.datatypeSize())
72 ARCANE_FATAL(
"Source and destination do not have the same datatype s={0} d={1}",
73 source_buf.datatypeSize(), destination_buf.datatypeSize());
75 MemoryUtils::copy(destination_buf, source_buf);
84copyContiguousData(IData* destination, IData* source, RunQueue& queue)
89 INumericDataInternal* num_destination = destination->_commonInternal()->numericData();
92 INumericDataInternal* num_source = source->_commonInternal()->numericData();
95 copyContiguousData(num_destination, num_source->memoryView(), queue);
102fillContiguousDataGeneric(IData* data,
const void* fill_address,
103 Int32 datatype_size, RunQueue& queue)
105 INumericDataInternal* num_data = data->_commonInternal()->numericData();
109 ConstMemoryView fill_value_view(makeConstMemoryView(fill_address, datatype_size, 1));
110 MutableMemoryView destination_buf = num_data->memoryView();
115 if (data->dimension() > 1) {
116 Int64 total_dim = data->shape().totalNbElement();
117 Int64 nb_element = destination_buf.nbElement();
118 destination_buf = makeMutableMemoryView(destination_buf.data(), datatype_size, nb_element * total_dim);
121 destination_buf.fill(fill_value_view, &queue);
#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_THROW(exception_class,...)
Macro pour envoyer une exception avec formattage.
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
#define ARCCORE_DEFINE_REFERENCE_COUNTED_CLASS(class_name)
Macro pour définir les méthodes et types une classe qui utilise un compteur de référence.
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.
bool isNull() const
Indique si la RunQueue est nulle.
virtual void visitMultiArray2(IMultiArray2DataVisitor *visitor)
Applique le visiteur à la donnée.
Interface du pattern visitor pour une donnée tableau 2D à taille variable.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Espace de nom de Arccore.