powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / размер кэша - КАК его максимально использовать?
25 сообщений из 85, страница 1 из 4
размер кэша - КАК его максимально использовать?
    #39910255
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у разных процов разное кол-во кэша, у corei9 под 20мб (и 10/20 ядер), у i7 - 16mb, у i5 - 12mb
а как именно это в коде использовать, чтобы выжать максимум из этих нескольких дополнительных Mb ?
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910263
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У некоторых компиляторов есть специальные опции подсказывающие для какой платформы идет компиляция. Если твой конкретный процессор есть в списке ключей - хорошо, нет - пишешь сам расширение для компилятора.

https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/Submodel-Options.html
https://clang.llvm.org/docs/CrossCompilation.html#target-triple
...etc
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910327
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quote полудух#22052434]
а код где? Или опять, теоретически использовать процессор, ядра и кэши.
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910340
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос скорее общий, чем про какой-то случай...
и я так понимаю, что проц сам порешает, сколько кэша ему надо
т.е. он просто сможет реже сбрасывать старый кэш со структурами и векторами = меньше работы, только и всего
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910351
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Из рекомендаций... я помню самая ценная - использовать структуры данных в памяти выровнянные (padded)
на границу кратную 64 бит. Еще были какие-то инструкции компиллера наподобие __builtin_prefetch

2) Стараться делать доступ к памяти максимально локализованным. Вобщем .. читаете адресочек. Потом следующий
за ним рядом e.t.c. Тоесть ... не бомбить по рандомным адресам по всей доступной памяти. Думаю сюда-де до кучи
memory-mapped files. Фильтры Блума. Блочные кеши баз данных.

3) Далее.. просто мысли вслух. Я привел картинку (грубую) с топологией кешей разных уровне для процессора семейства Core i7.



Рискну предположить что если вы локализуете своё приложение на ядрах 0 и 1 и поотстреливаете все процессы-конкуренты
то кеши L2 - будут ваши. Что в общем случае - тоже оптимизация. Плохо или хорошо - обсудите.

Вообще я-бы все таки пошёл от алгоритма а не от абстрактных рекомендаций. Так... если-б они были
то любой программист выкручивал бы ручки кешей на максимум. Всё равно что nice для процесса понизить.
Закончится лагами других процессов. Сеть начнёт лагать там... или диск. Вобщем как от добра искать добро.
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910353
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, это ты азы рассказываешь )
только далеко не все...
структуры надо на 64 байт (а не бит), чтобы в cache-line влезали, и чтобы занимали его целиком.
(это справедливо для 64-битных компов, у 32-битных cache-line на 32 байта)
"последовательное считывание массива - самое быстрое, что может быть, и ничего быстрее не предвидится"
это ещё Scott Meyers говорил тут:
YouTube Video
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910358
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух, а ты каких советов ожидал?
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910361
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да согласен насчет 64 байт.
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910366
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
полудух, а ты каких советов ожидал?

да скорее просто уточнить - за что мы платим при апгрейде камня и как это по-максимуму заюзать...
ну понятно, когда новые ядра появляются (хотя ещё потестить надо - дадут ли они чё),
а вот, например, через +4мб кэша можно что-то ускорить?
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910369
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухчерез +4мб кэша можно что-то ускорить?

Можно запустить на 4 мб больше кода. Не майся дурью, в любой современной операционке тебя
их этого кэша выщемят за мгновение ока.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910405
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
mayton
полудух, а ты каких советов ожидал?

да скорее просто уточнить - за что мы платим при апгрейде камня и как это по-максимуму заюзать...
ну понятно, когда новые ядра появляются (хотя ещё потестить надо - дадут ли они чё),
а вот, например, через +4мб кэша можно что-то ускорить?

Последний год ведутся жестокие баттлы Intel-Vs-AMD. Железки отличаются конфигурациями ядер и кешей размерами
и различного рода компоновок.

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

Вот мне кажется твой вопрос - надо переформатировать. Ты говоришь об "максимально использовать".
А это неверная постановка. Ты - хочешь утилизации ресурсов. Это как в лекции Шипилева. Утилизация
леса - это устроить пожар в лесу. Максимальная утилизация. Понимаешь да?

Давай может в топик свой алгоритм и мы на него посмотрим под углом кешей.
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910443
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да я как раз и смотрю на эту гонку между AMD и Intel-ом
вот у AMD щас Ryzen, а там новые кэши, новые ядра
ну и возникают вопросы к цене...

