CPU_FLAGS_*

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page CPU FLAGS * and the translation is 100% complete.
Не следует путать с CFLAGS/ru .


CPU_FLAGS_* — это a USE_EXPAND -переменная, содержащая набор инструкций и другие связанные с процессором возможности. На данный момент Gentoo поддерживает CPU_FLAGS_X86 (для архитектур amd64 и x86 ), CPU_FLAGS_ARM (для архитектур arm и arm64 ) и CPU_FLAGS_PPC (для архитектур ppc и ppc64 ).

См. также
Для дополнительной информации см. раздел CPU_FLAGS_* Руководства пользователя Gentoo.

Отличия между CFLAGS и CPU_FLAGS_*

Распространённым вопросом является «Чем отличается CFLAGS и, к примеру, CPU_FLAGS_X86

CPU_FLAGS_* является примером USE_EXPAND -переменной. Он включает определённые параметры в ebuild, которые передаются в систему сборки. Например, CPU_FLAGS_X86_SSE2 , если определён для пакета, включает вручную написанные ассемблерные вставки. Эти параметры включают специфичный код , уже существующий в пакете.

CFLAGS , с другой стороны, просто сообщает компилятору, что ему разрешено попробовать сгенерировать код, использующий по возможности эти инструкции. Это не будет означать, что генерация будет успешной, то есть, -msse2 в CFLAGS не будет означать, что компилятор будет достаточно сообразителен, чтобы сгенерировать SSE2 для определённой функции. Эти параметры просто позволяют компилятору создавать определённый код с определёнными инструкциями .

Поэтому важно настроить CPU_FLAGS_* соответствующим образом, чтобы получить наилучшую производительность пакетов.

Конфигурация

Эти переменные необходимо установить как CPU_FLAGS_X86 ( CPU_FLAGS_ARM , CPU_FLAGS_PPC ) в /etc/portage/package.use/ :

ФАЙЛ /etc/portage/package.use/my-cpu-flags Установка CPU_FLAGS_X86
# Это всего лишь пример, запустите утилиту 'cpuid2cpuflags', чтобы получить соответствующие значение для конкретной системы!
*/* cpu_flags_x86: aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt rdrand sse sse2 sse3 sse4_1 sse4_2 ssse3

Если сомневаетесь, то посмотрите описание флагов с помощью одной из доступных утилит. Например equery uses из пакета app-portage/gentoolkit :

user $ equery uses media-video/ffmpeg

Большинство имён флагов совпадают с именами из /proc/cpuinfo , с отличием что sse3 в /proc/cpuinfo называется pni (также не спутайте с ssse3 ).

Использование cpuid2cpuflags

С помощью app-portage/cpuid2cpuflags пользователи могут определить корректные CPU_FLAGS_ USE_EXPAND переменные для своей процессорной архитектуры.

Установка

root # emerge --ask app-portage/cpuid2cpuflags

Вызов

user $ cpuid2cpuflags
CPU_FLAGS_X86: mmx mmxext sse sse2 sse3

Пример для глобального применения:

root # echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags

Внешние ресурсы