Chapter 12. PrefixSumアルゴリズム

Table of Contents

12.1. Scanカーネル
12.2. InclusiveScan
12.3. ExclusiveScan

Warning

PyOpenCL組み込み関数はパフォーマンスに問題を抱えており、本書ではOpenCLのバインディング機能で実装することを推奨します。あくまでも読者のご参考のためだけの掲載とお考えください。

PrefixSumについて聞きなれない方は多いと思いますが、累積ヒストグラムと言えばピンとくるかもしれません。

PrefixSumの最もシンプルな例を見てみましょう。まず前提とする元データが以下のような配列だったとします。

1 2 3 4 5

これのPrefixSumを算出すると以下のようになります。

1 3 6 10 15

Pythonの文脈では、numpyのcumsum関数がPrefixSumの計算をしてくれます。

import numpy as np
a = np.arange(10)
print(np.cumsum(a))

出力は以下の通りです。

[ 0  1  3  6 10 15 21 28 36 45]

Copyright 2018-2019, by Masaki Komatsu