chainer.functions.scatter_add(a, slices, b)[source]

Adds given values to specified elements of an array.

This function adds b to the specified elements of the copy of a, and returns the copy. The value of the original a is not changed.

  • a (Variable or N-dimensional array) – A variable.
  • slices (int, slice, Ellipsis, None, integer array-like, boolean array-like or tuple of them) – It is an integer, a slice, an ellipsis, a numpy.newaxis, an integer array-like, a boolean array-like or tuple of them.
  • b (Variable or N-dimensional array) – A variable that is scatter added to a. Its shape has to equal a[slices] because broadcasting of variables is not supported.

A Variable object which is the result of scatter addition.


It only supports types that are supported by CUDA’s atomicAdd when an integer array is included in slices. The supported types are numpy.float32, numpy.int32, numpy.uint32, numpy.uint64 and numpy.ulonglong.


It does not support slices that contains multiple boolean arrays.

See also and cupyx.scatter_add().