3

На нескольких языках (в основном D и Java/Jython) Я заметил, что параллельные программы без очевидного узкого места синхронизации часто плохо масштабируются до 4 или более ядер из-за узких мест управления памятью. Я знаю, что локальные распределители потоков устраняют эту проблему, но большинство реализаций сборщиков мусора по-прежнему необходимо остановить мир. Сбор мусора не смущает параллель (общее состояние должно быть обновлено слишком часто), поэтому использование параллельного коллектора не полностью решает проблему. В случае ручного управления памятью, даже если распределения в основном связаны с локальным распределителем потоков, память все же должна быть освобождена, возможно, из другого потока, кроме того, в котором она была выделена.Недостаток памяти в SMP Parallelism

Есть ли какой-либо язык/runtime/malloc, для которой узкое место управления памятью для SMP-параллелизма является для всех практических целей решаемой проблемой, но при этом позволяет использовать многопоточность традиционного общего адресного пространства?

+0

ли это было показано, что выделение и освобождение является источником проблемы узких мест, которые будут иметь возможное рамочное решение. Или проблема в разделении работы, которая потребует от разработчиков приложений решить эту проблему. –

+0

Отличный вопрос, возможно, вам повезло с Джо Даффи, по крайней мере, в отношении систем, специфичных для Windows (http://www.bluebytesoftware.com/). –

ответ

0

No.

То, что вы описали, как узкое место управления памятью является неотъемлемой чертой, хотя и не желательно один, компьютеров SMP. Рано или поздно требования процессоров для доступа к памяти будут перегружать шину памяти, и обработка замедляется или, в лучшем случае, останавливается быстрее, с добавлением большего количества процессоров.

Я удивлен, что вы обычно сталкиваетесь с этой проблемой только на 4 ядрах, в прошлом я использовал машины SGI Altix, на которых некоторые из моих кодов будут масштабироваться до 256 ядер. Но будет ли ваш код попадать в узкое место на 4 ядра или шахту на 256 или другой код на 2048 (если вы можете найти 2048-ядерный SMP), всегда будет узкое место.

+0

Я думаю, вы неправильно поняли вопрос. Я говорил о распределении памяти/освобождении памяти, а не о доступе к памяти. – dsimcha

+0

@dsimcha: Да, я часто неправильно понимаю вопросы о SO. –

Смежные вопросы