フレームワークrootbeerを使用すると、Java の GPU プログラミングが可能になります。
rootbeer にはどの Java コードを使用する必要があり、Java VM 自体で実行するのに適しているのはどのコードですか?
またはその他: より多くのオーバーヘッドを生成し、意味をなさないコードはどれですか?
他の回答に加えて、rootbeer jet による変換がサポートされていない Java 機能もいくつかあります。
これらの機能を使用するコードは避ける必要があります。
Rootbeer の更新は、ガベージ コレクションやその他の欠落している Java 機能を提供するために実稼働中です。
ちょっとばかげた言い方ですが、「GPU が CPU よりも優れている問題に対して」というのが明白な答えです。最近の GPU は 1,000 個を超えるコアを備えていますが、メモリは比較的少ないため、一般的に、これは並列化に適し、メモリをあまり消費しないものを意味します。
G. Bach はコメントで仮想通貨に対するブルート フォース攻撃について言及しましたが、これは良い例です。科学シミュレーションも良い例です。実際、数年前、いくつかの研究機関 (特に NASA) がプレイステーション 3 の実行中のシミュレーションのクラスターを持っていました。ウィキペディアの GPGPU コンピューティングに関する記事には、この技術のいくつかのアプリケーションがリストされています。
GPU で高速化するには、データ転送が非常に遅いため、データ要素ごとに多くの計算を行う必要があります。通常、少なくとも 1000 スレッドの GPU で実行される 2 つまたは 3 つのネストされた for ループが必要です。
現在のGPUの制限の1つは、すべてのコアに1つの単純なメソッドをロードして、一度に実行できることです。汎用CPUは、より多くのコードとデータをロードして、それらを独立して実行できます。
GPUでより高速になる可能性のあるベクトルスタイルのコードがあり、それがいつの日かオプションであることがわかりますが、ほとんどのコード(処理能力ではない場合はボリュームで)はCPUにあります。