Arcane  v3.15.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
TestPartition_Kernel.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
20using namespace Arcane;
21using namespace Arcane::Accelerator;
22
23extern "C++" void _doPartition1(RunQueue queue, SmallSpan<Real> values, SmallSpan<Real> final_values)
24{
25 std::cout << "DO_Partition_1\n";
26
27 const Int32 nb_value = values.size();
29 //, { 1.3, 4.5, -1.2, 3.5, 7.0, 4.2, 2.3, 1.6 });
30 input.copy(values, queue);
32 auto input_values = viewIn(queue, input);
33 auto output_values = viewOut(queue, output);
34 auto select_lambda = [=] ARCCORE_HOST_DEVICE(Int32 input_index) {
35 return input_values[input_index] > 2.0;
36 };
37 auto setter_lambda = [=] ARCCORE_HOST_DEVICE(Int32 input_index, Int32 output_index) {
39 };
41 partitioner.applyWithIndex(nb_value, setter_lambda, select_lambda, A_FUNCINFO);
42 Int32 nb_first_part = partitioner.nbFirstPart();
43 std::cout << "NbFirstPart = " << nb_first_part << "\n";
44 std::cout << "Input=" << values << "\n";
45 std::cout << "Output=" << output.to1DSmallSpan() << "\n";
46 std::cout << "Expected=" << final_values << "\n";
47 // Expected nb_first_part = 4
48 // Expected output : [0]="4.5" [1]="3.5" [2]="7" [3]="4.2" [4]="2.3" [5]="1.6" [6]="-1.2" [7]="1.3"
49 ASSERT_EQ(output.to1DSmallSpan(), final_values);
50}
51
52/*---------------------------------------------------------------------------*/
53/*---------------------------------------------------------------------------*/
Types et macros pour gérer les boucles sur les accélérateurs.
Algorithme générique de partitionnement d'une liste.
File d'exécution pour un accélérateur.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:149
Espace de nom pour l'utilisation des accélérateurs.
auto viewOut(const ViewBuildInfo &vbi, CellMaterialVariableScalarRef< DataType > &var)
Vue en écriture pour les variables materiaux scalaire.
auto viewIn(const ViewBuildInfo &vbi, const CellMaterialVariableScalarRef< DataType > &var)
Vue en lecture pour les variables materiaux scalaire.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-