Предпосылки: Я реализовал стохастический алгоритм, который требует случайного упорядочения для лучшей сходимости. Однако это явно разрушает локальность памяти. Я обнаружил, что за счет предварительной выборки данных следующей итерации падение производительности сводится к минимуму.
Я могу предварительно выбрать n строк кэша, используя _mm_prefetch
в простом, в основном OS + компиляторе- портативный мод - а какая длина строки кэша? Прямо сейчас я использую жестко запрограммированное значение 64, которое в настоящее время кажется нормой для процессоров x64, но я не знаю, как это определить во время выполнения, есть ли разумная альтернатива _mm_prefetch
с #define CACHE_LINE_LEN 64
?