12#ifndef ARCANE_ACCELERATOR_SORTER_H
13#define ARCANE_ACCELERATOR_SORTER_H
17#include "arcane/utils/ArrayView.h"
18#include "arcane/utils/FatalErrorException.h"
19#include "arcane/utils/NumArray.h"
21#include "arcane/accelerator/AcceleratorGlobal.h"
22#include "arcane/accelerator/core/RunQueue.h"
23#include "arcane/accelerator/CommonUtils.h"
30namespace Arcane::Accelerator::impl
70 template <
typename CompareLambda,
typename InputIterator,
typename OutputIterator>
77#if defined(ARCANE_COMPILING_CUDA)
80 cudaStream_t stream = impl::CudaUtils::toNativeStream(&queue);
82 ARCANE_CHECK_CUDA(::cub::DeviceMergeSort::SortKeysCopy(
nullptr,
temp_storage_size,
87 ARCANE_CHECK_CUDA(::cub::DeviceMergeSort::SortKeysCopy(s.m_algo_storage.address(),
temp_storage_size,
92#if defined(ARCANE_COMPILING_HIP)
95 hipStream_t stream = impl::HipUtils::toNativeStream(&queue);
160 template <
typename DataType>
167 ARCANE_FATAL(
"Output size '{0}' is smaller than input size '{1}'",
169 auto compare_lambda = [] ARCCORE_HOST_DEVICE(
const DataType& a,
const DataType&
b) {
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Algorithme générique de tri sur accélérateur.
void apply(SmallSpan< const DataType > input, SmallSpan< DataType > output)
Tri les entités.
File d'exécution pour un accélérateur.
eExecutionPolicy executionPolicy() const
Politique d'exécution de la file.
Gère l'allocation interne sur le device.
Classe de base pour effectuer un tri.
Classe pour effectuer le tri d'une liste.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Espace de nom pour l'utilisation des accélérateurs.
eExecutionPolicy
Politique d'exécution pour un Runner.
@ HIP
Politique d'exécution utilisant l'environnement HIP.
@ CUDA
Politique d'exécution utilisant l'environnement CUDA.
@ Sequential
Politique d'exécution séquentielle.
@ Thread
Politique d'exécution multi-thread.
std::int32_t Int32
Type entier signé sur 32 bits.