'mpirun-np N': что, если и' больше, чем мои физические ядра?

У Вас нет значения PATH набор переменной среды для включения безотносительно каталога исполняемого файла HelloWorld живет в.

Предположим, Вы использовали cd для получения до каталога можно выполнить HelloWorld с этой командой: ./HelloWorld

Оболочкам Unix назвали переменную PATH, который является a :- разграниченный список каталогов, в которых можно посмотреть, когда пользователь дает команду без полностью определенного пути (/usr/bin/ls полностью определяется: это запускается в / и концы в ls, но ls не полностью определяется отдельно). Если у Вас нет записи . в PATH, необходимо явно использовать ./ в начале команды заставить файл того имени в текущем каталоге выполняться.

5
27.09.2017, 14:06
2 ответа
  1. Они будут все работать одновременно
  2. Загрузка будет распределена Вашей ОС, которая будет работаться на стольких же ядер, сколько там доступны. Время не могло бы быть пропорционально количеству потоков. Вот глупый пример почему. Предположите, что у Вас есть одно задание, которое Вы хотите сделать три раза, и тому же количеству времени требуется каждый раз (1 единица времени). У Вас есть два ядра. Предположите, что нет ничего иного выполнения.
    • Заключите тот в корпус: у Вас только есть один поток. В этом случае поток работает на одном ядре, и все это берет 3 единицы времени для завершения. Общее время: 3
    • Случай два: у Вас есть два потока. В одной единице времени задание сделано дважды (однажды на ядро). Затем необходимо ожидать целая единица времени третьего повторения для завершения. Общее время: 2
    • Случай 3: у Вас есть 3 потока. Ваша ОС попытается сделать все справедливым, и так разделит время равномерно между тремя процессами. К тому времени конец единицы 1, НИ ОДИН из них не будет завершен. Единицей 2 они будут все сделаны. (см. случай выше). Общее время: 2

Запуск большего количества потоков действительно не повредит Вашу производительность очень (стоимость запуска потока составляет меньше чем 1 МБ), но это не могло бы помочь также.

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

2
27.01.2020, 20:41

От ограниченного тестирования и моего (не очень глубоко, хотя использовавший его несколько раз) понимание параллельного вычисления:

  1. Они будут работать одновременно.

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

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

1
27.01.2020, 20:41

Теги

Похожие вопросы