第6章 JOCL

目次

6.1. java.nio.Buffer
6.2. Pointerオブジェクト

重要

JavaとOpenCLとの連携に関して解説しています。この項目は現時点で理解しかなくても良いですが、OpenCLでclCreateBufferなどでメモリオブジェクトやバッファを生成する際やclSetKernelArgでメモリオブジェクトをカーネルに渡す際に繰り返し参照しておくと良いかと思います。

JOCLはC言語APIであるOpenCLのJavaバインディングの一つです。Javaは基本的にC言語に類似した文法を持ちますが、ポインタを持たないため、C言語のOpenCL関数を使うには、ポインタに該当するJavaオブジェクトが必要となります。それが以下のクラスです。

OpenCLとC言語、JNIの経験がある読者の場合、JOCLのことをほとんど全く知らなくても、このPointerオブジェクトがCポインタに該当することが分かればすぐにでもコードができるといっても過言ではありません。

この項目ではPointerオブジェクトと、Pointerオブジェクトが参照するBufferオブジェクトについて解説をしますが、読者にあまり深く考えないように釘をさしておきたいと思います。

Java開発者としては「JOCLの文脈に限定するならば、Pointerオブジェクト:=Javaのプリミティブ型の配列」と把握するだけでもGPGPUアプリケーションは開発できますので、C言語のvoidポインタのラッパーメソッドだから難しいはずといった固定観念で身構えないようにしてください。Javaでの開発作業としては、Pointerオブジェクト=「Javaのプリミティブ型の配列」を念頭にコードするだけでも十分にアプリケーションが開発できるようにJOCLは設計されています。

Copyright 2018-2019, by Masaki Komatsu