Skip to content

Commit 7515dcd

Browse files
Update alpaka nbody to C++20 and simplify
1 parent 5309d7e commit 7515dcd

File tree

2 files changed

+9
-14
lines changed

2 files changed

+9
-14
lines changed

examples/alpaka/nbody/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ if (NOT TARGET llama::llama)
1515
endif()
1616
find_package(alpaka 1.0 REQUIRED)
1717
alpaka_add_executable(${PROJECT_NAME} nbody.cpp ../../common/Stopwatch.hpp)
18-
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)
18+
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20)
1919
target_link_libraries(${PROJECT_NAME} PRIVATE llama::llama fmt::fmt alpaka::alpaka xsimd)
2020

2121
if (MSVC)

examples/alpaka/nbody/nbody.cpp

+8-13
Original file line numberDiff line numberDiff line change
@@ -166,16 +166,7 @@ LLAMA_FN_HOST_ACC_INLINE void pPInteraction(const Acc& acc, ParticleRefI& pis, P
166166
template<int ThreadsPerBlock, int SharedElementsPerBlock, int ElementsPerThread, typename QuotedSMMapping>
167167
struct UpdateKernel
168168
{
169-
// TODO: make this an IILE in C++20
170-
template <typename Mapping, typename Acc, std::size_t... Is>
171-
ALPAKA_FN_HOST_ACC auto makeSharedViewHelper(const Acc& acc, std::index_sequence<Is...>) const {
172-
return llama::View{
173-
Mapping{},
174-
llama::Array{alpaka::declareSharedVar<std::byte[Mapping{}.blobSize(Is)], Is>(acc)...}};
175-
}
176-
177-
template<typename Acc, typename View>
178-
ALPAKA_FN_HOST_ACC void operator()(const Acc& acc, View particles) const
169+
ALPAKA_FN_HOST_ACC void operator()(const auto& acc, auto particles) const
179170
{
180171
auto sharedView = [&]
181172
{
@@ -189,7 +180,12 @@ struct UpdateKernel
189180
{
190181
using Mapping = typename QuotedSMMapping::
191182
template fn<llama::ArrayExtents<int, SharedElementsPerBlock>, SharedMemoryParticle>;
192-
return makeSharedViewHelper<Mapping>(acc, std::make_index_sequence<Mapping::blobCount>{});
183+
return [&]<std::size_t... Is>(std::index_sequence<Is...>)
184+
{
185+
return llama::View{
186+
Mapping{},
187+
llama::Array{alpaka::declareSharedVar<std::byte[Mapping{}.blobSize(Is)], Is>(acc)...}};
188+
}(std::make_index_sequence<Mapping::blobCount>{});
193189
}
194190
}();
195191

@@ -215,8 +211,7 @@ struct UpdateKernel
215211
template<int ElementsPerThread>
216212
struct MoveKernel
217213
{
218-
template<typename Acc, typename View>
219-
ALPAKA_FN_HOST_ACC void operator()(const Acc& acc, View particles) const
214+
ALPAKA_FN_HOST_ACC void operator()(const auto& acc, auto particles) const
220215
{
221216
const auto ti = alpaka::getIdx<alpaka::Grid, alpaka::Threads>(acc)[0];
222217
const auto i = ti * ElementsPerThread;

0 commit comments

Comments
 (0)