1. Сначала ты пишешь о BurntSushi, а потом BurntSushi пишет тебе https://github.com/BurntSushi/memchr/pull/114. Статье указанной в PR почти год, а всё ещё раз в несколько месяцев меня кто-нибудь тегает.
2. Может, кто-то знает литературу по кешам, где eviction policies как-нибудь учатся по тому насколько тяжело будет бекенду отвечать на запрос промаха? Ситуация такая: иметь 90% попаданий лучше, чем 85% попаданий, но если 10% промахов нагибают бекенд в два раза больше, то кажется можно выбрать второй. Хотелось бы узнать, умеет ли что-то наука тут или есть ли какие-нибудь датасеты по тому как ведут себя кеши и их бекенды.
3. Поизучал я тут Iguana compression. Заявленные цифры действительно хорошо выглядят на реальных тестах. Сок Iguana заключается в том, что они очень много используют предпосчитанных масок вместе с инструкцией VPTERNLOGD. Эта инструкция расшифровывается как vector packed ternary logic. Фактически умеет делать тернарные операторы по битам 512 битных регистров -- по маске брать биты из одного или другого регистра, чего не было так быстро до AVX-2. Также ещё используются VPCOMPRESSD и тем самым хорошо умеет упаковывать биты как PEXT для скаляров. По формату им надо переводить base254 в base256 и обратно, что тоже делается табличками. В целом ощущение, что AVX-512 сейчас очень сильно растёт. Скажем, avx-512-sort и avx-512-partial-sort достаточно хорошо обгоняют мою библиотеку https://github.com/danlark1/miniselect -- хотя моя дала много буста тому же кликхаусу. Но пока всё для чисел, для более сложных компараторов не так всё просто.
Скептически долгое время относился к AVX-512, но кажется начинаем понимать как использовать для реальных задач. Интересные прорывы есть.
2. Может, кто-то знает литературу по кешам, где eviction policies как-нибудь учатся по тому насколько тяжело будет бекенду отвечать на запрос промаха? Ситуация такая: иметь 90% попаданий лучше, чем 85% попаданий, но если 10% промахов нагибают бекенд в два раза больше, то кажется можно выбрать второй. Хотелось бы узнать, умеет ли что-то наука тут или есть ли какие-нибудь датасеты по тому как ведут себя кеши и их бекенды.
3. Поизучал я тут Iguana compression. Заявленные цифры действительно хорошо выглядят на реальных тестах. Сок Iguana заключается в том, что они очень много используют предпосчитанных масок вместе с инструкцией VPTERNLOGD. Эта инструкция расшифровывается как vector packed ternary logic. Фактически умеет делать тернарные операторы по битам 512 битных регистров -- по маске брать биты из одного или другого регистра, чего не было так быстро до AVX-2. Также ещё используются VPCOMPRESSD и тем самым хорошо умеет упаковывать биты как PEXT для скаляров. По формату им надо переводить base254 в base256 и обратно, что тоже делается табличками. В целом ощущение, что AVX-512 сейчас очень сильно растёт. Скажем, avx-512-sort и avx-512-partial-sort достаточно хорошо обгоняют мою библиотеку https://github.com/danlark1/miniselect -- хотя моя дала много буста тому же кликхаусу. Но пока всё для чисел, для более сложных компараторов не так всё просто.
Скептически долгое время относился к AVX-512, но кажется начинаем понимать как использовать для реальных задач. Интересные прорывы есть.