GFTへのFFTの送信が計算上価値がある場合の良いヒューリスティックポイント?


7

これはかなり単純な質問ですが、GPUとCPUでFFTを計算するための良い経験則に関して、過去5年ほどの間に投稿されたものはあまりありません。GPUで計算されたFFTのオーバーヘッドのほとんどは、変換を計算するために、最初にデータをバッファーに書き込んでから、そのデータをCPUからGPUに送信する必要があることです。

これは当然、FPUのGPU計算は、GPUが実行する計算の数と比較してGPUへの書き込みの数が比較的少ない、より大きなFFT計算により適していることを意味します。しかし、問題は、FFTがCPUとGPUでどちらのパフォーマンスが優れているかを知ることになります。私が見つけた最高のものは「より大きなFFTを計算しているとき」という行ですが、特にGPUテクノロジーがここ数年で非常に急速に加速していることを考えると、実務家にとって特に意味のあるガイドラインになるのは少し相対論的です。

私は、GPUとCPUの変換を計算することがどの時点で効率的になるかについてのより具体的な見積もりを探しています(おそらくどこかにベンチマークがありますか?)。あなたが提供できるあらゆる助けを事前に感謝します。

回答:


10

経験則はないと思います!

その理由は、主に、検討しているシステムと解決しようとしている問題の両方が非常に広い範囲にわたって変化するため、さまざまです。

問題ベースの側面

FFTを実行したいとおっしゃっていますが、それは常に実際に実行したいことの半分です。

FFTをabs²に変換し、カラーにマッピングして、画面に表示する必要がありますか?GPUでそれを実行してください。fosphorは、対応するPC / GPUの組み合わせで簡単な200MS / sでそれを行います。

蛍光体

その場合、FFTのサイズは重要ではありません。データはGPUでさらに処理されるため、そこでFFTを実行します。

一方、FFTの個々の要素の多くのチェックに依存する何かをCPUで実行したい場合がありますか?おそらく1つのFFTだけで、それ以上はありませんか?

その場合、理論上のスループットはまったく役に立ちません。データがCPUキャッシュから取り出されてコヒーレントメモリに戻るのを待つだけで、GPUにDMAで転送され、FFTが開始されます(途中で割り込み/コンテキストスイッチが無駄になる可能性があります)。完了するまで待つと、GPUがデータをメインメモリにDMA転送し、CPUのキャッシュにデータを取り込みました。中規模のFFTの場合でも料金はかかりません。

したがって、この「高レイテンシの数学アクセラレータビジネス」全体が実際に報われるのは、待つ間に賢明なことができる場合だけです。できない場合は、レイテンシが大幅に低下します。

システムベースの側面

ここではあまり詳しく説明しませんが、

  • DSPシステムは、CPUまたはメモリ帯域幅が制限されています
  • GPU操作がCPU制限に役立つが、メモリインターフェースに追加のデータ移動負荷がかかるが、実際にはシステムの残りの部分はメモリ帯域幅が制限されている場合、あなたは自分自身を傷つけています。
  • 同じことが他の方法にも当てはまります。たぶん、アルゴリズム(特定のサイズでのFFT)はCPUに制限がありますが、GPUアクセラレーションは追加の割り込みを引き起こします
  • CPUが非常にうまく実行できるFFTサイズとは何ですか?これはおそらく、L1キャッシュとL2キャッシュのサイズによって定義されます。Xeonの数値処理CPUには数十メガバイトありますが、Jetson NVidia SoCで実行されているARMにはありません。
  • グラフィックカードが得意なFFTサイズはどれくらいですか?カード間での並列スレッドの数、柔軟性、およびメモリ帯域幅には大きな違いがあります。
  • 「良い」という指標は何ですか?スループットとレイテンシの奇妙な比率だけでなく、おそらくエネルギーもあり、適切な種類のリソースを他の作業のために無料のままにしますか?
  • CPU <->メインメモリインターフェイスは何ですか?2GHz近くで動作するクアッドチャネルDDR4インターフェイスですか、それともシングルチャネルDDRですか?
  • GPU <-> GPUメモリインターフェイスとは何ですか?
  • GPU <->メインメモリインターフェイスは何ですか?
  • CPU <-> GPU通信は、特定のユースケースでどの程度うまく機能しますか?
  • たとえば、同じPCIeスイッチが高速システムに出入りするデータのフローを処理する必要があるため、たとえば、PCIeバスに高い負荷がありますか(たとえば、ストレージですが、10ギガビットイーサネットまたはビデオデータ) ?

したがって、答えはおそらく満足できるものではありませんが、実際には次のとおりです。

単精度FFTの場合、64ビンより上のどこか、2 20ビンより下のどこか。場合によります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.