Разница между терминологиями параллельных вычислений MATLAB
Я хочу знать различия между
1. labs
2. workers
3. cores
4. processes
это просто семантика или они все разные?
2 ответов
labs и работники являются терминологиями MathWorks, и они означают примерно одно и то же.
A лаборатории или работник по существу является экземпляром MATLAB (без интерфейса). Вы запускаете несколько из них, и вы можете запустить их на своем компьютере (требуется только Parallel Computing Toolbox) или удаленно на кластере (требуется сервер распределенных вычислений). При выполнении параллельного кода (например,parfor
петля,spmd
блок, или parfeval
command), код выполняется параллельно рабочими, а не вашим основным MATLAB.
Parallel Computing Toolbox изменил и развил свою функциональность довольно много за последние выпуски, а также изменил и разработал терминологию, которую он использует для описания того, как он работает. В какой-то момент было удобно называть их лабораториями при запуске spmd
блок, но рабочие при запуске parfor
loop или работа над заданиями и задачи. Я считаю, что теперь они движутся к тому, чтобы всегда называть их workers
(хотя есть наследие в командах labSend
, labReceive
, labBroadcast
, labindex
и numlabs
).
ядра и процессы отличаются, и сами не имеют ничего общего с MATLAB.
A базовый является физической частью вашего процессора - у вас может быть двухъядерный или четырехъядерный процессор на вашем настольном компьютере, или у вас может быть доступ к действительно большому компьютеру с гораздо большим, чем это. Имея несколько ядер, ваш процессор может делать несколько вещей одновременно.
A процесс это (грубо) программа, которая работает в вашей операционной системе. Хотя ОС запускает несколько программ одновременно, она обычно делает это путем чередования операций из каждого процесса. Но если у вас есть доступ к многоядерной машине, эти операции могут выполняться параллельно.
так обычно хотите сказать MATLAB, чтобы запустить одного работника для каждого из ядер, которые у вас есть на вашем компьютере. Каждый из этих работников будет запускаться как процесс ОС, и в конечном итоге будет выполняться по одному работнику на ядро параллельно.
выше довольно упрощено, но я надеюсь, что дает примерно точную картину.
редактировать: перемещено описание потоков из комментария в ответ.
темы что-то другое. Нити также сами по себе не имеют ничего общего с MATLAB.
давайте вернемся к процессам на мгновение. Одна вещь, о которой я не упоминал выше, заключается в том, что ОС выделяет каждому процессу определенный блок памяти, который другие процессы не должны касаться, так что им трудно взаимодействовать друг с другом и путать вещи.
A нить похоже на процесс внутри процесса-это поток операций, которые запускает процесс. Как правило, операции из каждого потока будет чередоваться, но если у вас несколько ядер, они также могут быть распараллелены по ядрам.
однако, в отличие от процессов, все они имеют общий блок памяти, что нормально, потому что все они управляются одной и той же программой, поэтому должно иметь значение меньше, если им разрешено взаимодействовать.
Regular MATLAB автоматически использует несколько потоков для распараллеливания многих встроенных операций (таких как умножение матрицы, svd
, eig
, линейная алгебра и т. д.) - это без вас ничего не делает, и есть ли у вас параллельный вычислительный инструментарий.
однако рабочие MATLAB выполняются как один процесс с одним потоком, поэтому вы полностью контролируете распараллеливание.
Я думаю, что рабочие являются синонимами процессов. Термин "ядра" относится к аппаратному обеспечению. Labs-это механизм, который позволяет работникам общаться друг с другом. Каждый работник имеет по крайней мере одну лабораторию, но больше.
эта часть обсуждения может быть полезной
Я надеюсь, что кто-то здесь сможет передать больше информации в более строгий способ