Juan Fumero博士はQCon Londonで、TornadoVMについて講演した。TornadoVMは、GPU(Graphic Processing Unit)やFPGA(Field Programmable Gate Array)を含む異種ハードウェア上でJavaを実行する、OpenJDKおよびGraalVM用のプラグインである。講演中のデモでは、GPU上でコードを実行することによって、CPUに対して数百倍スピードアップすることを示してみせた。
GPUとFPGAは、高度に並列化されたワークロードに対して、2~3桁の速度向上を提供することができる。しかし、プログラミングにおいてOpenCLやVHDLといった低レベル言語の使用が必要であることから、このような速度向上を得ることは難しかった。TornadoVMは、JavaやNode.jsを使用するプログラマにも速度向上を手に入れられるようにするものだ。コンパイラへのヒントとして並列化可能なコードブロックをマークするのには、アノテーションが使用されている。
TornadoVMはNvidia、AMD、Intel製のマルチコアCPUとGPU、Intel製のFPGAをサポートする。ハードウェアアクセラレータの選択はパラメータとしてTornadoVMに渡される。講演ではCPU、Intelの組込GPU、博士の使用するMacラップトップのNvidia GPUでのコード実行をデモンストレーションした。異なるハードウェアタイプ間での実行中のタスクマイグレーションも可能で、これも講演でデモンストレーションされた。Tensor Processing Unit(TPU)はまだサポートされていないが、OpenCLのサポートがあればTornadoVMに新たなバックエンドを加えるのは難しい作業ではない、とFumero博士は述べた。Tornado VMチームは現在、NvidiaのParallel Thread Execution(PTX)のサポートを追加する作業を行っている。
Fumero博士とマンチェスター大学の同僚たちは、サポートする組織が存在しないことから、TornadoVMはまだ実用レベルではないと考えている。ただし、業界でのケーススタディはすでに存在しており、Exusは医療データを扱うマシンラーニングモデルのトレーニングの高速化にTornadoVMを使用している。基本となるプログラミングモデルの制限のため、TornadoVMではオブジェクト(簡単なものを除く)、再帰、動的メモリアロケーション、例外処理はサポートされない。
プレゼンテーションビデオ"TornadoVM:Java for GPU and FPGAs"はQCon Londonの参加者にはすでに提供されており、InfoQ読者にも近日中に公開される予定である。Fumero博士が自身のスライドとデモを公開している。