LINUX.ORG.RU
ФорумTalks

В новой версии glibc 2.27 ускорили математику на x86_64, но и частично поломали обратную совместимость

 ,


1

1

Сабж. Релиз таки состоялся.

  • asin(), atan2(), exp(), expf(), log(), pow(), atan(), sin(), cosf(), sinf(), sincosf() и tan() ускорили для x86_64 через FMA Arjan van de Ven и H.J. Lu из Intel'а;
  • trunc() и truncf() теперь для x86_64 оптимизированы через SSE4.1;
  • expf(), exp2f(), logf(), log2f(), powf(), sinf(), cosf() и sincosf() теперь просто оптимизированы;
  • pow10(), pow10f() и pow10l() теперь всё. Вместо них теперь нужно использовать exp10(), exp10f() и exp10l();
  • Также появились новые функции memfd_create(), mlock2() и copy_file_range();

Полный changelog: https://fossies.org/linux/glibc/NEWS
Скачать: ftp://ftp.gnu.org/gnu/glibc/glibc-2.27.tar.xz

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

на сколько?

Результаты сравнений пока ещё не гуглятся.

abi или api?

Можно сказать, и то, и другое. Новый формат локалей, который теперь не будут понимать статически слинкованные с прежними версиями glibc'а бинарники.

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

Юзать glibc 2.26.

Современное инструментальное ПО во всей красе.

Как в известной шутке: «Чем выше забор ...»

pacify ★★★★★
()

частично поломали обратную совместимость

Палец Линуса стремительно устремляется в анальное отверстие Дреппера

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

Если бинарник содержит инструкции, которых нет в процессоре, то он выпадает в осадок с «illegal instruction». Это же справедливо и для библиотек. Я так на armv6 не мог запускать GTK'шный софт, поскольку библиотека GTK была оптимизирована под armv7. И, соответственно, любой GTK софт выпадал в осадок с «illegal instruction».

А то, что теперь в бинарных дистрибутивах будут собирать glibc с использованием инструкций SSE4.1, - это и так понятно. Остаются, конечно, source-based дистрибутивы, да и возможность самому пересобрать пакет бинарного дистрибутива с нужными опциями компилятора. Но, из коробки оптимизированные под SSE4.1 библиотеки на проце без этих инструкций будут вызывать «illegal instructions».

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 2)
Ответ на: комментарий от saahriktu

Ты всё перепутал. Armv6 и v7 - разные архитектуры, а наличие sse4.1 он в состоянии проверить при запуске.

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

ничего не делать. либц в рантайме определяет проц и использует правильные реализации.

Это если вызовы trunc не «заинлайнены». Этого мне удалось добиться только при -O0.

Впрочем, если код не был собран на ЭВМ с SSE4 с опциями типа -march=native, то беспокоиться не о чем.

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

Если бинарник содержит инструкции, которых нет в процессоре, то он выпадает в осадок с «illegal instruction».

Недавно напоролся в культях из родного репозитория, попеременно с сегфолтами. Что-то там пошло не так при завершении приложения с несколькими тредами. Не стал разбираться, переписал иначе. Странно что собрано с какими-то инструкция которых у меня нет, вроде интель же.

deep-purple ★★★★★
()
Ответ на: комментарий от saahriktu

Если бинарник содержит инструкции, которых нет в процессоре

И кто же проверяет бинарник на наличие этих самых инструкций? «illegal instruction» будет при выполнении отсутствующих инструкций.

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

Ну так и вот. Если бинарник содержит инструкции SSE4.1, а в процессоре их нет, то его выполнение завершится с ошибкой.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)

собрал, пересобрал @system, не собралось 3 пакета: make, gdk-pixbuf, elogind

Deleted
()
Ответ на: комментарий от pacify

Так там и SSE3 и SSE4a присутствует.

http://www.amd.com/ru-ru/products/processors/desktop/athlon-ii#

Я просто удивился что есть 64х битный проц который может максимум в SSE2.

Behem0th ★★★★★
()
Последнее исправление: Behem0th (всего исправлений: 2)
Ответ на: комментарий от Behem0th
Архитектура:         x86_64
CPU op-mode(s):      32-bit, 64-bit
Порядок байт:        Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  1
Ядер на сокет:       2
Сокетов:             1
NUMA node(s):        1
ID прроизводителя:   AuthenticAMD
Семейство ЦПУ:       15
Модель:              107
Имя модели:          AMD Athlon(tm) Neo X2 Dual Core Processor L335
Степпинг:            2
CPU MHz:             1600.000
CPU max MHz:         1600,0000
CPU min MHz:         800,0000
BogoMIPS:            3191.90
Виртуализация:       AMD-V
L1d cache:           64K
L1i cache:           64K
L2 cache:            256K
NUMA node0 CPU(s):   0,1
Флаги:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl cpuid extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch retpoline rsb_ctxsw vmmcall lbrv
aplay ★★★★★
()
Ответ на: комментарий от aplay

Странно, погуглив везде пишут что может в SSE3. Проц вышел в 2009м, а судя по википедии первый проц с SSE3 у АМД вышел в 2005м.

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

Кстати, оно (PNI) поддерживает набор SSSE3?

Нет. Это следующий этап развития SSE после SSE3. Просто в интеле была очень забористая трава и они обозвали SSE4 как SSSE3, устроив путаницу. Потом AMD добавила, выпустив SSE4a ≠ SSE4.

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

Можно сказать, и то, и другое. Новый формат локалей, который теперь не будут понимать статически слинкованные с прежними версиями glibc'а бинарники.

В смысле поломали совместимость самой glibc со старым форматом данных?

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

В эту сторону это тоже работает, да.

В общем, начиная с этой версии glibc читает из данных локалей по 2 грамматические формы названий месяцев. До этого в данных локалей было только одно название. В итоге изменилась структура бинарных данных локалей. И разные версии glibc'а ожидают разные форматы, да.

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

Я знаю.

Я просто удивился что есть 64х битный проц который может максимум в SSE2.

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