The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Проект Minotaur развивает оптимизатор векторных инструкций для LLVM "
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Проект Minotaur развивает оптимизатор векторных инструкций для LLVM "  +/
Сообщение от opennews (??), 16-Июл-23, 10:43 
Группа исследователей из университета Юты (США) предложила оптимизатор Minotaur для набора компиляторов LLVM, использующий метод на основе решения задач выполнимости формул (SMT Solver) для выявления недостающих оптимизаций в промежуточном представлении кода (LLVM IR), генерируемом оптимизатором LLVM.  Minotaur главным образом нацелен на оптимизацию целочисленных векторных инструкций (SIMD), как переносимых, так и специфичных для систем x86_64 (SSE, AVX, AVX2 и AVX-512)...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=59447

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  –21 +/
Сообщение от Аноним (1), 16-Июл-23, 10:43 
много человекочасов, пропукали не один стул, построили целую науку, добились повышения в 1.3%. Это прогресс ащетаю
Ответить | Правка | Наверх | Cообщить модератору

3. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +3 +/
Сообщение от Аноним (3), 16-Июл-23, 10:58 
Прогресс в навязывании avx2
Ответить | Правка | Наверх | Cообщить модератору

9. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +12 +/
Сообщение от Аноним (9), 16-Июл-23, 11:36 
Ты шутишь? Это целые 1.3%! Нука шляпу сними!
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

29. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +17 +/
Сообщение от Аноним (29), 16-Июл-23, 14:45 
Так потратили человекочасы одна группа и один раз, а 1.3% прироста теперь будут всегда и для всех.

Вполне себе выигрыш.

Ответить | Правка | Наверх | Cообщить модератору

51. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (51), 16-Июл-23, 17:08 
для всех, кто ЭТО использует. А кто будет использовать прилепленныетсбоку васяноподелки ради 1% производительности?
Ответить | Правка | Наверх | Cообщить модератору

58. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +4 +/
Сообщение от Аноним (58), 16-Июл-23, 18:17 
Например, любой крупный облачный оператор. Да и в целом, сэкономить 1% денег через несложные единоразовые телодвижения — хороший бизнес. Надо брать.
Ответить | Правка | Наверх | Cообщить модератору

72. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Я (??), 16-Июл-23, 23:03 
для некоторых задач и ускорение на 0.1% это миллионы доларов экономии в год
Ответить | Правка | К родителю #51 | Наверх | Cообщить модератору

23. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от AKTEON (?), 16-Июл-23, 13:19 
Ага - полезность науки это растет как длина фрактала к ометаемой площади ....
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

88. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от freehckemail (ok), 17-Июл-23, 10:50 
Покуда учёные не создали perpetuum mobile, как бы мы полезность не определили, она всё-таки конечна. )
Ответить | Правка | Наверх | Cообщить модератору

27. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +7 +/
Сообщение от Аноним (27), 16-Июл-23, 13:41 
Ты пропукал свой комментарий, это прогресс я считаю.
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

86. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от Anonymous1917 (?), 17-Июл-23, 09:18 
На больших масштабах это могут быть огромные деньги. К счастью они будут потрачены на рождение и воспитание детей не таких как ты
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

87. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (87), 17-Июл-23, 09:33 
Для каких-нибудь видеоигр один процент - это целый кадр, если метишь в 120 FPS.
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

105. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (1), 18-Июл-23, 08:10 
разве есть какая-то разница 119 и 120 fps ?
Ответить | Правка | Наверх | Cообщить модератору

2. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  –4 +/
Сообщение от Аноним (2), 16-Июл-23, 10:58 
А они учитывают то что многие процессоры тут же включают троттлинг от таких инструкций?
Ответить | Правка | Наверх | Cообщить модератору

6. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +2 +/
Сообщение от Аноним (6), 16-Июл-23, 11:29 
околесицу и чушь про тротлинг при вызове таких инструкций не несите, хорошо? спасибо.
Ответить | Правка | Наверх | Cообщить модератору

7. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  –1 +/
Сообщение от Аноним (7), 16-Июл-23, 11:33 
Может троттлинг и не точное определение, но то, что ядра снижают частоту при использовании AVX-* - факт.
Ответить | Правка | Наверх | Cообщить модератору

15. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (2), 16-Июл-23, 12:33 
Это то же самое и по той же причине. Своеобразный преемптивный троттлинг, avx легко отобрали пальму первенства по нагреву у sse и fpu. Особенно заметно, когда СО в итоге всё же не справляется и легко падает в полноценный троттлинг. Для примера, компиляция вебкита (и хромиума соотвественно) -- единственный процесс из всех пакетов, который выкидывал мой пк в защиту от перегрева (температура на ~20 градусов выше обычной максимальной).
Ответить | Правка | Наверх | Cообщить модератору

16. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (2), 16-Июл-23, 12:37 
То, что это в принципе самый долгособираемый пакет, вопрос отдельный, троттлить начинало довольно быстро и соответственно всё растягивалось на долго.
Ответить | Правка | Наверх | Cообщить модератору

41. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +2 +/
Сообщение от Аноним (41), 16-Июл-23, 15:48 
Пользуйтесь процессорами AMD, у них частоты одинаковые при любых инструкциях.
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

42. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  –1 +/
Сообщение от Аноним (2), 16-Июл-23, 15:54 
А как же быть с тем, что процессоры АМД не показывают реальную температуру на датчиках? Из-за того, что они склеены из различной отбраковки, результаты могут довольно разниться. У них намного жёстче ограничения по рабочим температурам, как из-за материала затворов, так и из-за клея.
Ответить | Правка | Наверх | Cообщить модератору

73. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +2 +/
Сообщение от Я (??), 16-Июл-23, 23:05 
какая разница что там на датчиках если процессор не пререгревается и работает нормально без тротлинга?
Ответить | Правка | Наверх | Cообщить модератору

30. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +4 +/
Сообщение от Аноним (29), 16-Июл-23, 14:48 
Это было на самых первых реализациях от интела. Этого уже нет, если укладывается в теплопакет - частота будет та же.

Так и AVX-512 за троттлинг и снижение частоты гнобили, а *внезапно* это оказалось просто легкой болячкой первых интеловских реализаций, вон в Zen 4 никакого снижения частоты от AVX-512 не происходит. И теперь даже memcpy() с ним оказывается эффективнее воткнуть во всех программы, а то что когда-то Линус говорил против этого - оказалось частью истории и неактуальной частностью. Прошло время, ошибки изучили, сделали нормально. Вон, ознакомьтесь с бенчмарками phoronix с/без AVX2 и AVX-512.

Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

36. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от Аноньимъ (ok), 16-Июл-23, 15:27 
В процессорах нет инструкций для копирования произвольных кусков памяти?
Ответить | Правка | Наверх | Cообщить модератору

57. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Oe (?), 16-Июл-23, 18:15 
Нету, проще каждое поколение наращивать количество ядер и продавать. Ой, уже давно уперлись в потребление в пол-киловатта, поэтому чтобы добавить еще больше ядер, половину ядер урезают по частотам под соусом "энергоэффективности и экологии", так можно еще пару лет делать новые "инновационные" поколения процессоров и впаривать хомякам, не внося абсолютно никаких изменений в архитектуру и техпроцесс.
Ответить | Правка | Наверх | Cообщить модератору

59. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от Аноньимъ (ok), 16-Июл-23, 18:26 
"Прогресс"

Ответить | Правка | Наверх | Cообщить модератору

82. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +2 +/
Сообщение от n00by (ok), 17-Июл-23, 08:05 
>> В процессорах нет инструкций для копирования произвольных кусков памяти?
> Нету,

Прекратите распространять мракобесие.

Ответить | Правка | К родителю #57 | Наверх | Cообщить модератору

81. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +2 +/
Сообщение от n00by (ok), 17-Июл-23, 08:02 
Есть, начиная с 16-ти разрядных 8086.

rep movs

В какие-то периоды времени она работала медленнее, чем цикл с предвыборкой из кеша (prefetchnta), но давно ускорили.

Ответить | Правка | К родителю #36 | Наверх | Cообщить модератору

90. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноньимъ (ok), 17-Июл-23, 11:26 
> Есть, начиная с 16-ти разрядных 8086.
> rep movs
> В какие-то периоды времени она работала медленнее, чем цикл с предвыборкой из
> кеша (prefetchnta), но давно ускорили.

Зачем тогда avx используют для копирования?

И разве это не просто способ повторения копирования одного слова?

Ответить | Правка | Наверх | Cообщить модератору

91. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от n00by (ok), 17-Июл-23, 12:36 
>> Есть, начиная с 16-ти разрядных 8086.
>> rep movs
>> В какие-то периоды времени она работала медленнее, чем цикл с предвыборкой из
>> кеша (prefetchnta), но давно ускорили.
> Зачем тогда avx используют для копирования?
> И разве это не просто способ повторения копирования одного слова?

Не знаю, зачем. Может маркетинг, или очередной выигрыш на уровне погрешности измерений.

Вот цитата 64-ia-32-architectures-optimization-manual.pdf

2.6.6 REP String Enhancement

REP prefix in conjunction with MOVS/STOS instruction and a count value in ECX are frequently used to
implement library functions such as memcpy()/memset().
...
Fast string (ECX >= 76: excluding REP MOVSB): the processor implementation provides hardware
optimization by moving as many pieces of data in 16 bytes as possible. The latency of REP string
latency will vary if one of the 16-byte data transfer spans across cache line boundary:
...
In order for REP string to operate in “fast string” mode, previous microarchitectures requires address
alignment. In Intel microarchitecture code name Nehalem, REP string can operate in “fast string”
mode even if address is not aligned to 16 bytes.

Обратите внимание на "аппаратная оптимизация" (hardware optimization).

