Arcane  v3.15.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
TestPartition.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7
8#include <gtest/gtest.h>
9
10#include "arcane/accelerator/core/Runner.h"
11#include "arcane/accelerator/core/RunQueue.h"
12
13#include "arcane/accelerator/GenericPartitioner.h"
16
17/*---------------------------------------------------------------------------*/
18/*---------------------------------------------------------------------------*/
19
20extern "C++" void arcaneRegisterDefaultAcceleratorRuntime();
21extern "C++" Arcane::Accelerator::eExecutionPolicy arcaneGetDefaultExecutionPolicy();
22
23using namespace Arcane;
24using namespace Arcane::Accelerator;
25
26namespace
27{
28void _doInit()
29{
30 arcaneRegisterDefaultAcceleratorRuntime();
31}
33{
34 return arcaneGetDefaultExecutionPolicy();
35}
36} // namespace
37
38extern "C++" void _doPartition1(RunQueue queue, SmallSpan<Real> values, SmallSpan<Real> final_values);
39
41{
42 auto f = [] {
43 _doInit();
44
46 RunQueue queue(makeQueue(runner));
47
48 std::array<Real, 8> v1{ 1.3, 4.5, -1.2, 3.5, 7.0, 4.2, 2.3, 1.6 };
49 std::array<Real, 8> r1{ 4.5, 3.5, 7.0, 4.2, 2.3, 1.6, -1.2, 1.3 };
50 _doPartition1(queue, SmallSpan<Real>(v1), SmallSpan<Real>(r1));
51
52 std::array<Real, 9> v2{ 1.3, 4.5, -1.2, 3.5, 7.0, 4.2, 2.3, 1.6, 1.1 };
53 std::array<Real, 9> r2{ 4.5, 3.5, 7.0, 4.2, 2.3, 1.1, 1.6, -1.2, 1.3 };
54 _doPartition1(queue, SmallSpan<Real>(v2), SmallSpan<Real>(r2));
55
56 std::array<Real, 3> v3{ 1.3, -1.2, 0.5 };
57 std::array<Real, 3> r3{ 0.5, -1.2, 1.3 };
58 _doPartition1(queue, SmallSpan<Real>(v3), SmallSpan<Real>(r3));
59
60 std::array<Real, 4> v4{ 3.5, 2.3, 4.5, 5.6 };
61 std::array<Real, 4> r4{ 3.5, 2.3, 4.5, 5.6 };
62 _doPartition1(queue, SmallSpan<Real>(v4), SmallSpan<Real>(r4));
63
64 std::array<Real, 10> v5{ 1.3, 4.5, -1.2, 3.5, 7.0, 4.2, 2.3, 1.6, 1.1, 1.5 };
65 std::array<Real, 10> r5{ 4.5, 3.5, 7.0, 4.2, 2.3, 1.5, 1.1, 1.6, -1.2, 1.3 };
66 _doPartition1(queue, SmallSpan<Real>(v5), SmallSpan<Real>(r5));
67 };
69}
70
71/*---------------------------------------------------------------------------*/
72/*---------------------------------------------------------------------------*/
Types et macros pour gérer les boucles sur les accélérateurs.
File d'exécution pour un accélérateur.
Gestionnaire d'exécution pour accélérateur.
Definition core/Runner.h:68
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:149
Espace de nom pour l'utilisation des accélérateurs.
RunQueue makeQueue(const Runner &runner)
Créé une file associée à runner.
eExecutionPolicy
Politique d'exécution pour un Runner.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
void arcaneCallFunctionAndTerminateIfThrow(std::function< void()> function)