Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4]      все
 Re: кто-то сравнивал asm от Qt и обычный?  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
бабушкин зайчик
mayton
Я хочу хотя-бы на элементарном уровне разложить свои данные на 2 кучки. Одна кучка - меня интересует в кеше. На другую мне - плевать.

они всегда будут в кэше...
А ты можешь лишь разложить данные по структурам и подогнать их под cache-line

Вот я-ж про это и говорю. Нет в языке механики управления cache-friendly. Пока сам разработчик не разложит
структуры данных так чтоб было компактно и когерентно - ничего компиллятор не сделает.
2 май 21, 16:51    [22317546]     Ответить | Цитировать Сообщить модератору
 Re: кто-то сравнивал asm от Qt и обычный?  [new]
White Owl
Member

Откуда:
Сообщений: 12733
mayton
White Owl
пропущено...
Почему это вдруг "не создали"? А GCC тебе чем не кеш-френдли? Просто скажи ему для какого процессора надо делать - сделает. Да ему даже можно указывать конкретные размеры кешей, отдельно для L1 и для L2 если у тебя какой-то необычный процессор.

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

mayton
Я хочу хотя-бы на элементарном уровне разложить свои данные на 2 кучки. Одна кучка - меня интересует
в кеше. На другую мне - плевать. По аналогии с Oracle опцией buffer_pool = { KEEP | DEFAULT }
Кучка чего и кучка чего?
Оптимизаторы (того-же gcc) вполне умеют переносить переменные сразу в регистр вместо стека если это возможно (ну или вообще в константу превращать).

Но в принципе, ты же можешь задать что мол размер L1/2 кеша у тебя в 1Мб, что с учетом того что в современных ЦПУ уже и 16Мб не редкость, то ты можешь быть уверен что какой-нибудь часто используемый массивчик меньше этого размера обязательно в кеш попадет.

Тут те-же соображения что и с Ораклом - если у тебя есть достаточно памяти и таблица достаточно маленькая - оракл будет стараться держать ее в кеше. Ключевое слово "стараться". Не обязательно что получиться, конечно, но некоторый шанс на успех будет. Так же и с компиляторами.
3 май 21, 18:21    [22317912]     Ответить | Цитировать Сообщить модератору
 Re: кто-то сравнивал asm от Qt и обычный?  [new]
White Owl
Member

Откуда:
Сообщений: 12733
mayton
бабушкин зайчик
пропущено...

они всегда будут в кэше...
А ты можешь лишь разложить данные по структурам и подогнать их под cache-line

Вот я-ж про это и говорю. Нет в языке механики управления cache-friendly. Пока сам разработчик не разложит
структуры данных так чтоб было компактно и когерентно - ничего компиллятор не сделает.
Да почему "нет" то??
Есть. Вернее, в языке есть способ порушить кеш-дружелюбность (хорошее слово, однако :)
Просто не определяй #pragma pack для структуры и компилятор ее вполне себе оптимизировано для кеша положит. Вот если ты ее принудительно упакуешь как-то, тогда да - потеряешь эту самую кеш-дружелюбность.
3 май 21, 18:26    [22317913]     Ответить | Цитировать Сообщить модератору
 Re: кто-то сравнивал asm от Qt и обычный?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53394

White Owl
Просто не определяй #pragma pack для структуры и компилятор ее вполне себе оптимизировано
для кеша положит.

Увы, не для кэша, а для выборки отдельных полей.

Posted via ActualForum NNTP Server 1.5

3 май 21, 18:51    [22317927]     Ответить | Цитировать Сообщить модератору
 Re: кто-то сравнивал asm от Qt и обычный?  [new]
White Owl
Member

Откуда:
Сообщений: 12733
Dimitry Sibiryakov

White Owl
Просто не определяй #pragma pack для структуры и компилятор ее вполне себе оптимизировано
для кеша положит.

Увы, не для кэша, а для выборки отдельных полей.
Ну это тоже можно порушить - volatile и будет переменная гарантированно в памяти а не в кеше или регистре.
3 май 21, 19:11    [22317935]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4]      все
Все форумы / C++ Ответить