Проблема со скоростью копирования была во времена Athlon XP и разобрана в http://files.rsdn.ru/23380/AMD_block_prefetch_paper.pdf
Смысл в том, что память читается не побайтно, а кратно размеру линии кэша, и лишнего загрязнения кэша желательно избегать.
В следующем поколении Intel оптимизировали REP MOVSB и она догнала по скорости оптимизированные циклы.

Ответить | Правка | Наверх | Cообщить модератору

118. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (118), 03-Янв-24, 21:38 
Там целая эпопея https://stackoverflow.com/questions/43343231/enhanced-rep-mo...
Ответить | Правка | К родителю #90 | Наверх | Cообщить модератору

46. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от Аноним (46), 16-Июл-23, 16:51 
Ага, такой лёгкой болячкой оказалось, что вообще нафиг выпилили из новых процессоров.
Ответить | Правка | К родителю #30 | Наверх | Cообщить модератору

56. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от анонимус (??), 16-Июл-23, 18:10 
Выпилили чтобы зеоны продавать, в них-то avx512 остался.
Ответить | Правка | Наверх | Cообщить модератору

65. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (65), 16-Июл-23, 19:19 
Выпилили по совершенно другой причине.
Ответить | Правка | К родителю #46 | Наверх | Cообщить модератору

80. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (46), 17-Июл-23, 07:35 
И пр какой же? Только не надо вот про зионы, как выше написали, эти рынки вообще не пересекаются.
В любом случае — это весьма стыдное в репутационном смысле решение. Вот представьте лет 20 назад: а давайте мы уберём SSE из наших пентиумов-3, и оставим его только в зионах! Дико? Дико.
Ответить | Правка | Наверх | Cообщить модератору

98. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (98), 18-Июл-23, 00:33 
Очевидно, потому что малые E-ядра не могут в AVX-512. Скорее всего, тупо не влезло по площади в кремнии и по энергопотреблению, даже если делать в double pumped варианте без добавления новых исполнительных устройств. Регистров больше, более сложный shuffle блок, 64-битный блок векторного умножения.

А если спросите "а как же модели без E-ядер", то ответ тоже очевиден - сегментирование рынка. Да, чтобы брали зионы за конский ценник, кому оно действительно надо.

> В любом случае — это весьма стыдное в репутационном смысле решение. Вот представьте лет 20 назад: а давайте мы уберём SSE из наших пентиумов-3, и оставим его только в зионах! Дико? Дико.

С пробуждением. До недавнего времени в Pentium'ах и Celeron'ах не было AVX. Никакого, только SSE.
Так что ничто не ново под луной.

Ответить | Правка | Наверх | Cообщить модератору

69. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от S22 (?), 16-Июл-23, 21:44 
В zen4 avx512 выполняется в 2 инструкции так как ширина канала 256. По факту avx512 там не даёт существенных преимуществ над avx2
Ответить | Правка | К родителю #30 | Наверх | Cообщить модератору

71. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от анонимус (??), 16-Июл-23, 22:44 
Phoronix потестил и смысл очень даже есть: https://www.phoronix.com/review/amd-zen4-avx512
а вот с 512бит шириной канала есть вопросы поскольку штука узкоспециализированная, у интел тоже не дураки чтобы выкинуть поддержку из гражданских моделей, ибо греется сильней и зря занимает полезное место. Можно конечно придумать куда впихнуть, но тут проблема курицы и яйца
Ответить | Правка | Наверх | Cообщить модератору

79. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от S22 (?), 17-Июл-23, 07:29 
Увеличение скорости на 10% против нормативных 2х раз.

Avx512 там добавили для галочки. Кстати, как я понимаю многопоточность не будет работать с avx512 в линуксе, так как регистры не сохраняются при переключении задач?

Ответить | Правка | Наверх | Cообщить модератору

83. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от анонимус (??), 17-Июл-23, 08:10 
> против нормативных 2х раз

uwot

https://www.phoronix.com/review/rocket-lake-avx512
https://www.phoronix.com/review/zen4-avx512-7700x

> как я понимаю многопоточность не будет работать с avx512 в линуксе

Ну да, а HPC для которых всё затевалось на виндосервере работают. Вон Майкл даже на епике потестил и есть сравнение с "настоящим" avx512 на интелах

https://www.phoronix.com/review/amd-epyc-avx512
https://www.phoronix.com/review/intel-sapphirerapids-avx512/

Может посмотреть тесты на железе сперва?

Ответить | Правка | Наверх | Cообщить модератору

99. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (98), 18-Июл-23, 00:35 
> Кстати, как я понимаю многопоточность не будет работать с avx512 в линуксе, так как регистры не сохраняются при переключении задач?

Чего только не прочитаешь в комментах.

Ответить | Правка | К родителю #79 | Наверх | Cообщить модератору

103. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Staxemail (ok), 18-Июл-23, 07:42 
Не туда смотрите. Вот вам в TensorFlow и в два раза прирост: https://www.phoronix.com/review/amd-ryzen7040-avx512/7

