@ Карта сайта News Автора!

Bog BOS: Компилятор gcc: установка и использование

Последние изменения:
2008.03.18: sysadmin: перенос сервера bind внутрь DMZ (2 канала, виды, slave)
2008.03.05: sysadmin: autofs (автоматическое монтирование файловых систем)
2008.03.04: sysadmin: am-utils или amd (автоматическое монтирование файловых систем)

Последнее изменение файла: 2007.02.08
Скопировано с www.bog.pp.ru: 2008.04.21

Bog BOS: Компилятор gcc: установка и использование

GCC (Gnu Compilers Collection) позволяет компилировать программы на C (C89), C++ (G++), Objective-C, Ada (GNAT), Fortran, Java (gcj). Имеется не до конца интегрированный препроцессор с Pascal.

Версии GCC

Версии языка C

GCC поддерживает следующие версии C (по умолчанию C89 с расширениями: -std=gnu89):

Установка

Сборка gcc 3.2.2 (только C) из gcc-core-3.2.2.tar.bz2 и binutils-2.13.2.tar.bz2:

  1. распаковать gcc-3.2.2 (gcc-core-3.2.2) в /worktable
  2. распаковать binutils-2.13.2; поддиректории bfd, binutils, etc, gas, gprof, intl, ld, opcodes, texinfo перенести в gcc-3.2.2; поддиректории include и libiberty в binutils новее, чем в gcc, так что надо добавить или заменить их, но аккуратно
  3. создать /worktable/gcc-3.2.2-objdir
  4. cd /worktable/gcc-3.2.2-objdir
  5. /worktable/gcc-3.2.2/configure --program-suffix=-3.2.2 --disable-nls
  6. make bootstrap (230 MB)
  7. make install

А вот поставить gcc-3.3 и binutils-2.13.2.1 на RH 7.2 не удалось.

Некоторые ключи компиляции

Для компиляции под Intel x86_64 необходимо указывать ключи: -m64 -march=nocona.

Оптимизация

Условия измерения: процессор - P4 24x100 MHz; память разогнана; алгоритм - сжимается без потерь 40000 кадров видео (jpeg-ls, T1=3, T2=7, T3=21, RESET=40, Total bytes out: 5002245509 Symbols in: 21903907584 1.827 bps, 4.379 : 1); алгоритм оптимизировался вручную несколькими поколениями разработчиков; размер обрабатываемого файла - ~10 ГБ, так что кеширование файлов невозможно; ввод с диска не является "узким местом", т.к. исходный материал также сжат. Программа не использует плавающую точку, поэтому соответствующие ключи оптимизации не расматривались.

Первым шагом в оптимизации (после того как руками было сделано максимум возможного) является переход на новую версию компилятора (или другой компилятор ;). Например, переход с gcc 3.0 на 3.2 ускорил работу на 5%.

По умолчанию gcc 3.2.2 компилирует со следующими ключами, имеющими отношение к оптимизации (их список можно получить при компиляции с ключами: -S -fverbose-asm), что дает 13007 KSymbols/sec:

Ключ -march=pentium4 уменьшил скорость.

Ключ -O добавляет оптимизацию (с ключом -fno-guess-branch-probability, 18576 KSymbols/sec):

Ключ -O2 добавляет оптимизацию (с ключом -fno-guess-branch-probability, 19047 KSymbols/sec):

Ключ -O3 (больше в этой версии не бывает!) добавляет оптимизацию (с ключом -fno-guess-branch-probability, 19442 KSymbols/sec):

Дополнительные ключи оптимизации:

Уменьшение размера рабочего массива на 100 КБ, чтобы освободить место в кеше (специально зарезервировал поначалу с избытком, чтобы было что уменьшать ;) не дало результата в отличие от Pentium III с его маленьким кешем.

Для использования статистики предсказания переходов необходимо предварительно скомпилировать программу с ключом -fprofile-arcs, затем выполнить программу для сбора статистики вероятностей переходов (результаты помещаются в файлы с суффиксами .da в исходной директории, бинарный формат). Затем надо заново скомпилировать с программу с теми же самыми ключами компиляции, только заменив ключ -fprofile-arcs на -fbranch-probabilities. Следует заметить, что оптимальный результат (22937 KSymbols/sec) будет достигаться только при выполнении программы с теми же самыми ключами и с теми же исходными данными. На Pentium III выигрыш был больше.

MMX, SSE, SSE2, 3DNOW!

Встроенные векторные команды (MMX, SSE, SSE2, 3DNOW!):

Ссылки

@ Карта сайта News Автора!

Bog BOS: Компилятор gcc: установка и использование

Последние изменения:
2008.03.18: sysadmin: перенос сервера bind внутрь DMZ (2 канала, виды, slave)
2008.03.05: sysadmin: autofs (автоматическое монтирование файловых систем)
2008.03.04: sysadmin: am-utils или amd (автоматическое монтирование файловых систем)

TopList
Copyright © 1996-2008 Sergey E. Bogomolov; www.bog.pp.ru (КГБ знает все, даже то что у Вас на диске ;)
Hosted by uCoz