powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / как правильно хранить значения в объекте с т.з. кеша
25 сообщений из 56, страница 2 из 3
как правильно хранить значения в объекте с т.з. кеша
    #39996235
mayton
Выровняй структуры данных на кешлинию.

а чего ты от этого ждёшь, какой результат? это первое что надо делать с любой структурой - данные в ней выровнять. И чем меньше структура, тем лучше. Это аксиомы.
А у меня там вообще ushort.
И где я тут "волшебный набор рецептов" спрашивал? Я задаю конкретные вопросы, а ты льёшь воду.
Демотивирует твоя вода.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996236
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТы попробовал? Что-то получилось?

А зачем? Он вбросил, а там хоть не рассветай.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996237
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020Я задаю конкретные вопросы

На которые даёт конкретные ответы Intel Advisor. Ставь и смотри.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996239
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020
mayton
Выровняй структуры данных на кешлинию.

а чего ты от этого ждёшь, какой результат? это первое что надо делать с любой структурой - данные в ней выровнять. И чем меньше структура, тем лучше. Это аксиомы.
А у меня там вообще ushort.
И где я тут "волшебный набор рецептов" спрашивал? Я задаю конкретные вопросы, а ты льёшь воду.
Демотивирует твоя вода.

Мне кажется что я где-то был непонятен. Я говорю. Нет. Я утверждаю! std::vector аллоцирует
старт массива не по границе кеш-линии. И я тебе, дорогой топик стартер даю первый совет.
Иди и проверь. Где ты выделяешь первый объект? Он кратный кеш-линии или нет?

У тебя размер объекта - хороший. Он - кратный кеш-линии. Осталось просто проверить offset
всей коллекции. Чтоб гарантировать что мы не разрезаем 1-й и 4-й структурный объект по границе
кеш-линии.

Но почему-то этот простой вопрос который просто требует публикации физического адреса ссылки
у тебя вызвал упорное молчание и нежелание ничего делать!

Тогда зачем тебе топик?! Алексей?! Зачем тебе sql.ru?

Если мой рецепт плох или неверен - так ты скажи. Он плох по тому-то и тому-то. Но тыж просто сидишь
и хочешь что-то высидеть.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996241
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020
mayton
Выровняй структуры данных на кешлинию.

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

Это разные вещи. Для уменьшения размера достаточно #pragma pack(push, 1) , а кэшлиния это совсем о другом. Загугли хотя бы что такое кэшлиния, раз уж кэшем интересуешься.
Можешь мой топик почитать, правда там я немного другое изучал.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996264
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Будет второй вариант. Задействовать 2-потока алгоритм таким образом чтоб L1 кеши не пересекались по данным.
L3 - пускай пересекается это норм.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996271
лять ещё один, чё за вёдра с водой опять полились, нормально же общались!
кэш-линия для передачи байт из памяти в кэш и обратно, чё вы там гуглить собрались, это известно на второй неделе в C/C++
Это тебе надо гуглить и по рукам надавать за советы про #pragma pack. Мало того, что это костыль, так ещё если будет atomic, то могут возникнуть ТОРМОЗА внезапно, ибо если atomic распадается на 2 линии, то становится ОЧЕНЬ медленным (разница до 300 раз!).
Dima T
кэшлиния это совсем о другом

о каком ещё нахрен "другом"?! Он говорит про то что все вокруг дебилы и не выравнивают структуры, а он самый умный и на мой вопрос "как именно отработает кэш в данном случае, где мы шлём в другую ф-ю бла-бла" он мне рассказывает про то, чтобы я срочно проверил, а не передам ли я по кэш-линии 62 байта вместо 64х... и вот это ответ на мой вопрос.
Я про это спрашивал? Да мне вообще насрать на эти 2 байта. И где тут про "другое", а не про кэш-линии?
Человек с 15000 сообщениями, ты потрясающий! (с)
Dimitry Sibiryakov
А зачем? Он вбросил, а там хоть не рассветай.

Это у тебя регулярные неконтролируемые вбросы в моих темах. Неконтролируемые и неудержимые.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996290
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020
о каком ещё нахрен "другом"?!

Успокойся и не хами, или еще раз забанят. Не хочешь понимать о чем тебе говорят - твое право, но тут не школа, учить тут никто не обязан.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996386
Dima T
Алексей Роза 2020
о каком ещё нахрен "другом"?!

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

Конечно забанят, чему ещё ты можешь научить, кроме как цепляться к словам и сливаться?
Я в инете с 95-го года. И насмотрел как на баны, так и на форумных флудерастов. Напугал ежа голой жопой
Dima T
учить тут никто не обязан

А читать то хотя бы обязан? Вопрос стоял "надо разобраться". А ты пришёл в тему, где жуют детали, в которых ты не спец, и умничаешь за мой счёт.
Вы два Димы друг друга стоите, могли бы игнорировать мои темы и экономить нервы и время.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996387
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020
Вопрос стоял "надо разобраться"
Кому стоял и кому надо?
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996393
Anatoly Moskovsky
Алексей Роза 2020,

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

Если конечно это не тот знаменитый массив в триллион записей ))

по утру таки вспомнил, о чём речь )
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
struct S
{
    uint64_t u; // 8
    double d;   // 8
    int i;      // 4
    float f;    // 4
};

