История изменений
Исправление LINUX-ORG-RU, (текущая версия) :
Диванная аналитика.
Попробуй вместо блоба data
нааллоцировать отдельных line
. Тут линейная локальность данных ненужна и даже вредна, так как она полезна когда ты текущей итерацией кешируешь часть будующих данных на следующую итерацию в однопоточке, а когда операции явно раскидываются по ядрам, выборка из общего data
будет такова что будет захватываться части общих данных просто из за зармера кеш линии и один будет ждать второго и так далее так как должна быть сохранена консистентность памяти ведь ты туда пишешь, а не просто читаешь, вот если бы просто читал то да всё был бы ок. Или выравнивай line
по размеру кеш линии проца. Так что-бы размер line
был ему кратен если это возможно в твоём алгоритме. Да ты потеряешь время на аллокациях. ИМХО
Исправление LINUX-ORG-RU, :
Диванная аналитика.
Попробуй вместо блоба data
нааллоцировать отдельных line
. Тут линейная локальность данных ненужна и даже вредна, так как она полезна когда ты текущей итерацией кешируешь часть будующих данных на следующую итерацию в однопоточке, а когда операции явно раскидываются по ядрам, выборка из общего data
будет такова что будет захватываться части общих данных просто из за зармера кеш линии и один будет ждать второго и так далее так как должна быть сохранена консистентность памяти. Или выравнивай line
по размеру кеш линии проца. Так что-бы размер line
был ему кратен если это возможно в твоём алгоритме. Да ты потеряешь время на аллокациях. ИМХО
Исправление LINUX-ORG-RU, :
Диванная аналитика.
Попробуй вместо блоба data
нааллоцировать отдельных line
. Тут локальность данных ненужна и даже вредна, так как она полезна когда ты текущей итерацией кешируешь часть будующих данных на следующую итерацию в однопоточке, а когда операции явно раскидываются по ядрам, выборка из общего data
будет такова что будет захватываться части общих данных просто из за зармера кеш линии и один будет ждать второго и так далее так как должна быть сохранена консистентность памяти. Или выравнивай line
по размеру кеш линии проца. Так что-бы размер line
был ему кратен если это возможно в твоём алгоритме. Да ты потеряешь время на аллокациях. ИМХО
Исправление LINUX-ORG-RU, :
Диванная аналитика.
Попробуй вместо блоба data
нааллоцировать отдельных line
. Тут локальность данных ненужна и даже вредна, так как она полезна когда ты текущей итерацией кешируешь часть будующих данных на следующую итерацию, а когда операции явно раскидываются по ядрам, выборка из общего data
будет такова что будет захватываться части общих данных просто из за зармера кеш линии и один будет ждать второго и так далее так как должна быть сохранена консистентность памяти. Или выравнивай line
по размеру кеш линии проца. Так что-бы размер line
был ему кратен если это возможно в твоём алгоритме. Да ты потеряешь время на аллокациях. ИМХО
Исправление LINUX-ORG-RU, :
Попробуй вместо блоба data
нааллоцировать отдельных line
. Тут локальность данных ненужна и даже вредна, так как она полезна когда ты текущей итерацией кешируешь часть будующих данных на следующую итерацию, а когда операции явно раскидываются по ядрам, выборка из общего data
будет такова что будет захватываться части общих данных просто из за зармера кеш линии и один будет ждать второго и так далее так как должна быть сохранена консистентность. Да ты потеряешь время на аллокациях. ИМХО
Исправление LINUX-ORG-RU, :
Попробуй вместо блоба data
нааллоцировать отдельных line
. Тут локальность данных ненужна и даже вредна, так как она полезна когда ты текущей итерацией кешируешь часть будующих данных на следующую итерацию, а когда операции явно раскидываются по ядрам, выборка из общего data
будет такова что будет захватываться части общих данных просто из за зармера кеш линии и один будет ждать второго и так далее так как должна быть сохранена консистентность. ИМХО
Исходная версия LINUX-ORG-RU, :
Попробуй вместо блоба data
нааллоцировать отдельных line
. Тут локальность данных ненужна и даже вредна. ИМХО