При совершенно том же теплопакете. Да, на райзене, потому что на Ice Lake старая реализация, которая так повышала энергопотребление и из-за этого мобильный CPU снижал частоту. Да, вне задач рендеринга и AI двухкратный выигрыш получить сложно, мало что еще параллелится до такой степени, чтобы 512 бит за раз перемалывать. Но когда что-то параллелится - выигрыш на чистом месте вплоть до двухкратного относительно AVX2 без доп. расхода энергии (8 страница).

Ответить | Правка | К родителю #79 | Наверх | Cообщить модератору

32. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +3 +/
Сообщение от Аноним (65), 16-Июл-23, 14:53 
> А они учитывают то что многие процессоры тут же включают троттлинг от таких инструкций?

А многие не включают.

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

33. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (2), 16-Июл-23, 15:10 
Вроде, это каждый раз повторяется. Добавляют новые SIMD, не вывозят по тепловыделению, и пока литография не обновится, все процессоры идут бракованные. И не предъявишь ведь как АМД -- ничего не падает.
Ответить | Правка | Наверх | Cообщить модератору

34. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (2), 16-Июл-23, 15:14 
У АМД была похожая история с совместными блоками -- вроде, ядер много, а используется только половина и остальные стоят ждут. Ещё что-то там с шиной межъядерного взаимодействия было. Всё лучше чем сегфолты, конечно. Но старое железо никуда не девается ведь.
Ответить | Правка | Наверх | Cообщить модератору

38. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (27), 16-Июл-23, 15:35 
Всё лучше чем проц сгорает если снять кулер.
Ответить | Правка | Наверх | Cообщить модератору

47. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +2 +/
Сообщение от Аноним (46), 16-Июл-23, 16:54 
Тут, конечно, пара человек с сокетом  462 найдётся, но в основном все обновились уже.
А то так можно вспомнить и «всё лучше, чем когда математику неправильно считает».
Ответить | Правка | Наверх | Cообщить модератору

49. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от An2 (?), 16-Июл-23, 17:03 
Они тогда решили сэкономить на блоках для плавающей запятой (1 на 2 ядра). В бульдозерах, вроде. Напрасно.
Ответить | Правка | К родителю #34 | Наверх | Cообщить модератору

70. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +3 +/
Сообщение от Аноньимъ (ok), 16-Июл-23, 22:08 
Работало вообще оно отлично для обычных задач.

Да, на всяких расчётах не очень хорошо тянуло в сравнении, хотя там свои нюансы были.

Мне кажется бульдозеры незаслуженно ругали вообще.

Думаю маркетинг подкачал скорее.

Ответить | Правка | Наверх | Cообщить модератору

100. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (98), 18-Июл-23, 01:02 
А вы посмотрите обзоры и сравнения тех времен, и перестанет казаться.

Разделяемый FPU не взлетел потому что, внезапно, программы его активно используют. Напомню, что в случае AMD FPU используется не только для вычислений с плавающей запятой, но и для векторных инструкций. А в Бульдозере, к тому же, использовался сырой процесс, в котором не смогли добиться высоких частот. Вот и получилось, что разделяемый FPU, расчитанный на высокую пропускную способность (throughput) в ущерб задержке (latency), работал на относительно низких частотах.

Ответить | Правка | Наверх | Cообщить модератору

101. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноньимъ (ok), 18-Июл-23, 02:39 
Смотрел обзоры, видел много некомпетентности.

И успешно использовал эти апушки много много лет вплоть до войны.

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

CPU рендерингом не занимался.

Ответить | Правка | Наверх | Cообщить модератору

102. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноньимъ (ok), 18-Июл-23, 02:48 
Первой их апушкой у меня был
AMD A10-5800K
Разгонялся вообще отлично.
При этом был не особо то горячим, хотя я его скальпнул в итоге и на жм прилепил вначале так, а потом крышку на место вернул.

>расчитанный на высокую пропускную способность (throughput)

Там подсистему памяти(или что-то такое) можно и нужно было гнать, не помню уже что у меня там стояло..

Ответить | Правка | К родителю #100 | Наверх | Cообщить модератору

106. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от n00by (ok), 18-Июл-23, 09:13 
"расчитанный на высокую пропускную способность (throughput) в ущерб задержке (latency)" - вот это про архитектуру NetBurst. Те самые "кукурузные гигагерцы" первых Pentium 4, которые проигрывали ноутбучным Pentium 3 с меньшей частотой. Похоже, что эксперт просто прилепил запомнившуюся фразу куда пришлось.
Ответить | Правка | Наверх | Cообщить модератору

108. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от Аноним (98), 18-Июл-23, 12:57 
Да нет, всё "прилеплено" куда надо. Да, NetBurst был расчитан на высокие частоты, ну так он их и брал. А Бульдозер не смог. И кстати, во времена Бульдозера у Intel уже был прорывной Nehalem и появился легендарный Sandy Bridge, которые рвали его как тузик грелку.

Кстати, если интересно, вот статейка по Бульдозеру:

