LINUX.ORG.RU

А существует ли СОВРЕМЕННОЕ годное чтиво на тему оптимальных укладок данных и доступа к ним в современных процах?

 


2

6

Было какое-то чтиво времён 2008 про пни третьи, но есть ли похожее про Core i7 / Xeon последние?

Ну там, например, не пробегайте массив тупым циклом с начала до конца, потому что при обращении к первым 4 байтам, проц полезет в оперативу за кеш линией, на что уйдёт 200 тактов, а потом потратит пару тактов на каждый элемент. Оптимальнее, типа там, как-то спровоцировать его грузить кеш-линии раньше чем они вам нужны каким-то хитрым доступом, шагая как-то хитро по этому массиву в порядке не линейном, а через кеш линию, а потом возвращаясь. Звучит как пердь конечно, но лучшего примера я не знаю, потому что я малолетний дебил.

Вот хочется почитать что-то по сабжу, но про новые камни, а не древние пни.

Внесите царя!

anonymous
()

У интела достаточно подробные мануалы по оптимизации. Суть в том что большинство типичных сишных операций давно оптимизированы на уровне процессора/микрокода (причём именно с прицелом на оптимизацию выполнения генерируемого компиляторами кода) и у каждого поколения будут различия, наверно чтобы поднасрать любителям оптимизировать ручками. В итоге, ты можешь оптимизировать только под свой конкретный процессор.

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

Ну и компиляторы, например gcc, успешно применяют архитектурные генерик оптимизации, не влияющие на результат (например, много оптимизаций для циклов).

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

Скорее они тупые, но люди ещё тупее во многих задачах, sad but true.

anonymous
()

Было какое-то чтиво времён 2008 про пни третьи

Это мыщъх был со своим Code Optimization.

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

та да уж работа системы безопасности его нанимателя (какой та из суб/подрядчиков DoDUS)

anonymous
()

но про новые камни, а не древние пни

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

no-such-file ★★★★★
()
Ответ на: комментарий от Virtuos86

У тебя какая-то форма метаоверинжиниринга головного мозга.

Бывает, не реви.

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

Тухлятина, не объясняются даже базовые принципы оптимизации на современном железе. 90% книги - протухшие сравнения жопы и пальца, а так же какие-то невнятные примеры без особых пояснений.

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

Суть в том что большинство типичных сишных операций давно оптимизированы на уровне процессора/микрокода

Полная херня.

причём именно с прицелом на оптимизацию выполнения генерируемого компиляторами кода

Ни в какую оптимизацию кода компиляторы не имеют. Они умеют в оптимизацию той кривой и избыточной логики, которую ты насрал, но это никакого отношения к микроархитектурым оптимизациям не имеет.

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

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

В итоге, ты можешь оптимизировать только под свой конкретный процессор.

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

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

У интела достаточно подробные мануалы по оптимизации.

Единственное, что похоже на правду из всего треда. Правда про «подробный» - это враньё. В мануале есть описание микроархитектуры + примеры применения фичей. Никаких фундаментальных объяснений там нет. В рядовой ситуации мануал научит тебя от силы паре трюков.

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

Это правда. Но где тогда брать инфу? Опытом и ошибками с говнофрейморком по подсчету тактов на перевес?

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

У тебя гугл сломался? Нагуглить подтвержения не составит никакого труда. Большая часть будет от интела и больших любителей интела с известных форумов. Да и обсуждения зачастую со сылками на пруфы в документации. Такое ощущение, что ты застрял где-то на 30 лет в прошлом со своим мировоззрением.

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

Пытаться понять то, как работает железяка. В мануале базовая инфа есть. Далее тебе в голове нужно воссоздать модель железки, которую ты будешь постепенно улучшать новой инфой из мануала, либо измерениями.

Опытом и ошибками с говнофрейморком по подсчету тактов на перевес?

Самый действенный способ это брать и пытаться объяснить «почему так произошло?», тут главное не скатиться в религию как делают 99% адептов. Прочитал где-то херню на форуме и давай считать её объяснением. Обычно это какие-то заклинания. Звучат они как-то так:

Дано

Одно работает быстрее, чем другое.

Объяснение сектанта:

это просто кэшмисы.
это просто магия, посчитать такты невозможно.
это просто неправильно - правильно замерить невозможно.

Всё это - это не объяснения, а дерьмо. И это очевидно.

Других вариантов нет. Только поиск рациональных объяснений окружающей действительности.

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