Размер структуры S равен 24 байтам. Мой процессор (Intel Core i7) имеет 32KB кэш на ядро с 64B кэш-линией (cache line).
Это значит, что при запросе данных из памяти в одну кэш-линию полностью поместятся только две структуры S.
В первом тесте я читаю только одно int поле, т.е. при одном обращении к памяти в одной кэш-линии будет только 2 (иногда 3) нужных нам поля.
Во втором тесте я читаю такое же int значение, но из вектора. std::vector гарантирует последовательность данных.
Это означает, что при обращении к памяти в одной кэш-линии будет 16 (64b / sizeof(int) = 16) нужных нам значений.
Получается, что во втором тесте мы обращаемся к памяти реже. A обращение к памяти, как известно, является слабым звеном в современных процессорах.


Локальные переменные всегда наилучший вариант, чтобы смежные данные попали в один кэш.
Т.е. наилучшим вариантом будет в отдельной ф-и собрать всё что надо локально и просчитать весь вектор на месте.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996403
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020
А читать то хотя бы обязан? Вопрос стоял "надо разобраться". А ты пришёл в тему, где жуют детали, в которых ты не спец, и умничаешь за мой счёт.
Вы два Димы друг друга стоите, могли бы игнорировать мои темы и экономить нервы и время.

Тебе подсказывают направление в котором разбираться, но похоже тебе это не интересно. Наверно ты прав, не стоит тратить на тебя время.

На прощанье, если ты до сюда дочитал: кэшлиния это не любые 64 байта, а только те, адрес которых кратен 64-м (0...63, 64...127 и т.д.), поэтому структура например в 16 байт легко может оказаться в двух соседних кэшлиниях.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996457
Dima T, да, ты прав, я темы создают не чтобы проблемы решать и развиваться, а специально чтобы вас всех тут собрать... дабы вы ответили за свои прегрешения (с)
Таки зачем кратен? Можно и 60 байтов передать... и 2. Можно передавать много структур и да, они могут порваться. Плевать. Не тот случай.
А если ты передаёшь адрес ячейки из массива, то в кэш-линию попадут все последующие/соседние ячейки, которые туда влезут. Такое упреждающее последовательное кэширование (предсказуемость рулит).
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996479
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пригрешения?
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996529
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020Локальные переменные всегда наилучший вариант, чтобы смежные данные попали в один кэш.

Вот только попадание в один кэш это не всегда лучший вариант. Требуется ещё одна мелочь:
не допускать попеременного чтения и записи в одну линию. То есть из одной линии - только
читать, а в другую - только писать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996746
Dimitry Sibiryakov
Вот только попадание в один кэш это не всегда лучший вариант. Требуется ещё одна мелочь:
не допускать попеременного чтения и записи в одну линию. То есть из одной линии - только читать, а в другую - только писать.

чё-то я не припомню таких должностных обязанностей в уставе программиста
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996778
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020
Dimitry Sibiryakov
Вот только попадание в один кэш это не всегда лучший вариант. Требуется ещё одна мелочь:
не допускать попеременного чтения и записи в одну линию. То есть из одной линии - только читать, а в другую - только писать.

чё-то я не припомню таких должностных обязанностей в уставе программиста

Тебе помогают по топику а ты - фыркаешь.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996807
во1, если я фыркаю, значит так нужно. Каким боком тебя это касается?
во2, я интересуюсь подробностями, а не фыркаю.
в3, ты уже не первый раз пытаешься на меня повесить какие-то свои домыслы.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996819
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(поднимая руки)

Ну конешно меня, модератора С++ не касается.

Окей я больше этот топик не буду комментировать. Развлекайся.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996831
мало называться модератором, взял бы да объяснил, что за
Dimitry Sibiryakov
не допускать попеременного чтения и записи в одну линию

нормально я спросил без фырканий, нечего выдумывать.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996851
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотри внимательно что я квотировал.

Растеряешь последних помогающих.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996878
ты свои последние 5 сообщений прочитай, помощник
Я прекрасно вижу, что ты пишешь, не волнуйся. Проблема вовсе не в этом.
а вот это ты мне зачем написал, не расскажешь?
mayton
У тебя размер объекта - хороший. Он - кратный кеш-линии. Осталось просто проверить offset всей коллекции. Чтоб гарантировать что мы не разрезаем 1-й и 4-й структурный объект по границе кеш-линии.


Анатолий Московский написал хороший совет.
Dima T и Дима Сибиряк дали пару раз инфу, но какими-то кусками, будто всей картины сами не видят.
А потом скатились во флуд и оффтоп.
Вот и вся помощь.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996882
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочешь чтобы я участвовал?

У меня - ощущение зыбкого кошмара. Ты - вроде - бы знаком с системным программированием.
И когда я и Дима тебе говорим что аллокация памяти (malloc/new) может идти по границе параграфа (16 байт)
а нам этого недостаточно. Нам нужна аллокация по границе кеш-линии (64 байт) я надеюсь что ты
меня понял как художник художника. Или как инженер инженера.

И когда я тебя попросил сходить и посмотреть на физические адреса - я ожидал ответа. Дескыт да. Вектор аллоцироан как надо.

Леша? Получилось? Или нет? Ты в ответ завис. И переключился на другое.
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996884
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020взял бы да объяснил, что за

Какое слово тебе непонятно?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как правильно хранить значения в объекте с т.з. кеша
    #39996896
mayton
И когда я тебя попросил сходить и посмотреть на физические адреса - я ожидал ответа. Дескыт да. Вектор аллоцироан как надо.

адрес первого: 7eb0
последнего: 8096
итого: 486 байт / 81 объект = 6 байт на штуку (там 3 шорта)
6 байт не влезут в кэш-линию, будет хвост в другой
но для этого не нужно знать адреса.
А для чего нужно?
Dimitry Sibiryakov
Алексей Роза 2020взял бы да объяснил, что за

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


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