Arcane  v3.16.9.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
TestVirtualMethod_Kernel.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/utils/NumArray.h"
11
12#include "arcane/accelerator/core/RunQueue.h"
14
15#include "TestVirtualMethod.h"
16
17#include <iostream>
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22using namespace Arcane;
23using namespace Arcane::Accelerator;
24
25extern "C++" void
26_doCallTestVirtualMethod1(RunQueue& queue, NumArray<Int32, MDDim1>& compute_array, BaseTestClass* base_instance)
27{
28 // Applique une commande prenant en argument le pointeur sur la classe de base.
29 const Int32 nb_item = compute_array.dim1Size();
30 {
31 RunCommand command(makeCommand(queue));
32 auto in_out_array = compute_array.to1DSpan();
33 command << RUNCOMMAND_LOOP1(iter, nb_item)
34 {
35 auto [i] = iter();
36 in_out_array[i] = base_instance->apply(i, i);
37 };
38 }
39}
40
41/*---------------------------------------------------------------------------*/
42/*---------------------------------------------------------------------------*/
Types et macros pour gérer les boucles sur les accélérateurs.
#define RUNCOMMAND_LOOP1(iter_name, x1,...)
Boucle sur accélérateur avec arguments supplémentaires pour les réductions.
Gestion d'une commande sur accélérateur.
File d'exécution pour un accélérateur.
Tableaux multi-dimensionnels pour les types numériques accessibles sur accélérateurs.
Span< const DataType > to1DSpan() const
Vue 1D constante sur l'instance.
constexpr Int32 dim1Size() const
Valeur de la première dimension.
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 -*-