GPUを支える技術

本日読了。 

 

GPUを支える技術 ――超並列ハードウェアの快進撃[技術基礎] (WEB+DB PRESS plus)

GPUを支える技術 ――超並列ハードウェアの快進撃[技術基礎] (WEB+DB PRESS plus)

 

 

良書。GPUの歴史や基礎、活用について、幅広くかつ深く学ぶことができる。

グラフィックスは(x, y, z, w)の同次座標系、(α, r, g. b)の色彩など、4次元ベクトルを使うことで、4*4の行列による線形変換で表現できる。そのため、GPUは、浮動小数点演算器を4つペアで持ち、積和計算を並列に行うことができる。このような行列計算は、科学技術シミュレーションや機械学習でも有用である。

GPUは、I/Oや複雑な処理は苦手であり、CPUとの組み合わせで使う。スマホ向けSoCは、CPUとGPUを統合している。CPUで処理した結果をGPUに持ってくるためのメモリ転送がボトルネックとなる。

メモリ転送などの処理をC言語に拡張した言語を使ってGPU処理を記述する。CUDAはNVIDIAのプロプラ言語であり、OpenCLは標準版。CUDAの方が、NVIDIAの最新技術を活用するとともに高速性が得やすい。一方、通常のC言語に並列指示をするだけのアプローチもあり、NVIDIA系のOpenACCと、標準のOpenMPがある。OpenMPはCPUだけの並列処理やCPUに複数のGPUを接続したりといった、幅広い実装に適用できる。