web-dev-qa-db-ja.com

Java GPUプログラミング

JavaでGPUプログラミングを行うことは可能ですか?つまり、ネイティブライブラリを使用せずに。

そして、GPUに切り替えると、どれだけのパフォーマンスの向上が期待できますか?

編集:

私はゲームプログラミングを見ていません、私はハードコア数の計算をしたいです。

29

はい。 Java3D、LWJGL、およびJOGLのサポート [〜#〜] glsl [〜#〜] (OpenGLシェーディング言語)。

編集:
GPUでプラットフォームに依存しない汎用計算を行う場合は、OpenCLを使用できます。このフレームワークを使用すると、機能セットや実行環境が大きく異なるにもかかわらず、すべての処理装置を同じように扱うコードを記述できます。ただし、これはJavaと比較して非常に低レベルのプログラミングです。

あなたの理想はOpenCLサポートで書かれたJVMだろうと思われます。オンラインで検索したところ、このアイデアに少し興味がありましたが、大きな裏付けの証拠はありませんでした。

パフォーマンスの向上がどれだけ期待できるか

これは、実行しているシステムと処理しているデータの種類によって異なります(行列とベクトルの計算は、GPUで非常に効率的です)。 2つの強力なGPUと適度なシングルコアCPUを備えた私のようなシステムでは、大きなメリットが得られる可能性があります。ただし、適度なGPUとクアッドコアCPUを搭載したコンピューターでは、パフォーマンスの向上はオーバーヘッドを克服するのに苦労する可能性があります。

11
Gunslinger47

Rootbeer1がgithubでリリースされました: https://github.com/pcpratts/rootbeer1

ルートビアを使用すると、以下を除いて、ほぼすべてのJavaを使用してプログラミングできます。

  1. ネイティブメソッドとフィールド
  2. 反射
  3. 動的メソッド呼び出し
  4. garbage collection
  5. モニターの中で眠る

これは、複合型で任意のオブジェクトグラフを使用できることを意味します。

6
pcpratts

ネイティブライブラリを使用せずにGPUでJava)でハードコア数を計算することをまだ検討している場合は、このブログ記事に興味があるかもしれません http://ateji.blogspot.com/2011/02/Java-on-gpu-with-ateji-px.html 私たち(私はAtejiチームの一員です)は、Javaアプリケーションでこれまでに最大60倍のパフォーマンスを見てきましたこれは大規模に並列化できます。

2
user619318

defはrootbeer1をチェックアウトしますが、開始する前にCUDAが承認したGFXカードを持っていることを確認し、NVIDIAのセットアップなどをすべて行う必要があります。

ダウンロードリンク:googleCUDAダウンロード

入門ガイドhttp://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_C_Getting_Started_Windows .pdf

1
Andy