Skip to content

Commit

Permalink
Add __launch_bounds__
Browse files Browse the repository at this point in the history
  • Loading branch information
fthaler committed Jun 18, 2024
1 parent f70b885 commit 6e77d53
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
16 changes: 14 additions & 2 deletions include/gridtools/fn/backend/gpu.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,20 @@ namespace gridtools::fn::backend {
return std::make_tuple(std::move(global_thread_indices), std::move(block_sizes));
}

template <class ThreadBlockSizes, class LoopBlockSizes, class Sizes, class PtrHolder, class Strides, class Fun>
__global__ void kernel(Sizes sizes, PtrHolder ptr_holder, Strides strides, Fun fun) {
template <class Int, Int... i>
constexpr int iseq_product(std::integer_sequence<Int, i...>) {
return (1 * ... * i);
}

template <class ThreadBlockSizes,
class LoopBlockSizes,
class Sizes,
class PtrHolder,
class Strides,
class Fun,
int NumThreads = iseq_product(meta::list_to_iseq<block_sizes_for_sizes<ThreadBlockSizes, Sizes>>())>
__global__ void __launch_bounds__(NumThreads)
kernel(Sizes sizes, PtrHolder ptr_holder, Strides strides, Fun fun) {
auto const [thread_idx, block_size] = global_thread_index<ThreadBlockSizes, LoopBlockSizes>(sizes);
if (!tuple_util::all_of(std::less(), thread_idx, sizes))
return;
Expand Down
2 changes: 1 addition & 1 deletion tests/include/fn_select.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ namespace {
gridtools::integral_constant>,
gridtools::meta::list<gridtools::integral_constant<int, sizes>...>>;

using fn_backend_t = gridtools::fn::backend::gpu<block_sizes_t<32, 8, 1>, block_sizes_t<2, 2, 2>>;
using fn_backend_t = gridtools::fn::backend::gpu<block_sizes_t<32, 8, 1>, block_sizes_t<1, 1, 1>>;
} // namespace
#endif

Expand Down

0 comments on commit 6e77d53

Please sign in to comment.