を呼び出すとき:パフォーマンスペナルティ私は次のような++ CUDAカーネル呼び出しを実行するオーバーヘッドは、C/Cであるものを思ったんだけど、CUDAカーネル
somekernel1<<<blocks,threads>>>(args);
somekernel2<<<blocks,threads>>>(args);
somekernel3<<<blocks,threads>>>(args);
ので、私はこれを求めていた理由があります私がビルドしているアプリケーションは現在、いくつかのカーネルに繰り返し呼び出しを行います(メモリ間の再読み込みや呼び出しの間にデバイスに書き込まれることはありません)、これらのカーネル呼び出しを単一のカーネル呼び出し(somekernel1-3がデバイス機能になる)パフォーマンスに意味のある違いがあります。
スイス軍ナイフのアプローチは、これらのカーネルをプロジェクト間で共有することを避けようとしています。応答してくれてありがとう、私はちょうど私が複数のcuda呼び出しを行うときに気づいていなかったいくつかの狂気のパフォーマンスの問題はなかったことを確認したいと思った。 – NothingMore
メモ:WDDMでは、Tesla GPUを使用している場合は、Tesla Compute Cluster(TCC)ドライバを使用して、XPやLinuxなどのWDDM以外のプラットフォームでパフォーマンスを向上させることができます。元の質問には、カーネルを組み合わせることで必要なPCIエクスプレスの転送を減らすことができれば、それが価値があるかもしれないことを強調したいと思います。そうでない場合は、Kernel1の計算とKernel2などのデータのGPUへの転送が重複していることを確認してください。 – harrism
talonmies Windows以外のプラットフォームについて教えてください。 winXP?私はWDDMのペナルティが大変なので非常に興味があり、私はLinuxには参加できません。 Win7 x64を酷く使用し、x64プラットフォームが必要(RAMの問題) – Dredok