Я думал о том, чтобы иметь мьютекс и данные для каждого кэша (или для каждого ядра, предполагая, что каждое ядро имеет свой собственный кэш в целевой архитектуре), чтобы попытаться оптимизировать параллельный алгоритм с целью минимизации очистки кэша и пропусков между ядрами. Цель, которую я имел в виду, состояла в том, чтобы попытаться уменьшить количество кеш-памяти для других потоков и обеспечить больше параллелизма и производительности в системе. Какова обычная стратегия достижения чего-то подобного в C ++? Как я могу попытаться определить, к какой строке кэша поток будет обращаться к мьютексу и данным потока, хранящимся в кеше, ближайшем к этому потоку?
Я слышал о людях, которые делают подобные вещи с параллельными алгоритмами, но я понятия не имею, с чего начать пытаться реализовать что-то подобное.
Например, я вижу это в справочных страницах Linux — http://man7.org/linux/man-pages/man2/getcpu.2.html, это заставляет меня думать, что такого рода оптимизации выполняются на практике.
(Это может быть слишком широкий вопрос. Я буду готов переместить его на другой сайт, изменить теги или полностью отказаться от вопроса, если люди так думают, дайте мне знать)
Задача ещё не решена.
Других решений пока нет …