4#ifndef ACCEL_CUDA_SUM_REDUCTION_CUH_
5#define ACCEL_CUDA_SUM_REDUCTION_CUH_
9#include <cuda_runtime.h>
15inline constexpr int kReductionBlockSize = 512;
19inline constexpr int kReductionGridSize = 8;
37__global__
void BlockSumReduceKernel(
const float* __restrict__ input,
38 float* __restrict__ partials,
47void LaunchBlockSumReduce(
const float* input,
float* partials,
48 std::size_t count,
int grid_size = kReductionGridSize,
49 int block_size = kReductionBlockSize,
50 cudaStream_t stream =
nullptr);
59double SumOnDevice(
const float* host_input, std::size_t count,
60 int grid_size = kReductionGridSize,
61 int block_size = kReductionBlockSize);