私は CUDA を学び始めており、円周率の長い数字を計算することは、素晴らしい入門プロジェクトになると思います。
簡単に並列化できる単純なモンテカルロ法を既に実装しています。各スレッドに単位正方形上でランダムに点を生成させ、単位円内にいくつあるかを計算し、リダクション操作を使用して結果を集計するだけです。
しかし、それは確かに定数を計算するための最速のアルゴリズムではありません。以前、シングル スレッドの CPU でこの演習を行ったとき、Machin のような数式を使用して計算を行い、収束を大幅に高速化しました。興味のある人のために、これには逆正接の和として pi を表現し、式を評価するためにテイラー級数を使用することが含まれます。
そのような式の例:
残念ながら、この手法を何千もの GPU スレッドに並列化するのは簡単ではないことがわかりました。問題は、データの長いベクトルに対して浮動小数点演算を行うのではなく、大部分の演算が単純に高精度の計算を行うことです。
GPUで任意の長い円周率を計算する最も効率的な方法は何ですか?