1

GPUを使ってアプリを高速化できるように、Java 8でAparapiを使用することを学んでいますが、Aparapiは文字列処理を処理できるかどうか疑問に思っています。

たとえば、10,000 個のファイルを処理する必要があり、アプリでテキストを読み取り、各行を処理して浮動小数点数を抽出および解析し、計算を実行して結果をハッシュマップ、リスト、または配列などの場所に保存する必要があるとします。 、複数のスレッドを使用している場合、私の CPU はほぼ 100% で実行されており、ジョブを完了するのに 1 時間近く実行されています。

私のアプリは、Java 8 を使用した Aparapi の恩恵を受けて、一部のコンピューティングを GPU に割り当てることができますか? [ + - * / ] ができることはわかっていますが、Aparapi は次のようなことができます:

String lines[]=text.split("\n");
for (int i=0;i<lines.length;i++)
{
  float number=Float.parseFloat(lines[i]);
  number*=2000;
}
4

2 に答える 2

2

OpenCL に基づく Aparapi は、ヒープ上のオブジェクトを直接処理できないため、これを行うことができません。私たちができる最善の方法は、オブジェクトを連続したヒープ (ala Rootbeer) の単一領域にマーシャリングすることによって、すべての String 状態を GPU に移動し、すべての文字列に対して並列操作を実行することです。ほとんどの場合、マーシャル + 転送時間を「取り戻す」ことは困難です。

Aparapi の HSA 対応ラムダ ブランチ (まだ作業中です!) を使用すると、HSA 対応プラットフォームでこれを行うことができます。HSA を使用すると、GPU (共有仮想メモリ) から Java ヒープ オブジェクトに直接アクセスできます。これは、GPU との間でデータをコピーする必要がなくなったことを意味します。GPU は、オブジェクト参照を直接追跡できます。

まだ Aparapi を超えている GPU に割り当てることはできません (これには、GC、セーフポイント、deopt 処理のサポートが必要です)。一方、スマトラはOpenJDKプロジェクトであり、提案されたユースケースを処理でき、割り当てを許可します。JVMにフックできるという利点があります;)

于 2014-03-25T19:40:21.623 に答える
0

私は答えを見つけたと思います:

https://github.com/pcpratts/rootbeer1/tree/master/doc [ rootbeer1_paper.pdf ]

またはここ: https://github.com/pcpratts/rootbeer1

于 2014-03-24T16:02:11.520 に答える