вот, например, конфигурация:
Ryzen 7 3700X/3800X ( стоит 25 тыр )
Технология изготовления 0.007 микрон
Количество ядер 8
Количество потоков 16
Кэш L1 (для каждого ядра) 32 КБ данные + 32 КБ инструкции
Кэш L2 (для каждого ядра) 512 КБ
Кэш L3 2 x 16 МБ

а вот Intel Core i9-9900K стоит уже под 80к , но при этом имеет в тестах такие же результаты
(кстати, сам Intel имеет "Рекомендуемую цену для клиента" = $488.00 - $499.00 (для партий от 1000 штук))
Технология изготовления 0.014 микрон
Количество ядер 8
Количество потоков 8
Кэш L1 (для каждого ядра) 32 КБ данные + 32 КБ инструкции
Кэш L2 (для каждого ядра) 256 КБ
Кэш L3 16 МБ

т.е. Intel, чтобы догнать новый Ryzen, нужен core i9 за много денег
(а core i7 9700K вообще жёстко сливает на -25%)

так за что платим? Там вся начинка хуже. Не пора ли уже на AMD полностью переходить?
особенно нам, программистам C++, который могут этот процессор напрямую "пальчиками пощупать" и полностью заюзать этот кэш (можем ведь?)...
Раньше то я не был "настолько приближённым", а теперь вот проникся и всерьёз начал задумываться...
Я правда щас говорю не про десктоп, а про серверные конфигурации, а там и процы другие, но всё таки Intel есть Intel и они явно УХУ ели.

зы: Intel, кстати, щас выкатил новый сокет, который вообще никак не совместим со старым и на старую мать новый проц никак не поставить
сами себе могилу копают...
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910446
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да все в порядке. Идет нормальный процесс. Просто Intel слишком долго "починал на лаврах" победителя
а за это время конкуренты подтянулись. Отладили процесс и стали клепать камни не хуже но за меньшие деньги.

Я думаю Интел обязан либо выкатить нечто особо значимое в следующих релизах либо скинуть цены.

P.S. У меня на борту рабочей машинки дома стоит Ryzen-5.
6 ядер по 2 потока. ОС видит 12 логических CPU.
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910454
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухможем ведь?

Не можем. См. выше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910457
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее пользу сложно посчитать.

Вот со ссылкой на https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
This function is used to minimize cache-miss latency by moving data into a cache before it is accessed. You can insert calls to __builtin_prefetch into code for which you know addresses of data in memory that is likely to be accessed soon. If the target supports them, data prefetch instructions are generated. If the prefetch is done early enough before the access then the data will be in the cache by the time it is accessed.
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910458
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
о, тяжёлая артиллерия в ход пошла, стало интересно...

а почему они написали так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
for (i = 0;   i < n;   i++)
{
    a[i] = a[i] + b[i];
    __builtin_prefetch(&a[i + j], 1, 1);
    __builtin_prefetch(&b[i + j], 0, 1);
    /* … */
}


а не так:
Код: plaintext
1.
for (i = 0;   i != n;   ++i)


?
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910460
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо смотреть ассемблерный код.

P.S. Я вообще всегда предпочитаю сравнение "меньше" в пользу "не равно". Есть у меня свои критерии надёжности.
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910468
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страус топит за то, что != это более generic
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910469
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну а ++ почему в цикле ставят то слева, то справа
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910470
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Справа - традиционно. Слева - в темплейтах и макросах на случай если цикловая переменная
окажется с перегруженным инкрементом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910472
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. в обычном for вообще пофигу?

зы: не припомню темплейтов с ++
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910473
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухе припомню темплейтов с ++

Каждый первый итератор.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910475
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Справа - традиционно

особенности архитектуры PDP-11 - постинкремент регистра
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910559
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
Страус топит за то, что != это более generic

Пускай топит. Он итераторами считает циклы. А у меня в циклах - координаты пикселей экрана.
Или вещественный параметр цикла типа double. Нахера мне его "топка" ?
...
Рейтинг: 0 / 0
размер кэша - КАК его максимально использовать?
    #39910653
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Надо смотреть ассемблерный код.

мы уже как-то пытались...
...
Рейтинг: 0 / 0
25 сообщений из 85, страница 1 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / размер кэша - КАК его максимально использовать?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]