Algorithme générique de réduction sur accélérateur. Plus de détails...
#include <arcane/accelerator/Reduce.h>
Fonctions membres publiques | |
GenericReducer (const RunQueue &queue) | |
void | applyMin (SmallSpan< const DataType > values, const TraceInfo &trace_info=TraceInfo()) |
Applique une réduction 'Min' sur les valeurs values. | |
void | applyMax (SmallSpan< const DataType > values, const TraceInfo &trace_info=TraceInfo()) |
Applique une réduction 'Max' sur les valeurs values. | |
void | applySum (SmallSpan< const DataType > values, const TraceInfo &trace_info=TraceInfo()) |
Applique une réduction 'Somme' sur les valeurs values. | |
template<typename SelectLambda > | |
void | applyMinWithIndex (Int32 nb_value, const SelectLambda &select_lambda, const TraceInfo &trace_info=TraceInfo()) |
Applique une réduction 'Min' sur les valeurs sélectionnées par select_lambda. | |
template<typename SelectLambda > | |
void | applyMaxWithIndex (Int32 nb_value, const SelectLambda &select_lambda, const TraceInfo &trace_info=TraceInfo()) |
Applique une réduction 'Max' sur les valeurs sélectionnées par select_lambda. | |
template<typename SelectLambda > | |
void | applySumWithIndex (Int32 nb_value, const SelectLambda &select_lambda, const TraceInfo &trace_info=TraceInfo()) |
Applique une réduction 'Somme' sur les valeurs sélectionnées par select_lambda. | |
DataType | reducedValue () |
Valeur de la réduction. | |
Fonctions membres privées | |
template<typename InputIterator , typename ReduceOperator > | |
void | _apply (Int32 nb_value, InputIterator input_iter, ReduceOperator reduce_op, const TraceInfo &trace_info) |
template<typename GetterLambda , typename ReduceOperator > | |
void | _applyWithIndex (Int32 nb_value, const GetterLambda &getter_lambda, ReduceOperator reduce_op, const TraceInfo &trace_info) |
void | _setCalled () |
Fonctions membres privées hérités de Arcane::Accelerator::impl::GenericReducerBase< DataType > | |
GenericReducerBase (const RunQueue &queue) | |
DataType | _reducedValue () const |
void | _allocate () |
Attributs privés | |
bool | m_is_already_called = false |
Attributs privés hérités de Arcane::Accelerator::impl::GenericReducerBase< DataType > | |
RunQueue | m_queue |
GenericDeviceStorage | m_algo_storage |
DeviceStorage< DataType > | m_device_reduce_storage |
NumArray< DataType, MDDim1 > | m_host_reduce_storage |
Algorithme générique de réduction sur accélérateur.
La réduction se fait via les appels à applyMin(), applyMax(), applySum(), applyMinWithIndex(), applyMaxWithIndex() ou applySumWithIndex(). Ces méthodes sont asynchrones. Après réduction, il est possible récupérer la valeur réduite via reducedValue(). L'appel à reducedValue() bloque tant que la réduction n'est pas terminée.
Les instances de cette classe peuvent être utilisées plusieurs fois.
Voici un exemple pour calculer la somme d'un tableau de 50 éléments:
|
inlineexplicit |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inline |
|
inline |
|
inline |
|
private |