А в процессорах есть же аппаратный пирформанс мониторинг, он-то хоть норм?

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

Не надо так. Человек пытался дать миру добро, пару годных книжек написал.

anonymous
()

Насколько мне известно, действенное решение это документация к нужному тебе процессору и практика лично тобою исполненная.

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

Расширенный мануал ты запросить, конечно, не в состоянии, да? Пару нда подписать и он у тебя, веселись.

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

https://github.com/tpn/pdfs/blob/master/Intel 64 and IA-32 Architectures Opti... вот 2018 год. У нас просто интеловские мануалы печатные лежат.

90% книги - протухшие сравнения жопы и пальца, а так же какие-то невнятные примеры без особых пояснений.

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

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

Никакого мануала там нет и быть не может. В противном случае мир бы знал плоды этого мануала и его адептов, но пока что мир их не знает.

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

Заплати денег, чуваки из Intel приедут и расскажут подробнее.

Типичный пациент, какое отношение интел имеет к той книге, которую я комментировал.

А по поводу расскажут - не расскажут. Я тебе гарантирую это. Эти пациенты даже с iaca обосрались.

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

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

Опять пациент не понимает, что такое архитектура. К тому же, специфичные вещи - это капля в море. А мои оптимизации никогда не будут проигрывать быдлокоду школьников, это невозможно по определению.

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

Эти ответы от типичный тутошних экспертов. Что сказать-то хотел? Ты хочешь срывать покровы в мой адрес на тему архитектуры? Гиблая затея. Лучше отвечай как человек, либо не пиши херню.

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

Типичный пациент, какое отношение интел имеет к той книге, которую я комментировал.

То, что ты комметировал это официальный мануал Интела, написанная сотрудниками Интела.

А по поводу расскажут - не расскажут. Я тебе гарантирую это. Эти пациенты даже с iaca обосрались.

Что гарантируешь? Где обосрались?

Опять пациент не понимает, что такое архитектура. К тому же, специфичные вещи - это капля в море. А мои оптимизации никогда не будут проигрывать быдлокоду школьников, это невозможно по определению.

Ну тогда расскажи нам что такое архитектура. Мы ж тут все дебилы.

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

40 лет, Карл. Цена одних и тех же инструкций может различаться на порядки в соседних поколениях. То же самое с кэшами, только уже в одном поколении.

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

Ты нихрена не знаешь о цене инструкций. Это первое, иначе ты бы такой херни не нёс. Второе, ты можешь показать, что ты не балабол и эту разницу на порядок в более-менее актуальных соседних поколениях.

Я даже не буду комментировать то, почему вообще такое понятие как «цена инструкции»( в контексте производительности) не существует. Цена одна.

То же самое с кэшами, только уже в одном поколении.

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

Я уже балаболам много раз приводил такой пример. Воспринимай оптимизацию как банальное распараллеливание. Свойства такие же, если что-то является параллельным и распараллелено, то абсолютно неважна количественная сторона вопроса - будь там 8, либо 88 ведёр. Ситуация не изменится. Есть какие-то нюансы, но они уже второстепенны, да и их мало.

Оптимизация прежде всего фундаментальна, ту херню, которую вам рассказывали про «будет не работать на другом поколении» - полная херня. Это настолько мусорные потуги, что просто смешно.

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

Я сейчас применил твою «формулу восприятия» вообще ко всем ответам на всяких разных ресурсах. Ёпт, так, выходит 99% всей инфы в инете, вне зависимости от тематики вопроса — полный пшик. Ты меня пугаешь.

deep-purple ★★★★★
()
Последнее исправление: deep-purple (всего исправлений: 1)
Ответ на: комментарий от xpahos

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

Был опыт? Можно подробнее?

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

Вот это новость, оказывается 99% пациентов в интернете нихрена не знают, нихрена не понимают, а просто повторяют то, что где-то услышали. Причём не только в интернете.

Естественно, им может даже повезти и то, что они где-то слышали окажется верным, но это маловероятно, т.к. если пациент и услышал правильные вещи - он всё равно всё перепутает.

Поэтому да, основная задача человека, который хочет что-то понимать - не стать жертвой лозунгов, агиток и прочих баек из интернета. Тут нет никакого откровения, но почему-то 99% это не останавливает.

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

Был опыт? Можно подробнее?

