различное поведение при использовании разного количества многоядерных работников - PullRequest
10 голосов
/ 23 августа 2010

Я немного поиграюсь с моей программой (пытаюсь сделать многоядерные несколько частей), и я заметил, что «история процессора» выглядит немного по-другому, в зависимости от того, сколько рабочих я запускаю. Кажется, что 2–4 рабочих создают «стабильный» рабочий процесс, однако 5–8 рабочих работают с ошибками (от нуля до максимума, см. Рисунки). Я должен отметить, что все запуски начинались с «гладкой» максимальной мощности (например, 2 ядра только с 25%) и начали проявлять неустойчивое поведение только через минуту или около того. В чем дело? У меня есть 4-ядерный процессор, и вы думаете, это поведение может быть связано с этим фактом?

Надеюсь, вы сможете увидеть фотографии.

2 рабочих 2 workers

3 рабочих 3 workers

4 рабочих 4 workers

5 рабочих 5 workers

6 рабочих 6 workers

7 рабочих 7 workers

8 рабочих 8 workers

1 Ответ

11 голосов
/ 24 августа 2010

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

Для R я отложил гиперпоточность на моем компьютере. Это просто не помогает, наоборот. При работе только с одним потоком, как это обычно происходит с R, вы теряете емкость (максимум составляет 12,5% вместо 25%).

...