Я преобразую ряд низкоуровневых операций из собственного кода matlab в код C / mex с большим ускорением. (Эти низкоуровневые операции могут быть выполнены векторизовано в коде .m, но я думаю, что я получаю хиты памяти b / c больших данных. Что угодно.) Я заметил, что компиляция mex-кода с различными CFLAGS может привести к незначительным улучшениям. Например, CFLAGS = -O3 -ffast-math
действительно дает некоторые ускорения за счет легкой числовой неточности.
Мой вопрос: какие "лучшие" CFLAGS использовать, не вызывая слишком много других побочных эффектов? Кажется, что, по крайней мере,
CFLAGS = -O3 -fno-math-errno -fno-unsafe-math-optimizations -fno-trapping-math -fno-signaling-nans
все в порядке. Я не уверен насчет -funroll-loops
.
также, как бы вы оптимизировали набор используемых CFLAGS, полуавтоматически, не сходя с ума?