0

頻繁な補間を必要とするいくつかのタスクを実行する、既に並列化された CUDA カーネルがあります。

だからカーネルがあります

__global__ void complexStuff(...)

この補間デバイス関数を 1 回以上呼び出します。

__device__ void interpolate(...)

内挿アルゴリズムは、3 次元にわたって連続して WENO 内挿を行います。これは非常に並列化可能なタスクであり、早急に並列化したいと考えています!

構文complexStuff()を使用してホスト コードからカーネルを呼び出すことで、カーネルを簡単に並列化できることは明らかです。がすでに並列化<<<...>>>されていることも重要です。complexStuff()

しかし、何かを並列化する方法/CUDAデバイス関数内から新しいスレッドを作成する方法は明確ではありません...これは可能ですか? 誰か知っていますか?

4

1 に答える 1

2

別の CUDA カーネル内から CUDA カーネルを呼び出すために、動的並列処理 (いくつかのリソースここここ、およびここ) を検討することをお勧めします。デバイスのコンピューティング機能が 3.5 以上である必要があります。パフォーマンスを低下させる可能性のある多くの制限と制限があります (3 番目のリンクに記載)。
私の提案は、最初complexStuff(...)に作業量に作業量を掛けて CUDA カーネルを呼び出すことを検討することinterpolate(...)です。言い換えれば、実行する必要がある最大の並列細粒度ジョブを静的に推測します。次に、これらのきめの細かいジョブを実行するようにカーネルを構成しますブロックスレッドで。プログラムコードを知らなくても、これは単なる憶測であることに注意してください。

于 2014-01-29T18:05:24.577 に答える