Да, поподробнее я уже не вспомню. Человек насовал оптимизаций для каких-то древних интелов, я уже не помню точно что это за Xeon были. Смигрировали на новое железо, а утилизация CPU на кластере даже до 60% не доходила. Выяснилось, что он намудрил что-то с кэшом. Пока искали это, выясилось что он еще наоптимизировал свой код, завязавшись на внутрненнии структуры ПО кластера. В итоге отселили его отдельно на старые машины, а остальная команда все переносила на другое ПО.

Попробуй связаться с https://github.com/alexander-titov Он читает/читал лекции в МФТИ.

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

Не, я тебя сейчас типа проверял. Да, та же самая херь творится, как и у тебя. Реально, из-за отсутствия полной инфы, приходится познавать все методом тыка, так потом еще и не верят что это все именно так.

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

Нет, я без привязки к конкретике. Хотя.. будет нужно чутка позднее. В любом случае спс — гляну «а что Титов».

deep-purple ★★★★★
()
Последнее исправление: deep-purple (всего исправлений: 1)
Ответ на: комментарий от LjubaSherif

Я уже балаболам много раз приводил такой пример. Воспринимай оптимизацию как банальное распараллеливание. Свойства такие же, если что-то является параллельным и распараллелено, то абсолютно неважна количественная сторона вопроса - будь там 8, либо 88 ведёр. Ситуация не изменится. Есть какие-то нюансы, но они уже второстепенны, да и их мало.

Какое распраралеливание? Какие ядра?

Оптимизация прежде всего фундаментальна, ту херню, которую вам рассказывали про «будет не работать на другом поколении» - полная херня. Это настолько мусорные потуги, что просто смешно.

Вот ты правда тут пальцы раскидываешь и ни разу ничего не упомянул ни про DTLB/STLB, ни про PIPT/VIPT, ни про котекст свичи и прочее. Ты лезешь что-то оптимизировать, хотя видимо даже не знаешь как пользоваться madvise. Ты хотя бы последнии две интеловских архитектуры сравни и посчитай страйд для начала.

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

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

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

У тебя какие-то комплексы помноженные на шизу. В детстве обижали?

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

Эти прохладные истории. Не знаю что, не знаю где. Как и говорил, трепло знающие один базворд «кэш», которым пытается всегда всё объяснить, при этом подробностей нет.

а утилизация CPU на кластере даже до 60% не доходила.

Сообщаю новость, ламерок, кэш на утилизацию cpu никак не может влиять.

на кластере

А это ещё более смешно. Ламерок опять решил кидануться базвордом, но опять сел в лужу. Кэш может влиять только на отдельную ноду, как и утилизация ЦПУ может быть только у отдельной ноды. И тут вопрос, зачем ламерок расширил контекст до кластера, если все те свойства, о которых он кукарекал - это свойства ноды, а не кластера. А свойства кластера просто берётся среднем по нодам?

А я расскажу - трепло в очередной раз попыталось пустить пыль в глаза.

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

Эти прохладные истории. Не знаю что, не знаю где. Как и говорил, трепло знающие один базворд «кэш», которым пытается всегда всё объяснить, при этом подробностей нет.

Сможешь как-то по-другому объяснить?

Сообщаю новость, ламерок, кэш на утилизацию cpu никак не может влиять.

хм, странные у тебя новости. Или ты не понимаешь значения слова утилизация?

Кэш может влиять только на отдельную ноду, как и утилизация ЦПУ может быть только у отдельной ноды.

ты даже не знаешь о чем рассуждаешь, но все равно продолжаешь.

И тут вопрос, зачем ламерок расширил контекст до кластера, если все те свойства, о которых он кукарекал - это свойства ноды, а не кластера. А свойства кластера просто берётся среднем по нодам?

Никто никогда не считает ничего среднего. Всегда смотрят на 99 перцентиль. Может быть ты уже перейдешь к более конструктивной аргументации?

xpahos ★★★★★
()

Звучит как пердь конечно

this

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

Проясните. Вы говорите об отсутствии дополнительной «расширенной» справочной информации от корпорации на особых условиях? Если да, то ничего можете не писать, по крайне мере для меня. Плоды и адепты? Чего? Клуба любителей документации для купленных игрушек? А разве есть те, кто копается в этом и не башляет деньги в «секту» за эти самые вещи? Ах, вы не слышали о таких людях и их плодах? Думаю, что и не услышите. Предположу, что говорим мы о разном, наперёд вашего прояснения.

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