LINUX.ORG.RU

Оптимизации циклов в gcc

 , ,


0

2

Сабж. Лабораторная работа в универе - реализовать сложение двух массивов с использованием mmx и на чистом си без оптимизаций для сравнения быстродействия. Код в общем-то очевидный, приводить смысла нет, но вот в чем проблема - препод сказал проверять в дебаге, потому что вижак оптимизирует циклы. Проверил, действительно, цикл сложения оптимизирован в sse. Как заставить gcc оптимизировать код так же? Пробовал

-mmmx -O99 -march=native -msse4 -msse4.1 -msse4.2 -msse4a -mfpmath=sse -msse -msse2 -msse3 -m3dnow
Не помогло.

Ответ на: комментарий от AIv

Some users boast about even better performance obtained by using -O4, -O9, and so on, but the reality is that -O levels higher than 3 have no effect. The compiler may accept CFLAGS like -O4, but it actually doesn't do anything with them. It only performs the optimizations for -O3, nothing more.

Поставил -O99, для гарантии.

Spectator ()

Код в общем-то очевидный

нет. Не очевидный. Возможны варианты, и никому тут непонятно, какой вы выбрали. Хотя-бы размер данных скажите. MSVC что, сразу 8 байт за раз складывает, а потом по памяти распихивает? Что хоть значит «сложение массивов» по вашему?

drBatty ★★ ()
Ответ на: комментарий от Spectator

Поставил -O99, для гарантии.

А что не 9999? Сказано-же, больше 3х не работает.

drBatty ★★ ()
Ответ на: комментарий от devl547

Спасибо. Вижу изменения, не понимаю, что он сделал, но главное что сделал.

Spectator ()
Ответ на: комментарий от buddhist

делите на ноль

А так?

реализовать ...
1) с использованием mmx и
2) на чистом си без оптимизаций
для сравнения быстродействия (1) и (2).

Репарсер, недорого ;)

bormant ★★★★★ ()
Ответ на: комментарий от bormant

Да, что-то во втором часу ночи плохо распарсил :)

buddhist ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.