Skip to content

Commit e413c3b

Browse files
Merge pull request #1989 from arcaneframework/dev/gg-add-accelerator-support-for-multiarray
Add accelerator support for `MultiArray2`
2 parents 19b5976 + a8b4564 commit e413c3b

File tree

4 files changed

+342
-134
lines changed

4 files changed

+342
-134
lines changed

arcane/src/arcane/tests/accelerator/AcceleratorViewsUnitTest.cc

+53-2
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
22
//-----------------------------------------------------------------------------
3-
// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
3+
// Copyright 2000-2025 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
44
// See the top-level COPYRIGHT file for details.
55
// SPDX-License-Identifier: Apache-2.0
66
//-----------------------------------------------------------------------------
77
/*---------------------------------------------------------------------------*/
8-
/* AcceleratorViewsUnitTest.cc (C) 2000-2024 */
8+
/* AcceleratorViewsUnitTest.cc (C) 2000-2025 */
99
/* */
1010
/* Service de test des vues pour les accelerateurs. */
1111
/*---------------------------------------------------------------------------*/
1212
/*---------------------------------------------------------------------------*/
1313

1414
#include "arcane/utils/ValueChecker.h"
15+
#include "arcane/utils/MemoryUtils.h"
16+
#include "arcane/utils/MultiArray2.h"
1517

1618
#include "arcane/core/BasicUnitTest.h"
1719
#include "arcane/core/ServiceFactory.h"
@@ -91,6 +93,7 @@ class AcceleratorViewsUnitTest
9193
void _checkResultReal2x2(Real to_add);
9294
void _checkResultReal3x3(Real to_add);
9395
void _executeTestGroupIndexTable();
96+
void _executeTestMultiArray();
9497
};
9598

9699
/*---------------------------------------------------------------------------*/
@@ -209,6 +212,7 @@ executeTest()
209212
_executeTestMemoryCopy();
210213
_executeTestVariableCopy();
211214
_executeTestVariableFill();
215+
_executeTestMultiArray();
212216
}
213217

214218
/*---------------------------------------------------------------------------*/
@@ -871,6 +875,53 @@ _executeTestGroupIndexTable()
871875
/*---------------------------------------------------------------------------*/
872876
/*---------------------------------------------------------------------------*/
873877

878+
void AcceleratorViewsUnitTest::
879+
_executeTestMultiArray()
880+
{
881+
info() << "Execute test TestMultiArray";
882+
ValueChecker vc(A_FUNCINFO);
883+
auto queue = makeQueue(m_runner);
884+
UniqueMultiArray2<Int32> values(MemoryUtils::getDefaultDataAllocator());
885+
const Int32 dim1_size = 5;
886+
NumArray<Int32, MDDim1> result_values(dim1_size);
887+
NumArray<Int32, MDDim1> expected_result_values(dim1_size);
888+
UniqueArray<Int32> sizes(dim1_size);
889+
for (Int32 i = 0; i < dim1_size; ++i)
890+
sizes[i] = i + 1;
891+
values.resize(sizes);
892+
MultiArray2SmallSpan<Int32> inout_values = values.span();
893+
for (Int32 i = 0; i < dim1_size; ++i) {
894+
const Int32 dim2_size = inout_values[i].size();
895+
Int32 total = 0;
896+
info() << "I=" << i << " dim2_size=" << dim2_size;
897+
for (Int32 j = 0; j < dim2_size; ++j) {
898+
Int32 v = i + j + 1;
899+
inout_values[i][j] = v;
900+
total += v;
901+
}
902+
expected_result_values[i] = total;
903+
}
904+
905+
{
906+
auto command = makeCommand(queue);
907+
auto out_values_view = viewOut(command, result_values);
908+
909+
command << RUNCOMMAND_LOOP1(iter, dim1_size)
910+
{
911+
auto [i] = iter();
912+
const Int32 dim2_size = inout_values[i].size();
913+
Int32 total = 0;
914+
for (Int32 j = 0; j < dim2_size; ++j)
915+
total += inout_values[i][j];
916+
out_values_view[i] = total;
917+
};
918+
}
919+
vc.areEqualArray(result_values.to1DSpan(), expected_result_values.to1DSpan(), "Result");
920+
}
921+
922+
/*---------------------------------------------------------------------------*/
923+
/*---------------------------------------------------------------------------*/
924+
874925
} // namespace ArcaneTest
875926

876927
/*---------------------------------------------------------------------------*/

0 commit comments

Comments
 (0)