On Fri, 13 Jun 2003, Yury Yurevich wrote: > Доброго времени суток! > Было дело, что 12 Июн 2003 в 12:07 > Yuri Nefedov писал(а): > > > По своему опыту работы с "научными программами" могу сказать, > > что опции компилятора вообще, а опции относящиеся к процессору > > в особенности, ничего не меняют (+/- 5% не в счет). > > Могу поспорить, поскольку для P4 для win-компилятора (vc6 vs. icc) > включение оптимизации дает прирост в 2-5 раз (!!), а для AthlonXP: ~1.5 > раза. В vc6 оптимизация под pentium и под скорость. Для IntelC > последовательно включались SSE1/2 (для атлона, соответственно, только > SSE1). > > Хотелось попробовать, какие скорости будет показывать gcc ;)) Может ли > включение флагов MMX/SSE/3DNow (AFAIK, появилились в gcc-3.2) на lin > аналогично увеличить скорость? > > И вопрос: если я поставлю оптимизацию под атлон (march, mcpu, 3dnow, > etc), то значит ли это, что откомпиленная прога не запуститься на p4? > Кстати, и есть ли разница в скорости выполнения проги при компиляции > share/static? > > P.S. Мерялось не на бенчмарках, а на "живых" приложениях ( а) Расчет > инерционных и фрикционных коэффициентов для уравнений Ланжевена в > трехмерной модели; б) расчет функционалов потенциальной энергии в модели > жидкой капли с диффузным краем в трехмерном случае [расчет небольшого > количества точек, ~2% от 396526]) ; влияние дисковой подсистемы > нивелировалось (измерения шли не со времени запуска программы, а со > времени подгрузки всех данных с винта); измерения производились > секундомером. > > P.P.S. Не малую роль играет фортран; за неимением intel fortran compiler > ;)) измерения не проводились. А правда, что g77 имеет такие же флаги > оптимизации, как и g++? > > -- > Best regards, Yury Yurevich > >
Доброе утро, Yuri. Ну возможно я и "несколько преувеличил" :). Однако, надо помнить, что использование SSE1 и 3Dnow ускоряет только single-precision операции, (давненько мне такие программы не попадались). У 3Dnow есть еще неприятная особенность, что оно не придерживается стандартов IEEE для чисел с плавающей точкой. Как я помню, например, при делении на ноль не будет nan образовываться. То есть пользоваться конечно можно, но в 100% работающих программах. SSE2 - несколько лучше, но имеется оно только у P4, у которого FPU довольно слабый, мягко говоря. Честно говоря сам на них никогда не работал, не знаю. Очень руки чешутся попробовать athlon64, как там с fp дела обстоят. С переносимостью проблема. Как я понимаю, собрав с 3Dnow на P4 уже не запустишь, и т.д. Для g77 я обычно ставлю -O -funroll-loops -mcpu=i686 -malign-double Какие-то опции общие с g++, какие-то нет. В общем info g77 Успехов, Юра.