現在静的な大きな数値で計算するため、BigIntegerを使用するプロジェクトがあります。しかし、明らかに私のアプリケーションは本当に遅いです。BigIntegerで計算するためにJavaを使用するGPU
私はGPUについて分かりませんが、もっと速く大きな数値を計算するのに使うことができると聞きました。だから私は、GPUに "重い数値の計算"を与えて、このようにアプリケーションを高速化する方法があるのだろうかと思います。
現在静的な大きな数値で計算するため、BigIntegerを使用するプロジェクトがあります。しかし、明らかに私のアプリケーションは本当に遅いです。BigIntegerで計算するためにJavaを使用するGPU
私はGPUについて分かりませんが、もっと速く大きな数値を計算するのに使うことができると聞きました。だから私は、GPUに "重い数値の計算"を与えて、このようにアプリケーションを高速化する方法があるのだろうかと思います。
あなたは、このLIBが提供する@Parallel注釈を確認することができます。 https://code.google.com/archive/p/java-gpu/
Javaの経験のない人は、ページの説明がちょっと複雑に思えます。しかし、私は間違いなくそれを見ていきます。ありがとうございました – TheEquah
Java binding for OpenCLがあります。これは非グラフィックGPU計算を行うための標準APIです。お使いのコンピュータがOpenCLをサポートしていない場合は、OpenGLを使用してフラグメントシェーダで計算を行うこともできますが、これは少し面倒です。
OpenCLのCやOpenGLのシェーディング言語では、特殊な言語で計算を書き直す必要があります。 GPUはJavaバイトコードを理解していないため、JavaコードをGPUにオフロードできません。 OpenCLまたはOpenGLにはBigInteger
に相当するビルトインはありません。 多くの異なるデータ項目に同時に同じコードを実行している:
は、GPUには、ワークロードの特定の種類のために設計されていることに注意してください。 GPUは魔法のように数学をより速くするわけではありません。 OpenCL/OpenGLを使用すると、計算が複数の並列タスクに分割され、すべて同じコードが同時に実行される場合に役立ちます。
これは簡単なトピックではありません。また、Javaは必要な言語ではないかもしれません。そうでなければJNIを使用することを検討してください。 – Enzokie
「実際には大きな数字を計算する必要があります。私はGPUを使用します」と言うだけでは簡単ではありません。それは信じられないほど複雑で、あなたの手の届かないところで聞こえます。私はあなたのコードにできる最適化を全て使い果たしているとは思えません。あなたは何かをプロファイリングしたか測定しましたか? – Michael
@Michaelええ、私はちょうどそれが私が期待したよりも複雑に割り当てられていることに気付きました^^。私はshure私は特に私がプログラムを実行中にCPU使用量を見てコード側で割り当てることができます(ただ一つのコアがheavely使用されている)私はまた、メモリの速度によって影響を受ける可能性があると思う)。そしてあなたは_profiledまたはmeasured_をお伝えしました - スピードの低下の原因を見つけるために私ができることを具体的なヒントを持っていますか? – TheEquah