netch80: (Default)
netch80 ([personal profile] netch80) wrote2012-02-27 09:13 am

open64 и аналоги

Рассматривая бенчмарки компиляторов, неизбежно приходишь к мысли о ценности бинарных сборок: есть возможность каждую функцию собрать именно тем компилятором, который для неё лучше всего, и при этом не лезть самому в ассемблер.

(А этот open64 забавный - у него мозги устроены совсем иначе, чем у gcc и clang.)

[identity profile] r0land.livejournal.com 2012-05-14 03:22 pm (UTC)(link)
Жаль у них Visual Studio неприводится. Мы сравнивали обработку изображений собранную с помощью gcc и vs (алгоритмы SIFT, SURF, сегментация по графам, градиенты, преобразование Хафа и так далее). В случае включения sse оптимизаций vs выигрывает всредем в два раза. Sad but true.

[identity profile] netch80.livejournal.com 2012-05-14 03:49 pm (UTC)(link)
Как это выглядело на уровне кода? И какие версии обоих?

[identity profile] r0land.livejournal.com 2012-05-14 04:22 pm (UTC)(link)
gcc 4.4.3, ubuntu-10.4 (кажется).
vs2008sp1, win_xp 32.
Код идентичный.

Организация (если не изменяят склероз) следующая:
Поток А кладет в буфер кадры с веб-камеры на 30fps 320x240 или 15fps 640x480.
Поток Б выдергивет из буфера последний кадр и грохает все в буфере (если там больше одного кадра). Проводит вычисления, формирует в статических масивах красивки для пользователя. Отрисовывает красивки пользователю.

Время замерялось исключительно в потоке Б. Исключительно потраченное на вычисления (без отрисовки, гроховолова скпнутых кадров и лока мьютексов).
Как оболочка GUI - Qt. Перед мат алгоритмами - преобразование QImage в RGB24 или в 8-bit greyscale буфер без выравнивания строк по 2^n байтам (считай pragma pack 1).

ключики gcc (после перебора всевозможных вариантов) :
-ffast-math \
-march=pentium4 \
-mfpmath=sse \
-O3 \
-fno-strict-aliasing \
-msse \
-msse2 \
-msse3 \
-fomit-frame-pointer \
-foptimize-register-move \
-funroll-loops \
-ffinite-math-only

ключики vs, типа,: //Ob1 //Oi //Ot //GT //GL //EHsc //GS- //arch:SSE2 //fp:fast

Время отработки считалось с помощью http://qt-project.org/doc/qt-4.8/qtime.html

Алгоритм, например, непосредстевенно этот http://www.cs.brown.edu/~pff/segment/

Компутер один и тотже.

[identity profile] r0land.livejournal.com 2012-05-15 11:59 am (UTC)(link)
посмотри, я тебе ответил. почему-то ответ в спам упал

[identity profile] netch80.livejournal.com 2012-05-15 12:38 pm (UTC)(link)
fixed