Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Тяпничные кеши
|
|||
|---|---|---|---|
|
#18+
Привет друзья! Илья. Сова. Дима. И все-все другие! В продолжение топика Cache miss/hit detector in Java . Ввиду зафлуженности и различных противоречий я решил поднять отдельный топик с вполне себе конкретными вопросами. 1) Кто из вас когда и как использовал оптимизации нацеленные на использование CPU Caches (L1/L2/L3) ? 2) Какое API вы при этом использовали? 3) Какое было железо? 4) Был ли полезный эффект? Приветствуются не только истории разработки но и истории админские, оптимизации БД и истории сетей и протоколов. Ассемблер и С/С++ приветствуется. Хардкод! Moar хардкода! Thnx & Go! Go! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2017, 20:40 |
|
||
|
Тяпничные кеши
|
|||
|---|---|---|---|
|
#18+
Никого нет. Ну ладно. Из Intel-овской документации по Performance. Существуют 4 инструкции - prefetchnta - prefetch0 - prefetch1 - prefetch2 полезные для сабж. Дока у меня старая. И описывает архитектуру до Pentium III. Но новее никак не могу найти. Так что если кто-то найдет - thnx. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 17:18 |
|
||
|
Тяпничные кеши
|
|||
|---|---|---|---|
|
#18+
Лет десять-двенадцать назад рассказывали мне историю про то, как после замены пень-четыре на экстремальный пень-четыре расчёт "одной важной задачи" стал выполняться за три с половиной часа вместо двадцати. Правда, аналогичных "историй успеха" мне слышать не приходилось. С другой стороны, исходя из своего сисадминского опыта, могу обоснованно утверждать, что не надо браться за тонкую оптимизацию, если у вас нет доступа ко всему целевому железу. Глупо профилировать код на MacBook Pro, если целевая система - какой-нибудь Intel Phi. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 17:26 |
|
||
|
Тяпничные кеши
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, ценное замечание. Но мы здесь поскипаем MacBook и Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 17:45 |
|
||
|
Тяпничные кеши
|
|||
|---|---|---|---|
|
#18+
Я раз в 2-3 года меняю железяку, которая несколько раз в сутки сначала качает несколько Гб, затем парсит и на основании результата генерит некие отчеты. Все это на фокспро x32 В эпоху XP было непонятно как 8 Гб задействовать, в итоге линукс, в нем XEN в нем виртуалка с XP и просунутым в нее рамдрайвом на 4 Гб. С появлением 7-ки x64 линукс стал ненужен, фокспро x32 нынче уже внутри десятки, а тормозит инет, поэтому переписывать смысла нет. А прелести кэша проца только в баловстве удалось почувствовать: Эратосфен и акторы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 21:04 |
|
||
|
Тяпничные кеши
|
|||
|---|---|---|---|
|
#18+
Dima T, +1 Эратосфен классная тема была. Может как нибудь еще поднимем. Я-то свой pbfa так и не закончил. Ну по крайней мере дифференциальные кеши так и не сделал. А по сабжу реально документации мало. Чуть позже я пристегну к форуму те документы которые смотрел из своего офлайного архива Intel. Сейчас на сайте у них как-то запутано все. Много левого шлака а полезных доков не видать. И еще чуть позже посмотрю на сайте AMD. Куксенко кст. очень сильно хвалил AMD в части конвейера инструкций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 21:13 |
|
||
|
Тяпничные кеши
|
|||
|---|---|---|---|
|
#18+
mayton, небольшая статейка про кэш и данные, там в конце про управление кэшем пара слов и ссылки на доки. Описанные в статье правильное умножение матриц и hold/cold data splitting реально дают полезный эффект. Это не прямое управление кэшем, а косвенное, но не суть. Также, в многопоточке даёт реальный эффект избавление от false sharing . Несколько раз сталкивался с этим при программировании на C#. Ещё сталкивался со следующим. Код, часто вставляющий и удаляющий элементы из коллекции, как в начале, так и в середине, так и в конце. Казалось бы, связный список будет очень эффективен, за счёт того, что не нужно сдвигать остаток коллекции после удаления элементов в начале. Однако, применение вектора (List<T> в C#) неожиданно оказывалось эффективнее. Причина в том, что данные из RAM копируются в кэш линиями. В итоге с одним элементом списка тянется мусор, а из вектора вся линия - нужные данные. Отвечая на вопросы. Какие оптимизации использовались: правильный выбор алгоритмов и структур данных. Полезный эффект: есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 22:58 |
|
||
|
Тяпничные кеши
|
|||
|---|---|---|---|
|
#18+
petalvik, спасибо. Хорошая статья. Запишу себе в mindmap про MSVC Код: plaintext 1. Еще нашел про GCC. https://gcc.gnu.org/projects/prefetch.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 23:49 |
|
||
|
Тяпничные кеши
|
|||
|---|---|---|---|
|
#18+
Есть мысль которую я думаю уже второй день. Это в разрезе той задачки где парень ищет уникальные слова в справочнике 150Гиг. Фрагмент Hadoop-овской ориниальной библиотеки для работы с Map<String,Boolean> как с нечетким множеством. Код на Java но тут не суть. Он херово будет работать в любом ЯП в силу реализации. алгоритма. Я прокомментирую. Создаем мапу размером в 1.6 млрд бит. Как я вычислил этот размер - отдельная история но он тоже важен. Это соотв. 206 мегабайтам. Код: java 1. 2. Второй аргумент тоже важен. Число 13 - это количество хеш функций типа Мур-Мур (что это за хрень Мур-мур я не знаю но не суть. Нам важно что их 13 и все они дают разные значения для хеша нашего ключа). 13 также вычисляется как особая функция зависящая от наших требований (false positive propability, amount keys). В теле конструктора - ничего интересного. Просто создается биткарта нужного размера. Далее добавление ключа в нечеткое множество. Здесь интереснее. org/apache/hadoop/util/bloom/BloomFilter Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. В цикле (13 итераций) видно что сетятся биты по нашей биткарте. Алгоритм гарантирует что на каждый ключ мы установим через логическое OR битик в той позиции которую вернут нам Мур-мурки. Я не трассировал код но убежден что в силу алгоритмической особенности фильтра все 13 функций дают СОВЕРШЕННО линейное распределение вероятности по всему диапазону битсета. К примеру я сделал Код: java 1. и 13 битиков зажглись на всем диапазоне. Как быть с точки зрения кеша? Если мне проверки принадлежности ключей сейчас не очень нужны - то я мог-бы буферизировать этот поток в массив и потом как-то сортировать и накатывать на весь битсет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 00:15 |
|
||
|
Тяпничные кеши
|
|||
|---|---|---|---|
|
#18+
mayton1) Кто из вас когда и как использовал оптимизации нацеленные на использование CPU Caches (L1/L2/L3) ? 2) Какое API вы при этом использовали? 3) Какое было железо? 4) Был ли полезный эффект? 1) Да, использовал. Во время учебы в классе ...... забыл название. В общем, был у меня в студенческие времена специальный класс по проектированию процессоров. 2) Ассемблер вестимо. Уж если хочешь быть увереным что процессор сделает то что ты хочешь - компиляторы идут на UI. :) 3) Какой-то ARM, толи седьмой, толи еще более древний. 4) Да, когда внимательно просчитываешь порядок ассемблерных инструкций и расположение данных в памяти - можно четко увидеть выигрыш. Иногда до 180% доходило (или падало до 70%, что бывало чаще). Но компиляция Си кода в gnuc с точно указаной целевой платформой и включеной оптимизацией давала стабильные 120%. Это все по отношению к тому-же Си коду собранного для абстрактного x86 и без оптимизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 04:56 |
|
||
|
Тяпничные кеши
|
|||
|---|---|---|---|
|
#18+
petalvikmayton, небольшая статейка про кэш и данные, там в конце про управление кэшем пара слов и ссылки на доки. Еще про статью. Канонический пример с умножением матриц я встречал в книгах по Параллелизму. Забавно но в них кеши вообще не берутся в расчет. Просто ведется разговор о том как удобнее порезать матрицу на слои (как торт) вертикально и горизонтально чтобы перемножить эти слои в 1,2,4 и более потока или процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 09:57 |
|
||
|
Тяпничные кеши
|
|||
|---|---|---|---|
|
#18+
По поводу книжек. Вот что у меня локально на ноуте лежало. Код: plaintext 1. 2. 3. 4. 5. 6. Две из них кажется я уже видел в библиографическом списке той статьи которую дал petalvik. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 16:36 |
|
||
|
Тяпничные кеши
|
|||
|---|---|---|---|
|
#18+
http://www.sql.ru/forum/858632-1/processornyy-kesh?hl=%ea%e5%f8]:[|||||||||]: ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2017, 18:09 |
|
||
|
Тяпничные кеши
|
|||
|---|---|---|---|
|
#18+
Мда... Athlon я уже куда-то сплавил. Хорошая машинка была. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2017, 21:05 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=25&tid=2018090]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 294ms |
| total: | 441ms |

| 0 / 0 |
