8#include <gtest/gtest.h>
10#include "arccore/base/PlatformUtils.h"
11#include "arccore/base/ForLoopRanges.h"
13#include "arccore/common/accelerator/Runner.h"
14#include "arccore/common/accelerator/RunQueue.h"
15#include "arccore/common/NumArray.h"
17#define ARCCORE_EXPERIMENTAL_GRID_STRIDE
27#include "arccore/accelerator/internal/Initializer.h"
40 Int32 nb_value, Int32 nb_part, Int32 nb_loop,
bool is_async)
44 if ((nb_value % nb_part) != 0)
45 ARCCORE_FATAL(
"{0} is not a multiple of {1}", nb_value, nb_part);
51 for (
int j = 0; j < nb_loop; ++j) {
54 command.addNbThreadPerBlock(nb_thread);
55 command.addNbStride(nb_part);
58 reducer.combine(c_view[iter]);
60 Int64 tx = reducer.reducedValue();
65 Int64 nb_byte = c.
size() *
sizeof(Int64) * nb_loop;
67 Real nb_giga_byte_second = (
static_cast<Real
>(nb_byte) / 1.0e9) / diff;
68 std::cout <<
"** TotalReduceGridStride=" << total_x <<
" async?=" << is_async
69 <<
" nb_part=" << nb_part <<
" nb_value=" << nb_value
70 <<
" nb_thread=" << nb_thread
71 <<
" GB/s=" << nb_giga_byte_second <<
" time=" << diff <<
"\n";
#define ARCCORE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Types et fonctions pour gérer les synchronisations sur les accélérateurs.
Types et macros pour gérer les boucles sur les accélérateurs.
#define RUNCOMMAND_LOOP1(iter_name, x1,...)
Boucle 1D sur accélérateur avec arguments supplémentaires.
Classe pour effectuer une réduction 'somme'.
File d'exécution pour un accélérateur.
void setAsync(bool v)
Positionne l'asynchronisme de l'instance.
bool isAcceleratorPolicy() const
Indique si l'instance est associée à un accélérateur.
Vue d'un tableau d'éléments de type T.
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
Espace de nom pour l'utilisation des accélérateurs.
RunCommand makeCommand(const RunQueue &run_queue)
Créé une commande associée à la file run_queue.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-