Гость
Форумы / C++ [игнор отключен] [закрыт для гостей] / размер кэша - КАК его максимально использовать? / 25 сообщений из 85, страница 1 из 4
31.12.2019, 20:23
    #39910255
полудух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер кэша - КАК его максимально использовать?
у разных процов разное кол-во кэша, у corei9 под 20мб (и 10/20 ядер), у i7 - 16mb, у i5 - 12mb
а как именно это в коде использовать, чтобы выжать максимум из этих нескольких дополнительных Mb ?
...
Рейтинг: 0 / 0
31.12.2019, 21:17
    #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
01.01.2020, 15:51
    #39910327
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер кэша - КАК его максимально использовать?
[quote полудух#22052434]
а код где? Или опять, теоретически использовать процессор, ядра и кэши.
...
Рейтинг: 0 / 0
01.01.2020, 17:28
    #39910340
полудух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер кэша - КАК его максимально использовать?
вопрос скорее общий, чем про какой-то случай...
и я так понимаю, что проц сам порешает, сколько кэша ему надо
т.е. он просто сможет реже сбрасывать старый кэш со структурами и векторами = меньше работы, только и всего
...
Рейтинг: 0 / 0
01.01.2020, 21:13
    #39910351
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер кэша - КАК его максимально использовать?
1) Из рекомендаций... я помню самая ценная - использовать структуры данных в памяти выровнянные (padded)
на границу кратную 64 бит. Еще были какие-то инструкции компиллера наподобие __builtin_prefetch

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

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



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

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

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

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

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

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

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

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

Давай может в топик свой алгоритм и мы на него посмотрим под углом кешей.
...
Рейтинг: 0 / 0
02.01.2020, 16:45
    #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
02.01.2020, 17:00
    #39910446
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер кэша - КАК его максимально использовать?
Да все в порядке. Идет нормальный процесс. Просто Intel слишком долго "починал на лаврах" победителя
а за это время конкуренты подтянулись. Отладили процесс и стали клепать камни не хуже но за меньшие деньги.

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

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

Не можем. См. выше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.01.2020, 18:09
    #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
02.01.2020, 18:37
    #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
02.01.2020, 18:41
    #39910460
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер кэша - КАК его максимально использовать?
Надо смотреть ассемблерный код.

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

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

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

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

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

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


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