はじめに

本書は「OpenCL入門」というC/C++ APIをベースにしたOpenCLの準備課程の続編にあたる基礎課程となります。「Java-OpenCL入門」というタイトルの通り、JavaとOpenCLフレームワークを使った並列処理技術に焦点を当てています。

OpenCLはC言語のフレームワークであり、CPUやGPU(GPGPU)が混在するアプリケーションの開発を可能としますが、JavaでもOpenCLの特徴であるGPUによる大量並列演算処理を使うニーズがあると考えたのが執筆を決意した経緯です。

しかし基礎知識となるGPGPUやC言語プログラミングに馴染みの無い読者にいきなりJavaやPythonバインディングを解説しても、ソースコードの最適化が必要となる際に、C言語特有の部分がブラックボックスと取り付くしまも無い不安感として膨張し、読者にとって満足できる入門書にはならないと考えました。とは言えJavaでGPGPUを学びたいエンジニアにC言語のAPIをそのまま紹介してしまうと、本の文脈や趣旨がぶれるだけでなく本末転倒の結果となってしまいます。

筆者なりに妥協点を考えたところ、本を分割してC/C++をベースにしたOpenCL入門書と、Javaをベースにした入門書を別途出版することにしました。

今回はOpenCLのJavaバインディングの入門書を執筆させて頂きます。Java言語を使ったGPGPUプログラミングの実装を紹介します。

Copyright 2018-2019, by Masaki Komatsu