8#include <gtest/gtest.h>
10#include "arccore/base/PlatformUtils.h"
12#include "arccore/common/accelerator/Runner.h"
13#include "arccore/common/accelerator/RunQueue.h"
14#include "arccore/common/NumArray.h"
19#include "arccore/accelerator/internal/Initializer.h"
32 Int32 nb_value, Int32 nb_part, Int32 nb_loop,
bool is_async)
36 if ((nb_value % nb_part) != 0)
37 ARCCORE_FATAL(
"{0} is not a multiple of {1}", nb_value, nb_part);
38 Int32 nb_true_value = nb_value / nb_part;
39 Int32 offset = nb_true_value;
43 for (
int j = 0; j < nb_loop; ++j) {
46 command.addNbThreadPerBlock(nb_thread);
50 for (Int32 k = 0; k < nb_part; ++k)
51 reducer.combine(c_view[i + (offset * k)]);
53 Int64 tx = reducer.reducedValue();
58 Int64 nb_byte = c.
size() *
sizeof(Int64) * nb_loop;
60 Real nb_giga_byte_second = (
static_cast<Real
>(nb_byte) / 1.0e9) / diff;
61 std::cout <<
"** TotalReduceDirect=" << total_x <<
" async?=" << is_async
62 <<
" nb_part=" << nb_part <<
" nb_value=" << nb_value
63 <<
" nb_thread=" << nb_thread
64 <<
" 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.
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 -*-