多くの低レベル操作をネイティブの matlab コードから C/mex コードに変換し、大幅なスピードアップを実現しています。(これらの低レベルの操作は .m コードでベクトル化できますが、大きなデータの b/c でメモリ ヒットが発生すると思います。) 異なる CFLAGS を使用して mex コードをコンパイルすると、わずかな改善が生じる可能性があることに気付きました。たとえばCFLAGS = -O3 -ffast-math
、軽度の数値の不正確さを犠牲にして、確かにいくつかのスピードアップが得られます。
私の質問: 他の多くの副作用を招くことなく、使用するのに「最適な」CFLAGS は何ですか? 少なくとも、それ
CFLAGS = -O3 -fno-math-errno -fno-unsafe-math-optimizations -fno-trapping-math -fno-signaling-nans
はすべて問題ないようです。についてはわかりません-funroll-loops
。
また、使用される CFLAGS のセットを半自動的に最適化するにはどうすればよいでしょうか。