これは良い質問だと思いますし、自分の研究でも考えていることです。
現時点では、GPUが実行できることに関して強い制限があります。これは、GPUが異なるデータセットでまったく同じコードを実行するために個々のスレッドを必要とするためです。つまり、問題/アルゴリズムは「データ並列」である必要があります。明らかに、データ並列問題には、モンテカルロシミュレーション(多くのMCシミュレーションが並列で実行される)、画像処理、およびあまり明白ではない分子動力学シミュレーションが含まれます。数値積分(モンテカルロまたはその他)は、GPUでの実行に簡単に移植できるもう1つの科学アプリケーションです。
もう1つの主な制限は、スレッドあたりのメモリが非常に制限されていることです。そのため、GPUで効率的に実行するには、アルゴリズムの算術強度が高くなければなりません。アルゴリズムがGPUで実行する候補になるための必要条件は、CPU上で、アルゴリズムがメモリバウンドではなくCPUバウンドである必要があるということです。
私の見解では、時間が経つにつれて、パフォーマンスが大幅に向上するという理由だけで、このパラダイムを使用して解決できるように、ますます多くの問題が解決されるでしょう。私の見解では、大規模なマルチコアプログラミングは、今後10年間でますます重要になり、科学界で普及するでしょう。
私はこれを少し試してみましたが、バックトラッキングの問題を、GPUで実行するための適切な形式に(CUDAを使用して)シューホーンすることができました。参考までに、これについては講演で説明します:http: //lattice.complex.unimelb.edu.au/home/sites/default/files/mydocuments/clisby_cuda0509.pdf