Intel® FPGA SDK for OpenCL™: ベスト・プラクティス・ガイド

ID 683521
日付 12/08/2017
Public
ドキュメント目次

8.4. 算術演算の考慮事項

過剰なFPGAエリアの使用を避けるために、 OpenCL™アプリケーションに適切な算術演算を選択してください。
  1. 必要なときにだけ浮動小数点演算を導入します。
  2. Intel® FPGA SDK for OpenCL™オフライン・コンパイラーは、浮動小数点定数はデータ型を2倍にするようにデフォルト設定されています。 f指定を定数に追加して、単精度浮動小数点演算にします。

    例えば、算術演算sin(1.0)は、倍精度浮動小数点サイン関数を表します。算術演算sin(1.0f)は、単精度浮動小数点正弦関数を表します。

  3. 複雑な関数に対して完全精度の結果を必要としない場合、より簡単な算術演算を計算して結果を近似します。以下のシナリオ例を検討してください。
    1. 関数pow(x、n)を計算する代わりに、 nが小さい値の場合、ハードウェア・リソースと面積が大幅に少なくて済むので、繰り返し二乗演算を実行して結果を近似します。
    2. 近似を使用して結果を計算すると、エリアの使用量が過剰になることがあるため、元のエリアと近似されたエリアの使用を認識していることを確認してください。たとえば、 sqrt関数はリソースを消費しません。大まかな近似以外に、実行時にホストが計算しなければならない算術演算でsqrt関数を置き換えると、エリアの使用量が大きくなる可能性があります。
    3. 少数の入力値で作業する場合、代わりにLUTを使用することを検討してください。

  4. コンパイル時にオフライン・コンパイラーが計算する定数(たとえばlog(PI/2.0) )を使用してカーネルが複雑な算術演算を実行する場合、代わりにホスト上で算術演算を実行し、ランタイムでその結果を引数としてカーネルに渡します。