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"
30Int64 _testReduceDirect(
RunQueue queue, Int32 nb_value, Int32 nb_loop)
41 auto out_c =
viewOut(command, c);
45 out_c(i) = (i + 2) + (i + 3);
53 for (
int j = 0; j < nb_loop; ++j) {
58 reducer.combine(c_view[iter]);
60 Int64 tx = reducer.reducedValue();
65 std::cout <<
"** TotalReduceDirect=" << total_x <<
" time=" << (y - x) <<
"\n";
69TEST(ArccoreAccelerator, TestReduceDirect)
72 Runner runner(x.executionPolicy());
79 Int32 nb_value = 1000000;
80 Int64 expected_value = 1000004000000;
84 std::cout <<
"Test Sync\n";
85 Int64 v = _testReduceDirect(queue, nb_value, nb_loop);
86 Int64 v2 = v /= nb_loop;
87 std::cout <<
"V=" << v2 <<
"\n";
88 ASSERT_EQ(v2, expected_value);
92 std::cout <<
"Test Asynchronous\n";
94 Int64 v = _testReduceDirect(queue, nb_value, nb_loop);
95 Int64 v2 = v /= nb_loop;
96 std::cout <<
"V=" << v2 <<
"\n";
97 ASSERT_EQ(v2, expected_value);
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 initialiser le runtime accélérateur.
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.
eMemoryResource memoryResource() const
Ressource mémoire utilisée pour les allocations avec cette instance.
void setMemoryRessource(eMemoryResource mem)
Positionne la ressource mémoire utilisée pour les allocations avec cette instance.
bool isAcceleratorPolicy() const
Indique si l'instance est associée à un accélérateur.
Gestionnaire d'exécution pour accélérateur.
Tableaux multi-dimensionnels pour les types numériques accessibles sur accélérateurs.
Vue d'un tableau d'éléments de type T.
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.
auto viewOut(const ViewBuildInfo &vbi, CellMaterialVariableScalarRef< DataType > &var)
Vue en écriture pour les variables materiaux scalaire.
RunQueue makeQueue(const Runner &runner)
Créé une file associée à runner.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
ARCCORE_BASE_EXPORT bool arccoreIsDebug()
Vrai si la macro ARCCORE_DEBUG est définie.
eMemoryResource
Liste des ressources mémoire disponibles.
@ Device
Alloue sur le device.