Chapter 18. ヒストグラム

Table of Contents

18.1. アルゴリズムのパラメータ
18.2. 共有ローカルメモリ
18.3. ストライドとメモリアクセス
18.4. ストライドとBank Conflict
18.5. Stride型のアルゴリズム
18.6. バンクコンフリクトの緩和対策の実装例
18.7. アトミック型のアルゴリズム

ヒストグラムは統計学の基本であり、データの分布状況を把握するために使います。データの分布を集計するには「階数」(横軸)を定義します。この階数の要素は、ビン(もしくはカテゴリ、バケツ)と呼びます。ビンを算出する式は以下の式で表せます。

images/normal_histogram.png

nはビン、mはデータの要素を示します。つまりk個のmの和がビンということです。

CPUでヒストグラムを実装するのは驚くほどシンプルです。下記のソースコードでは、ヒストグラムを集計している行はわずか1行です。

ヒストグラムの集計(CPU). 

import numpy as np
from numpy.random import *

# Set the seed to 100
np.random.seed(100)

DATA_SIZE = 1024
BIN_SIZE = 256
data = randint(0, BIN_SIZE, DATA_SIZE).astype(np.uint8)

histogram = np.zeros(BIN_SIZE).astype(np.uint8)

for i in range(DATA_SIZE):
    histogram[data[i]] += 1 #(1)

print(sum(histogram))

(1)

配列の添字をdata[i]として、該当する添字の要素をインクリメントします。

上記のプログラムの出力は以下のようになります。

出力. 

1024

Copyright 2018-2019, by Masaki Komatsu