https://chipsandcheese.com/2023/01/22/bulldozer-amds-crash-m.../
https://chipsandcheese.com/2023/01/24/bulldozer-amds-crash-m.../

Ответить | Правка | Наверх | Cообщить модератору

111. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от n00by (ok), 19-Июл-23, 09:01 
> Да, NetBurst был расчитан на высокие частоты, ну так он их и брал.

Но толку не было, потому она (архитектура NetBurst) и породила мем "кукурузные гигагерцы".

> А Бульдозер не смог.

То есть "расчитанный на высокую пропускную способность (throughput) в ущерб задержке (latency)" не относится.

Ответить | Правка | Наверх | Cообщить модератору

114. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (98), 19-Июл-23, 11:27 
> То есть "расчитанный на высокую пропускную способность (throughput) в ущерб задержке (latency)" не относится.

Относится. Почитайте статьи по ссылкам.

Ответить | Правка | Наверх | Cообщить модератору

115. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от n00by (ok), 19-Июл-23, 15:17 
Вот сам читай их, подбирай цитаты и подтверждай своё заявление. Мне достаточно курса физики, арифметики, а так же понимания, что такое пропускная способность и частота.
Ответить | Правка | Наверх | Cообщить модератору

116. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (98), 19-Июл-23, 23:04 
> Вот сам читай их, подбирай цитаты и подтверждай своё заявление. Мне достаточно курса физики, арифметики...

Всё понятно, удачи с вашим багажом знаний.

Ответить | Правка | К родителю #115 | Наверх | Cообщить модератору

117. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от n00by (ok), 20-Июл-23, 09:18 
>> Вот сам читай их, подбирай цитаты и подтверждай своё заявление. Мне достаточно курса физики, арифметики...
> Всё понятно, удачи с вашим багажом знаний.

Бгг, но ведь ты как то живёшь, не понимая индукцию.

Ответить | Правка | К родителю #116 | Наверх | Cообщить модератору

4. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (3), 16-Июл-23, 10:59 
>(SMT Solver)

очень медленно будет.

Ответить | Правка | Наверх | Cообщить модератору

8. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +3 +/
Сообщение от Аноним (8), 16-Июл-23, 11:35 
с какого это перепугу? вы, судя по всему, вообще не понимаете, что это и как оно реализовывается в Minotaur. https://arxiv.org/pdf/2306.00229.pdf
почитайте источник исследований и то, откуда скопирована по своей сути статья.

условно, вставляя более мощный двигатель в автомобиль вы говорите "медленно будет", потому-что там какя-то мембрана юзается или где-то какая-то реакция идет медленнее невесть бог где. мда уж.

Ответить | Правка | Наверх | Cообщить модератору

18. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +5 +/
Сообщение от Аноним (18), 16-Июл-23, 12:45 
компиляция медленная, не выполнение. SMT - это тяжёлая артиллерия для таких задач, как инверсия хэш-функций. По сути - оптимизированный ветвями и границами брутфорс. Они могут это решить в принципе, но никто не обещал, что за приемлимое время и при приемлимом потреблении памяти. На smt полагаются тогда, когда на всё остальное положиться уже нельзя.
Ответить | Правка | Наверх | Cообщить модератору

17. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (17), 16-Июл-23, 12:43 
Rewrite Generator -> Rewrites -> Rewrite Rules -> Rewrite
Ответить | Правка | Наверх | Cообщить модератору

21. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  –1 +/
Сообщение от Аноньимъ (ok), 16-Июл-23, 12:57 
Знают толк в С++
Ответить | Правка | Наверх | Cообщить модератору

20. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (2), 16-Июл-23, 12:56 
Интересно было бы сравнить с GCC (O3+pgo).
Ответить | Правка | Наверх | Cообщить модератору

63. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (63), 16-Июл-23, 18:46 
Не заставляй афтаров LLVM посыпать себе голову пеплом. Спиды тестируются на O2 в любом случае.
Ответить | Правка | Наверх | Cообщить модератору

22. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноньимъ (ok), 16-Июл-23, 13:05 
>Пример оптимизации для Си-кода:

Это очень круто, но бывает эти avx инструкции нужны для всяких векторных вычислений, всяких кодировщиком видео, и прочее.

А цикл заменяющий символы в строке может всеже стоит без avx делать?


Другими словами если всё так круто и быстро может вообще отказаться от обычных инструкций и все через avx считать?

Правда были уже процессоры которые сразу умели несколько инструкций выполнять... Только же закопали их потому как слишком сложно было несчастным программистам думать, а компиляторы нешмогли.
Или шмогли.
Но процессоры то закопали.

И вот опять.

Ответить | Правка | Наверх | Cообщить модератору

24. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (24), 16-Июл-23, 13:21 
Может я чего-то недопонимаю, но зачем в LLVM вообще для  if (*--p == '.') приплетают векторные инструкции вместо примитивной инструкции CMP.
Ответить | Правка | Наверх | Cообщить модератору

26. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +2 +/
Сообщение от Аноньимъ (ok), 16-Июл-23, 13:30 
Они цикл разворачивают, как я понимаю.
Но многое остаётся загадкой да.
Ответить | Правка | Наверх | Cообщить модератору

31. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от Аноним (65), 16-Июл-23, 14:51 
Внезапно, это прямое назначение векторных инструкций - выполнить одну операцию над кучей данных. А "примитивной" CMP вы будете долго и нудно ковырять эту строку по одному символу за раз.
Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

39. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноньимъ (ok), 16-Июл-23, 15:40 
Стоит ли вообще такое делать без явного указания программиста что именно так нужно делать большой вопрос.

У меня есть много вопросов по конкретному примеру вообще.

Как приведенный в новости код векторизировать если неизвестен размер массива?

Если грузить память большими кусками то неизбежно будет захвачен кусок выходящий за пределы массива, и тут могут всякие чудеса вообще происходить.

Нормальная система такого позволять не должна.

Ответить | Правка | Наверх | Cообщить модератору

44. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Tim (??), 16-Июл-23, 16:41 
Конкретно в этом примере не весь цикл, а только оператор сравнения. Фактически выбросили две бессмысленные операции.

Реализовать можно по-разному. Например три цикла, где первый побайтовый до границы кэш линии, затем векторный, и финал опять побайтовый. Или другой вариант – маскировать load/store.

AVX это не сопроцессор. Компилятор может выдать REP MOVSB или использовать быстрые инструкции, благо они все выполняются последовательно и не создают проблем при переключении задач.

Проблемы начнутся если для копирования будут использовать DMA каналы, так как их мало и работают асинхронно.

PS. Процессоры, которые кичатся своей RISC-овостью, могут load/store только с машинными словами, и только выровненными по границе слова.

Ответить | Правка | Наверх | Cообщить модератору

48. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от uis (??), 16-Июл-23, 16:55 
> PS. Процессоры, которые кичатся своей RISC-овостью, могут load/store только с машинными словами, и только выровненными по границе слова.

Не совсем. Хотя у POWER VMX очень интересно сделано: оно игнорирует последние n бит, всегда загружает выровненное слово и отказывается выдавать ошибку. Как результат - программная невыровненная загрузка выполняется в 3 инструкции.

Ответить | Правка | Наверх | Cообщить модератору

53. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноньимъ (ok), 16-Июл-23, 17:23 
> Реализовать можно по-разному. Например три цикла, где первый побайтовый до границы кэш
> линии, затем векторный, и финал опять побайтовый. Или другой вариант –
> маскировать load/store.

Для этого компилятору нужно знать размер массива.


Ответить | Правка | К родителю #44 | Наверх | Cообщить модератору

50. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от An2 (?), 16-Июл-23, 17:08 
> Стоит ли вообще такое делать без явного указания программиста что именно так нужно делать большой вопрос.

Но откуда программисту знать, на каком процессоре код будет выполняться? Можно ли ему за раз 128 бит проверять или 256, а может и все 512?

Если оптимизатор не накладывает ограничений на кратность размера буфера - просто замечательно.

Ответить | Правка | К родителю #39 | Наверх | Cообщить модератору

52. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноньимъ (ok), 16-Июл-23, 17:21 
>Но откуда программисту знать, на каком процессоре код будет выполняться?

Да просто не от куда, загадка!
Не говоря уже о том, что никогда никакой код и не пытается даже узнать это в рантайме прямо, это ведь невозможно.
Только компилятор может знать, или не может.
Кстати, откуда компилятору знать на каком процессоре будет код выполняться если программист этого не знает?

>Можно ли ему за раз 128 бит проверять или 256, а может и все 512?

Программисту ненужно знать сколько там бит и какие конкретно инструкции, достаточно сказать что это должна быть SIMD операция.
Обычно делается это через спец векторные примитивы.

Ответить | Правка | Наверх | Cообщить модератору

54. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от An2 (?), 16-Июл-23, 17:41 
> Не говоря уже о том, что никогда никакой код и не пытается даже узнать это в рантайме прямо, это ведь невозможно.

Очень даже возможно. Самый известный проигрыватель mplayer при запуске как раз об этом и сообщает: "Compiled with runtime CPU detection". И, самое главное, использует обнаруженные преимущества.

> Кстати, откуда компилятору знать на каком процессоре будет код выполняться если программист этого не знает?

Об этом ему может сообщить сборщик программы, который, в общем случае, не программист.

> это должна быть SIMD операция

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

Ответить | Правка | Наверх | Cообщить модератору

62. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноньимъ (ok), 16-Июл-23, 18:40 
> Когда теперь чуть ли не каждый цикл можно автовекторизировать, то проще уже
> указывать обратное: вот именно тут, пожалуйста, никакой самодеятельности.

Не знаю.
Я думаю это не такой простой вопрос.

Ответить | Правка | Наверх | Cообщить модератору

67. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (65), 16-Июл-23, 19:39 
> Как приведенный в новости код векторизировать если неизвестен размер массива?

