たとえば、GPU を使用してフィボナッチ数列の最初の 100 万項を計算したいとします。(これは 32 ビット データ型の精度制限を超えることを認識しています - 例として使用しただけです)
40 個のシェーダー/ストリーム プロセッサを備えた GPU と、参考書を使用してごまかすと、100 万個の項を 250,000 ストリップの 40 ブロックに分割し、各シェーダーに 2 つの開始値をシードすることができます。
単位 0: 1,1 (2,3,5,8、何とか何とかを計算)
1号機:25万期
2号機:50万期
...
可能であれば、ピクセルが順番に処理されるようにするにはどうすればよいですか? 入力テクスチャの最初の数ピクセルに値がある場合 (簡単にするために RGBA を使用)
0,0,0,1 // initial condition
0,0,0,1 // initial condition
0,0,0,2
0,0,0,3
0,0,0,5
...
最初の 4 項の準備が整う前に 5 項を計算しないようにするにはどうすればよいですか?
これは複数のパスで実行できることを認識していますが、値が計算されるたびに「準備完了」ビットを設定しますが、それは非常に非効率的であり、GPU でこのタイプの計算を実行する利点が失われます。
OpenCL/CUDA/etc はおそらくこれを行うための優れた方法を提供しますが、私は (私自身の教育のために) これを XNA/HLSL で動作させようとしています。
リンクや例は大歓迎です。
更新/簡素化
あるピクセルの値を使用して隣接するピクセルの値に影響を与えるシェーダーを作成することはできますか?