Reduction in GPU
Overview
Tutorial: 5 min
Learn how to perform reduction operations on GPUs.
Understand how to use the @reduce decorator in Numba.
Numba offers a @reduce decorator that transforms a simple binary operation into a reduction kernel.
Initial Array:
[2] [4] [6] [8] [1] [3] [5] [7]
\ / \ / \ / \ /
6 14 4 12
\ / \ /
20 16
\ /
36
1import numpy
2from numba import cuda
3
4@cuda.reduce
5def sum_reduce(a, b):
6 return a + b
7
8A = (numpy.arange(1234, dtype=numpy.float64)) + 1
9normal_sum = A.sum() # NumPy sum reduction
10gpu_sum = sum_reduce(A) # cuda sum reduction
11assert normal_sum == gpu_sum
Key Points
@reducecan convert a simple binary operation into a reduction kernel.Numba’s reduction operations can be performed on GPUs, providing efficient parallel computation.