12#ifndef ARCANE_SIMDITEM_H
13#define ARCANE_SIMDITEM_H
23#ifndef ARCANE_SIMD_BENCH
24#include "arcane/ItemEnumerator.h"
41template<
typename ItemType>
42class SimdItemEnumeratorT;
82 ARCANE_DEPRECATED_REASON(
"Y2022: Use another constructor")
89 : m_simd_local_ids(*ids), m_shared_info(
shared_info) { }
94 ARCANE_DEPRECATED_REASON(
"Y2022: Use method SimdItem::item() instead")
95 ItemInternal* item(Integer
si)
const {
return m_shared_info->m_items_internal[localId(
si)]; }
97 ARCANE_DEPRECATED_REASON(
"Y2022: Use method SimdItem::operator[]() instead")
104 const Int32* ARCANE_RESTRICT
localIds()
const {
return (
const Int32*)&m_simd_local_ids; }
107 Int32
localId(Int32 index)
const {
return m_simd_local_ids[index]; }
111 SimdIndexType m_simd_local_ids;
126 ARCANE_DEPRECATED_REASON(
"Y2022: Use another constructor")
129 m_shared_info(ItemInternalCompatibility::_getSharedInfo(items,
nb_valid)) { }
139 m_shared_info(ItemInternalCompatibility::_getSharedInfo(items,
nb_valid)) { }
144 inline Integer
nbValid()
const {
return m_nb_valid; }
151 Int32 m_base_local_id;
164template<
typename ItemType>
178 const SimdIndexType& ARCANE_RESTRICT m_local_ids;
186template<
typename ItemType>
193 inline Int32 baseLocalId()
const {
return m_base_local_id; }
195 Int32 m_base_local_id;
209 ARCANE_DEPRECATED_REASON(
"Y2022: Use another constructor")
211 :
SimdItemBase(ItemInternalCompatibility::_getSharedInfo(items,1),ids) { }
233template<
typename ItemType>
246 ARCANE_DEPRECATED_REASON(
"Y2022: Use another constructor")
261 return ItemType(
localId(
si),m_shared_info);
267 return ItemType(
localId(
si),m_shared_info);
282template<
typename ItemType>
294 ARCANE_DEPRECATED_REASON(
"Y2022: Use another constructor")
318template<
typename DataType>
333 void operator=(
const DataType& v)
340 DataType* ARCANE_RESTRICT m_data;
349template<
typename DataType>
362 DataType* ARCANE_RESTRICT m_data;
426template<
typename ItemType>
471#ifndef ARCANE_SIMD_BENCH
484#ifndef ARCANE_SIMD_BENCH
521template <
typename ItemType>
528 return g._simdEnumerator();
534 return g.enumerator();
540 template <
typename T>
543 return g.enumerator();
550#define ENUMERATE_SIMD_(type, iname, view) \
551 for (A_TRACE_ITEM_ENUMERATOR(SimdItemEnumeratorT<type>) iname(::Arcane::SimdItemEnumeratorContainerTraits<type>::getSimdEnumerator(view) A_TRACE_ENUMERATOR_WHERE); iname.hasNext(); ++iname)
554#define ENUMERATE_SIMD_GENERIC(type, iname, view) \
555 ENUMERATE_SIMD_(type,iname,view)
561#define ENUMERATE_SIMD_NODE(name, group) ENUMERATE_SIMD_(::Arcane::Node, name, group)
567#define ENUMERATE_SIMD_EDGE(name, group) ENUMERATE_SIMD_(::Arcane::Edge, name, group)
573#define ENUMERATE_SIMD_FACE(name, group) ENUMERATE_SIMD_(::Arcane::Face, name, group)
579#define ENUMERATE_SIMD_CELL(name, group) ENUMERATE_SIMD_(::Arcane::Cell, name, group)
585#define ENUMERATE_SIMD_PARTICLE(name, group) ENUMERATE_SIMD_(::Arcane::Particle, name, group)
Vectorisation des entiers en utilisant une émulation.
Méthodes pour conversions entre différentes classes de gestion des entités.
Vue interne sur un tableau d'entités.
Int32ConstArrayView localIds() const
Tableau des numéros locaux des entités.
Structure interne d'une entité de maillage.
Structure interne partagée d'une entité de maillage.
Classe de base d'un élément de maillage.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Objet permettant de positionner les valeurs d'un vecteur SIMD.
Classe de base des énumérateurs vectoriels avec indirection.
Integer nbValid() const
Nombre de valeurs valides pour l'itérateur courant.
Classe gérant un vecteur SIMD d'entité.
const Int32 *ARCANE_RESTRICT localIds() const
Liste des numéros locaux des entités de l'instance.
const SimdIndexType &ARCANE_RESTRICT simdLocalIds() const
Liste des numéros locaux des entités de l'instance.
Int32 localId(Int32 index) const
Numéro local de l'entité d'indice index.
Int32 baseLocalId() const
Liste des numéros locaux des entités de l'instance.
Integer nbValid() const
Nombre d'entités valides de l'instance.
Index vectoriel sans indirection pour un type d'entité
Gère un vecteur d'entité ItemType.
Index vectoriel avec indirection pour un type d'entité. TODO: stocker les index dans un registre vect...
const SimdIndexType &ARCANE_RESTRICT simdLocalIds() const
Liste des numéros locaux des entités de l'instance.
Gère un vecteur d'entité ItemType.
ItemType operator[](Integer si) const
Retourne la si-ième entité de l'instance.
ItemType item(Integer si) const
Retourne la si-ième entité de l'instance.
Gère un vecteur d'entité Item.
Item item(Int32 si) const
inline si-ième entité de l'instance
Item operator[](Int32 si) const
inline si-ième entité de l'instance
Objet permettant de positionner les valeurs d'un vecteur SIMD.
Vue constante d'un tableau de type T.
SimdItemT< Edge > SimdEdge
Vecteur SIMD de Edge.
SimdItemT< Cell > SimdCell
Vecteur SIMD de Cell.
SimdItemT< Face > SimdFace
Vecteur SIMD de Face.
SimdItemT< Particle > SimdParticle
Vecteur SIMD de Particle.
SimdItemT< Node > SimdNode
Vecteur SIMD de Node.
-*- 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.