Например, машина имеет два процессора, и каждый процессор имеет два ядра. Я пишу параллельную программу с помощью OpenMP и запускаю ее в 3 потока. Что происходит на оборудовании? Я думаю, что с программой будет работать только один процессор (правильно?), но я не могу представить, как три потока распределяются по двум ядрам. Пожалуйста помоги. Спасибо.
Что происходит на оборудовании при запуске параллельной программы
Ответы (1)
Почти невозможно ответить на ваш вопрос в рамках «ответа» SO - вам нужно будет прочитать о реализации параллельной обработки для конкретной архитектуры вашей машины, если вы хотите получить «настоящий» ответ. Короткий ответ: «это зависит». Но ваша программа может работать на обоих процессорах, на любом из четырех ядер или на всех; Ключ к пониманию здесь заключается в том, что вы можете в какой-то степени контролировать это с помощью структуры вашей программы, но прелесть OMP заключается в том, что обычно «вам должно быть все равно». Если потоки работают одновременно, каждый из них обычно получает ядро; но если им нужен доступ к тому же пространству памяти, это может замедлить вас, поскольку «краткосрочные данные» любят жить в кеше процессора (ядра), а это означает, что происходит много перетасовки данных. Вы получите наибольший прирост производительности, если разные потоки НЕ должны совместно использовать память.
0x00123400
. Через миллисекунду он может сказать, что пока достаточно, сохраните свое состояние и займитесь другими делами. Извините, на ум не приходят немедленные рекомендации книг.
- person Floris; 05.08.2013