Скорость многоядерного ядра - PullRequest
1 голос
/ 15 марта 2011

Я бы посмотрел, чтобы найти скорость связи между двумя ядрами компьютера.

Я нахожусь на самых ранних стадиях планирования массового распараллеливания последовательной программы, и мне нужно подумать о скорости сетевой коммуникации и скорости обмена данными между ядрами на одном процессоре.

Ubuntu Linux, вероятно, предоставляет какой-то способ просмотра информации такого рода? Я бы подумал, что скорость колеблется .. Мне просто нужно какое-то среднее значение. Мне сейчас нужно что-то написать, и было бы неплохо поговорить об этих соотношениях.

Есть идеи?

Спасибо.

Ответы [ 4 ]

4 голосов
/ 15 марта 2011

Согласно этому эталону: http://www.dragonsteelmods.com/index.php?option=com_content&task=view&id=6120&Itemid=38&limit=1&limitstart=4 (последнее изображение на странице)

На Intel Q6600 задержка между ядрами составляет 32 наносекунды. Задержка сети измеряется в миллисекундах, которые составляют 1 000 000 миллисекунд / наносекунда. «Хорошая» задержка в сети считается около 100 мс или меньше, поэтому, учитывая, что для межъядерной задержки разница составляет порядка 1 миллиона раз.

Помимо задержки, хотя есть и пропускная способность, которую следует учитывать. Опять-таки, на основе связанной закладки, эталона для этой конкретной конфигурации, пропускная способность между ядрами составляет около 14 ГБ / с, тогда как в соответствии с этим: http://www.tomshardware.com/reviews/gigabit-ethernet-bandwidth,2321-3.html, реальный тест подключения к сети Gigabit Ethernet показывает около 35,8 МБ / с, поэтому разница там меньше, только примерно в 500 раз быстрее с точки зрения пропускной способности, а не в 1 000 000 раз с задержкой. В зависимости от того, что более важно для вашего приложения, это может изменить ваши номера.

4 голосов
/ 15 марта 2011

Скорость сети измеряется в миллисекундах для Ethernet (5–100 долл. США / порт) или в микросекундах для специализированного оборудования MPI, такого как Dolphin на Myrintet (~ 1 тыс. Долл. США / порт). Межъядерные скорости измеряются в наносекундах, так как данные копируются из одной области памяти в другую, а затем некоторый сигнал отправляется из одного процессора в другой (данные будут защищены от одновременного доступа с помощью мьютекса или полной очереди ).

Итак, с помощью вычисления back'o'the'napkin соотношение составляет 1: 10 ^ 6.

1 голос
/ 15 марта 2011

Межъядерная связь будет значительно быстрее. Почему?

  1. сетевой уровень накладывает огромные накладные расходы на пакеты, адресацию, обработку конфликтов и т. Д.
  2. физические расстояния будут оказывать значительное влияние

Как измерить скорость обмена данными между ядрами, будет очень сложно. Но, учитывая вышесказанное, я думаю, что это избыточный расчет.

0 голосов
/ 15 марта 2011

Это нетривиальная вещь для поиска.Скорость передачи данных между двумя ядрами полностью зависит от приложения.Это может зависеть от любого (или всех) из - скорости доступа к регистру, тактовой частоты ядер, скорости системной шины, задержки вашего кэша, задержки вашей памяти и т. Д., И т. Д., И т. Д. ВКороче говоря, запустите тест или вы будете гадать в темноте.

...