Сен 05 2010

ICC

Published by

ICC — это компилятор от Intel и , пожалуй, самый популярный «альтернативный» компилятор под linux.

Его использование даёт прирост производительности некоторых программ: наибольший профит на архиваторах и мультимедии(кодеки).

Так же профит зависит и от архитектуры — наибольший на 32-х битной(у меня на bzip2 >30%),

хотя на 64-х битной больше вероятность того, что пакет соберётся и будет работать(например p7zip).

Им крайне не рекомендуется собирать такие пакеты как zlib, glibc, ncurses и т.д., т.к. в случае если пакет соберётся неправильно, можно получить неработающую систему.

И т.к. им получается собрать далеко не всё, приведу пример использования его только как дополнительного компилятора в Gentoo.

Установка

устанавливаем:

emerge icc

потом идём сюда ,  регистрируемся — ждём на мыло *.lic файл, который кладём в  /opt/intel/licenses/

Настройка portage

В make.conf определяем 2 переменные для флагов icc:

ICCCFLAGS="-O3 -fomit-frame-pointer -xSSE4.1 -g0 -w -gcc"
ICCCXXFLAGS="${ICCCFLAGS}"
В /etc/portage/bashrc записываем следующее:
if [ -f /etc/portage/package.icc ]; then
[ -r ${ROOT}/etc/portage/package.icc ] || return 0
while read -a target; do
if [ "${target}" = "${CATEGORY}/${PN}" ]; then
export OCC="icc"
export OCXX="icpc"
export CFLAGS="${ICCCFLAGS}"
export CXXFLAGS="${ICCCXXFLAGS}"
if [ -r ${ROOT}/etc/portage/package.icc-cflags ]; then
while read target flags; do
if [ "${target}" = "${CATEGORY}/${PN}" ]; then
export CFLAGS="$flags"
export CXXFLAGS="$flags"
break
fi
done < ${ROOT}/etc/portage/package.icc-cflags
fi
export CC_FOR_BUILD="${OCC}"
return 0
fi
done < ${ROOT}/etc/portage/package.icc
fi

post_src_configure() {
echo -e "\n \n \n \n \n \033[0;0;0;32mCFLAGS=\"$(echo $CFLAGS)\"\033[0m for \033[0;0;0;32m"${CATEGORY}/${PN}"\033[0m \n \n \n \n \n"
}

в файле /etc/portage/package.icc записываем пакеты, которые хотим собирать с icc в виде

категория/имя_пакета(в конце файла обязательна чистая строка):

app-arch/tar
app-arch/bzip2
app-arch/unzip
app-arch/cpio
app-arch/pbzip2
dev-libs/libxml2
media-sound/lame
media-libs/faac
media-libs/giflib
media-libs/speex
media-libs/libtheora
media-libs/xvid
media-libs/libogg
media-libs/libvorbis
dev-libs/lzo
media-libs/libpng
dev-libs/libgpg-error
если хотим использовать для пакета флаги не из /etc/make.conf, то создаём файл /etc/portage/package.icc-cflags с содержимым вида
категория/имя_пакета флаги:
app-arch/bzip2 -O3 -gcc -xSSE4.1 -g0
Флаги и прочее

man /opt/intel/Compiler/версия/ревизия/man/en_US/ptimization-level
man /opt/intel/Compiler/версия/ревизия/man/en_US/man1/*
и в /opt/intel/Compiler/версия/ревизия/Documentation/
Так же можете даже не пытаться собрать с ним ядро.
(есть проект, содержащий патчи для сборки с ним - http://www.linuxdna.com/, но в этом ядре страдает стабильность)

Предупреждение

если решите удалять icc, то пересоберите весь собранный им софт с gcc!

2 responses so far

2 Responses to “ICC”

  1. Евгенийon 19 Янв 2013 at 22:20

    если решите удалять icc, то пересоберите весь собранный им софт с gcc!

    Почему ?

  2. megabakson 19 Янв 2013 at 23:41

    Потому что этот софт использует библиотеки icc, которые будут удалены вместе с ним.
    Т.е. такой софт перестанет работать

Trackback URI | Comments RSS

Leave a Reply


*

Powered by WordPress