このようなコンピューティングにおける新しい異種デバイスの中には、マルチコアCPU、GPU(Graphics Processing Unit)、FPGA(Field Programmable Gate Array)などがあります。多様性はすばらしいことですが、これら新しいデバイスを効率的にプログラムする方法が必要です。 その最たるものとして挙げられるのが、ヘテロジニアス(異種)プログラミング言語の代表格である、CUDAとOpenCLの2つです。しかしこれらの言語では、APIに低レベルな機能が現れているため、専門家でないユーザが使うには非常に難しいものになっています。その例として、OpenCL 3.0標準の中から次の一節を引用してご紹介しましょう。 OpenCLが対象とするのは、ポータブルかつ効率的なコードの記述を望む専門的プログラマです。[...] 従ってOpenCLでは、低レベルのハードウ
![TornadoVM: GPUとFPGAでJavaを高速化する](https://cdn-ak-scissors.b.st-hatena.com/image/square/790f6ca2d2f11b000d991c47f4c144c3bbf94539/height=288;version=1;width=512/https%3A%2F%2Fres.infoq.com%2Farticles%2Ftornadovm-java-gpu-fpga%2Fja%2Fheaderimage%2FDQoigXWs-1591918279922.jpeg)