Очевидно, он известен, т.к. p указывает на конец, а name - на начало.

> Если грузить память большими кусками то неизбежно будет захвачен кусок выходящий за пределы массива, и тут могут всякие чудеса вообще происходить.

Никаких чудес, если в рамках страницы памяти. Да, всякие sanitizer'ы и valgrind будут вонять про выход за границы буфера, но на практике всё будет работать без проблем. Такой подход реально применялся раньше, пока sanitizer'ы не стали модными.

Ответить | Правка | К родителю #39 | Наверх | Cообщить модератору

68. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноньимъ (ok), 16-Июл-23, 20:00 
> Очевидно, он известен, т.к. p указывает на конец, а name - на
> начало.

Да, вы правы, я как-то не так этот кот прочитал.

Ответить | Правка | Наверх | Cообщить модератору

35. Скрыто модератором  –1 +/
Сообщение от YM2608 (?), 16-Июл-23, 15:21 
Ответить | Правка | Наверх | Cообщить модератору

37. Скрыто модератором  +/
Сообщение от Аноним (27), 16-Июл-23, 15:33 
Ответить | Правка | Наверх | Cообщить модератору

40. Скрыто модератором  +/
Сообщение от YM2608 (?), 16-Июл-23, 15:43 
Ответить | Правка | Наверх | Cообщить модератору

43. Скрыто модератором  +/
Сообщение от Аноним (2), 16-Июл-23, 16:12 
Ответить | Правка | Наверх | Cообщить модератору

45. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от uis (??), 16-Июл-23, 16:51 
> if (*--p == '.') *p = '_';

Ауч, кэшу больно

Ответить | Правка | Наверх | Cообщить модератору

60. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноньимъ (ok), 16-Июл-23, 18:33 
>> if (*--p == '.') *p = '_';
> Ауч, кэшу больно

Меня больше смущает:
> while (p != name);

Ответить | Правка | Наверх | Cообщить модератору

75. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от Tron is Whistling (?), 16-Июл-23, 23:11 
Yup. Тоже это усмотрел, ну их нафиг.
Ответить | Правка | Наверх | Cообщить модератору

95. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +2 +/
Сообщение от pavlinux (ok), 17-Июл-23, 13:37 
Только ыксперты опеннета могут закопать 30-летний опыт Free Software  Foundation, Inc. и,
конкретно Jean-loup Gailly.. https://ru.wikipedia.org/wiki/%D0%93%D0%...,_%D0%96%D0%B0%D0%BD-%D0%9B%D1%83

:)


... For example, consider this loop, in C, from the compression/decompression utility gzip,
where name is the base address of a string and p is a pointer into the string:

do {
if (*--p == '.') *p = '_';
} while (p != name);


https://git.savannah.gnu.org/cgit/gzip.git/tree/util.c#n356


/* ========================================================================
* Make a file name legal for file systems not allowing file names with
* multiple dots or starting with a dot (such as MSDOS), by changing
* all dots except the last one into underlines.  A target dependent
* function can be used instead of this simple function by defining the macro
* MAKE_LEGAL_NAME in tailor.h and providing the function in a target
* dependent module.
*/
void
make_simple_name (char *name)
{
    char *p = strrchr(name, '.');
    if (p == NULL) return;
    if (p == name) p++;
    do {
        if (*--p == '.') *p = '_';
    } while (p != name);
}

Ответить | Правка | Наверх | Cообщить модератору

97. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Tron is Whistling (?), 17-Июл-23, 22:00 
Тут-то как раз всё нормально. Контекст.
Ответить | Правка | Наверх | Cообщить модератору

66. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от Аноним (65), 16-Июл-23, 19:30 
Процессоры, выпущенные в последние лет 15-20 вполне могут распознать обратную итерацию. И даже итерацию в любую сторону с большим шагом, и даже несколько параллельных итераций. Так что с кешем всё в порядке, не переживайте.
Ответить | Правка | К родителю #45 | Наверх | Cообщить модератору

55. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +2 +/
Сообщение от Аноним (55), 16-Июл-23, 18:00 
Кто Генту хаял из-за ничтожных 3% прироста производительности? Наука - понимать надо.
Ответить | Правка | Наверх | Cообщить модератору

61. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от Аноним (61), 16-Июл-23, 18:36 
1.3% - это ниже уровня стат. погрешности. Статья лежит не рецензированная. Такое достижение нормальные рецензенты не пропустят.
Ответить | Правка | Наверх | Cообщить модератору

89. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  –1 +/
Сообщение от Аноним (46), 17-Июл-23, 11:02 
Вот не надо пытаться показаться умным, не зная значения термина.
Ответить | Правка | Наверх | Cообщить модератору

74. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +2 +/
Сообщение от Tron is Whistling (?), 16-Июл-23, 23:09 
Не, я к этим ребятам не зайду. Пример уж слишком весел.

do {
  if (*--p == '.') *p = '_';
} while (p != name);

