私が書いている C++ の CPU バウンド シミュレーションでは、プログラム内の valgrind を介してボトルネックを追跡しましたcmath::exp
。現在、シミュレーション時間の 40% 以上を消費しています。入力を比較的小さな領域に限定することはできますが、精度を制御したいと考えています。LUT(ルックアップテーブル)に移行して置き換えることを検討してexp
いましたが、これを「正しい方法」(tm)で行う方法がよくわかりません。私が持っている懸念:
- 大きなルックアップ テーブルはキャッシュに収まらないため、アクセスが遅くなります
- ルックアップ テーブルにアクセスするために倍精度入力を整数に変換する最良の方法
- (2)の答えは入力関数の傾きに依存しますか?
- 車輪の再発明ですか - これは以前に行われたことがありますか?
のLUTを実装/(ライブラリからインクルード)する最良の方法は何exp
ですか?