2

私は現在、大量の変数を保存して処理する必要があるアプリケーションに取り組んでいます(floatで最大4GB)

個々の変数の精度はそれほど重要ではないので(それらが制限されることはわかっています)、floatの代わりにOpenCLの半分を使用できることがわかりました。これにより、メモリの量が実際に減少するからです。

私の質問は2つあります。

  • floatの代わりにhalfを使用することでパフォーマンスが低下することはありますか(float操作用に構築されているグラフィックカードをイメージします)

  • 計算でフロートとハーフを混合することでパフォーマンスが低下しますか?(つまり、フロートの半分を掛けます。)

よろしくお願いいたします。AndreasFalkenstrømMieritz

4

2 に答える 2

4

ARM CPUとGPUはhalfALUでネイティブサポートを備えているため、2倍の速度に近づき、さらにエネルギー消費を大幅に節約できます。編集:同じことがPowerVRGPUにも当てはまります。

デスクトップハードウェアhalfは、ロード/ストアおよびテクスチャリングユニット、AFAIKでのみサポートされます。それでも、GPUのテクスチャやバッファよりもテクスチャhalfのパフォーマンスが優れていると思います。float特に、テクスチャフィルタリングを巧妙に利用できる場合。

于 2012-10-17T13:21:21.273 に答える
2

OpenCLカーネルは、ほとんどの場合、メモリ速度またはpci速度に制限されています。データのまともなチャンクをハーフフロートに変換する場合、これにより値のより高速な転送が可能になります。どのプラットフォーム/デバイスでもほぼ確実に高速です。

パフォーマンスに関しては、半分がフロートより悪くなることはめったにありません。半分をサポートするデバイスは、floatの場合と同じくらい高速に計算を実行できると確信しています。繰り返しになりますが、ここにわずかなオーバーヘッドがある場合でも、はるかに優れた転送時間でそれを補う以上のことができます。

于 2012-11-13T20:16:43.050 に答える