Если p не байт, а длина (p - start) в байтах не кратна sizeof(*p), будет интересно :D

Ответить | Правка | Наверх | Cообщить модератору

76. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от Tron is Whistling (?), 16-Июл-23, 23:13 
Да и если p < start - тоже внезапно окажется не менее весело.
Ответить | Правка | Наверх | Cообщить модератору

77. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Tron is Whistling (?), 16-Июл-23, 23:14 
Но если до проверки p > start или установки p = start + X догонит каждый второй студент третьего курса аграрного, то вот с кратностью могут быть проблемы.
Ответить | Правка | К родителю #74 | Наверх | Cообщить модератору

78. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (65), 17-Июл-23, 02:47 
> Если p не байт, а длина (p - start) в байтах не кратна sizeof(*p), будет интересно :D

Это будет означать, что один из указателей не выровнен, что значит UB и косяк программиста. На практике надо явно постараться, чтобы этого добиться.

Ответить | Правка | К родителю #74 | Наверх | Cообщить модератору

84. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от n00by (ok), 17-Июл-23, 08:21 
>> Если p не байт, а длина (p - start) в байтах не кратна sizeof(*p), будет интересно :D
> Это будет означать, что один из указателей не выровнен, что значит UB

Он имел ввиду "не кратна размеру операнда SIMD инструкции", но сформулировал ошибочно. А указатели на char всегда "выровнены".

Ответить | Правка | Наверх | Cообщить модератору

104. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Tron is Whistling (?), 18-Июл-23, 08:09 
А кто сказал, что там char. Из вырванных из контекста строк не видно.
Ответить | Правка | Наверх | Cообщить модератору

107. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от n00by (ok), 18-Июл-23, 09:25 
Видно. Там '_' вместо L'_'.
Ответить | Правка | Наверх | Cообщить модератору

110. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от Аноним (98), 18-Июл-23, 13:02 
Фантазировать можно в любую сторону. Сравнивать с '_' можно хоть int, хоть double.
Ответить | Правка | Наверх | Cообщить модератору

112. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от n00by (ok), 19-Июл-23, 09:06 
> Фантазировать можно в любую сторону. Сравнивать с '_' можно хоть int, хоть
> double.

Аноним - игнорим.

Ответить | Правка | Наверх | Cообщить модератору

109. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от Аноним (98), 18-Июл-23, 12:59 
Я читаю то, что написано, и написано там было совсем не то, что у вас. И сдаётся мне, что автор имел ввиду то, что он написал, а не то, что кажется вам.
Ответить | Правка | К родителю #84 | Наверх | Cообщить модератору

113. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от n00by (ok), 19-Июл-23, 09:09 
Мне ничего не кажется - я посмотрел и понял листинг в статье. Проблема с гранулярностью касается размера операнда
%1 = icmp eq %0, <46, 46, 46, ... , 46>
Ответить | Правка | Наверх | Cообщить модератору

85. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +1 +/
Сообщение от n00by (ok), 17-Июл-23, 08:26 
Там наверняка отдельных два цикла: один обрабатывает байты пачкой, а второй остаток. Ну и поскольку средняя длина строки меньше размера пачки, оптимизированная часть за пределами синтетических тестов не работает.) Смотрите pdf - в ряде случаев оптимизация приводит к ухудшению результатов тестов.
Ответить | Правка | К родителю #74 | Наверх | Cообщить модератору

92. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от pavlinux (ok), 17-Июл-23, 12:45 
Открою секрет, чтоб подсчитать определитель матрицы иль
повернуть тело на 146°, полюбасу нужно перебрать все элементы матрицы.

Ответить | Правка | Наверх | Cообщить модератору

93. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +/
Сообщение от pavlinux (ok), 17-Июл-23, 12:48 
> Пример оптимизации для Си-кода:
>
>  do {
>   if (*--p == '.') *p = '_';
>  } while (p != name);
> Для операции сравнения штатный оптимизатор LLVM сгенерирует биткод для использования инструкций AVX-2:
>
>  %1 = shufflevector %0, <31, 30, 29, ... , 0>
>  %2 = icmp eq %1, <46, 46, 46, ... , 46>
>  %3 = shufflevector %2, <31, 30, 29, ... , 0>

Cейчас кто-нибудь, вообще, ещё считает такты процессора?
А то ж окажется, что 250 раз cmp + jnz будет быстрее трех SIMD инструкций

Ответить | Правка | Наверх | Cообщить модератору

94. "Проект Minotaur развивает оптимизатор векторных инструкций д..."  +4 +/
Сообщение от Анонимemail (94), 17-Июл-23, 13:01 
Талантливые программисты:

в среднем ускорение составило 2.2%. При тестировании набора SPEC CPU2017 ускорение составило 1.3%.

Патчи к ядру для защиты от очередной дырки в процессоре:

замедление 20..75%, на некоторых задачах до 400%, при применении защиты процессоры иногда взрываются, но, пожалуйста, не волнуйтесь, это только в очень редких случаях, которые хорошо описаны в документации

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру