2011-05-09 7 views
2

GPU実装では、GLOPSの性能を見積もる必要があります。このコードは非常に基本的ですが、私の問題は、1つ以上の演算子である "sqrt"または "mad"演算に何個のFLOPSを渡すべきかということです。パフォーマンスとグローバルな効率を測定するためにGPUのsqrtに割り当てられたFLOPS

さらに、このGPUの理論上の最大値は500GFLOPSですが、これらの操作では1 FLOPと言うと、私のコードでは50GFLOPSが得られます。私がそれをプレセントで表現すると、私は10%を得る。スピードアップの面で私は100回取得します。だから私はそれが素晴らしいと思うが、10%は少し低い収量のようだが、どう思いますか?

ありがとうございました

答えて

1

正しい答えはおそらく "それに依存します"。

異なるプラットフォームで実行されるコード間のパフォーマンスを比較するには、通常、1つの操作として超越、sqrt、madsを数えます。そのような状況では、コードの実行に要する時間はキーパフォーマンスメトリックです。それ以外の方法で比較するのはほとんど不可能です。たとえば、ハードウェア命令の "FLOP"カウントと25サイクルの引越しを比較すると、fmad命令の計算ライブラリ完了するためのサイクル?そのような場合には、カウント命令またはFLOPが無意味になり、どちらも見かけのFLOPカウントが異なるにもかかわらず、同じ量のクロックサイクルで所望の動作を実行する。

一方、特定のハードウェアでのコードのプロファイリングとパフォーマンスチューニングでは、FLOP数が有用なメトリックになる可能性があります。 GPUでは、FLOPまたはIOPのカウントとメモリ帯域幅の使用率を調べて、特定のコードのパフォーマンスボトルネックがどこにあるかを判断するのが普通です。これらの数値を持つことで、有用な最適化の方向性が示されます。