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/accelerator/Memory.h"
15#include "arccore/common/NumArray.h"
20#include "arccore/accelerator/internal/Initializer.h"
22#include "./TestCommon.h"
33void _doTestMemoryBandwidth(
bool use_accelerator)
36 Runner runner(init.executionPolicy());
38 if (queue.isAcceleratorPolicy())
40 Int32 nb_value = 500 * 1000 * 128;
41 if (!queue.isAcceleratorPolicy()) {
45 std::cout <<
"Using accelerator policy name=" << queue.executionPolicy() <<
"\n";
46 std::cout <<
" nb_loop=" << nb_loop <<
" nb_value=" << nb_value <<
"\n";
50 host_a.resize(nb_value);
52 for (Int32 i = 0; i < nb_value; ++i) {
58 device_a.copy(host_a);
61 device_b.resize(nb_value);
66 for (Int32 i = 0; i < nb_loop; ++i)
67 queue.copyMemory(copy_args);
71 Int64 nb_byte = device_a.bytes().size() * nb_loop * 2;
73 Real nb_giga_byte_second = (
static_cast<Real
>(nb_byte) / 1.0e9) / diff;
74 std::cout <<
"** TotalMemoryCopy Device/Device" <<
" GB/s=" << nb_giga_byte_second <<
" time=" << diff <<
"\n";
77ARCCORE_TEST_DO_TEST_ACCELERATOR(ArccoreAccelerator, TestMemoryBandwidth, _doTestMemoryBandwidth);
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.
Classe pour initialiser le runtime accélérateur.
Arguments pour la copie mémoire.
File d'exécution pour 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.
Espace de nom pour l'utilisation des accélérateurs.
RunQueue makeQueue(const Runner &runner)
Créé une file associée à runner.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eMemoryResource
Liste des ressources mémoire disponibles.
@ Device
Alloue sur le device.