書籍『[増補改訂]GPUを支える技術 ――超並列ハードウェアの快進撃[技術基礎]』を読んだので、感想をまとめます。
書籍の概要
『GPUを支える技術』は、コンピュータグラフィックスやディープラーニングなどで利用されているプロセッサ「GPU (Graphics Processing Unit)」についての解説書です。
GPU の最初の用途であるコンピュータグラフィックスの概要や、GPU の仕組み、GPU プログラミング、ディープラーニングなどでの活用など、GPU に関するトピックが幅広く解説されています。
書籍の最初に書いてある通り、読み進める前提として、CPU の基本的な概念や C 言語について理解している必要があります。
コンピュータグラフィックについて
この書籍では、前半でコンピュータグラフィックについてもある程度ページ数が割かれており、どんな処理があって、なぜ CPU ではなく GPU が適しているのかが解説されています。
コンピュータグラフィックについては、
- 法線マッピング
- レイトレーシング
などの様々な工夫が解説されており、工夫の考え方がとても面白かったです。
GPU の仕組みや GPU プログラミングについて
個人的には、ディープラーニングなどのいわゆる「GPGPU」の環境構築に役立てたくてこの本を手に取ったので、GPU の仕組みや GPU プログラミングについての章はとても参考になりました。
CPU と GPU ではメモリに求める要件が異なるため、CPU 側のメインメモリから GPU のメモリに DMA でデータを転送して処理することなどが、分かりやすく解説されていました。
CUDA や OpenCL については、非常にざっくりした概要しか知らなかったのですが、
- C 言語の拡張 (CUDA、OpenCL)
- コンパイル後のドライバ向け出力 (CUDA に対する抽象化アセンブラ PTX、OpenCL に対する SPIR-V)
- GPU における機械命令
といった階層があることが理解できました。
発展的なトピック
後半では、ディープラーニングをはじめとする発展的なトピックについても豊富に解説されています。
用語としては知っていた「TPU (Tensor Processing Unit)」が、GPU とどのように異なるのか、概要を理解することができました。
感想
感想を一言で言えば、GPGPU やコンピュータグラフィックに興味のあった自分にとって、すごく良い本でした。
コンピュータグラフィックや GPU について前提知識のない自分には難しい部分も多かったですが、知りたかったキーワードの概要をかなり理解できました。
GPU についてざっくり学びたい方が手に取ってみるのにおすすめです。