2015-03-13 2 views

ответ

10

лабораторий и рабочие являются MathWorks терминологий, и они означают примерно то же самое.

лаборатории или работник, по существу, является экземпляром MATLAB (без переднего конца). Вы запускаете несколько из них, и вы можете запускать их либо на своем собственном компьютере (требуется только Parallel Computing Toolbox), либо удаленно в кластере (требуется Distributed Computing Server). Когда вы выполняете параллельный код (например, цикл parfor, блок spmd или команду parfeval), код выполняется параллельно рабочими, а не вашим основным MATLAB.

Parallel Computing Toolbox изменил и значительно расширил свою функциональность по сравнению с последними выпусками, а также изменил и разработал термины, которые он использует для описания того, как он работает. В какой-то момент было удобно обращаться к ним как к лабораториям при запуске блока spmd, но работники при запуске цикла parfor или работа над задачами и задачами. Я верю, что они сейчас двигаются к тому, чтобы всегда называть их workers (хотя в командах labSend, labReceive,, labindex и numlabs) есть устаревшие.

ядер и процессы различны, и сами по себе не иметь ничего общего с MATLAB.

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

A процесс (ориентировочно) программа, в которой работает ваша операционная система. Хотя ОС одновременно запускает несколько программ, это обычно делает это путем чередования операций с каждого процесса. Но если у вас есть доступ к многоядерной машине, эти операции могут выполняться параллельно.

Таким образом, вы, как правило, хотели бы сказать MATLAB, чтобы запустить одного работника для каждого из ядер, которые у вас есть на вашем компьютере. Каждый из этих рабочих будет запускаться как процесс ОС, и в итоге будет выполняться один рабочий на ядро ​​параллельно.

Вышеприведенное упрощено, но, надеюсь, вы получите примерно точную картину.


Редактировать перенёс описание потоков из комментария к ответу.

Темы что-то другое. Темы также не имеют ничего общего с MATLAB.

Вернемся к процессам на мгновение. Одна вещь, о которой я не упоминал выше, заключается в том, что ОС выделяет каждому процессу определенный блок памяти, который другие процессы не могут коснуться, так что им сложно взаимодействовать друг с другом и испортить вещи.

A thread как процесс в процессе - это поток операций, выполняемых процессом. Как правило, операции из каждого потока будут чередоваться, но если у вас несколько ядер, они также могут быть распараллелены по всем ядрам.

Однако, в отличие от процессов, все они разделяют блок памяти, что вполне нормально, потому что все они управляются одной и той же программой, поэтому это должно иметь меньшее значение, если им разрешено взаимодействовать.

Regular MATLAB автоматически использует несколько потоков для распараллеливания множество встроенных операций (например, умножение матриц, svd, eig, линейная алгебра и т.д.) - это без вас делать что-либо, и будет ли или нет у вас есть Parallel Computing Toolbox.

Однако рабочие MATLAB выполняются как один процесс с одним потоком, поэтому у вас есть полный контроль над распараллеливанием.

+0

Я считаю, что вы только что получили это место - я называю рабочих «лабораториями» только в контексте блока «spmd». Хотя, конечно, в R2006a была введена терминология для так называемых «параллельных заданий» и когда еще не было блока 'spmd', который не появился до R2008b. – Edric

+0

Являются ли лаборатории и нитки синонимами? – user2574723

+0

Описание потоков см. В редакции к моему ответу. –

1

Я думаю, что рабочие являются синонимами процессов. Термин «сердечники» связан с оборудованием. Labs - это механизм, который позволяет рабочим общаться друг с другом. У каждого работника есть как минимум одна лаборатория, но может владеть больше.

Эта часть дискуссии может быть полезным

http://www.mathworks.com/matlabcentral/answers/5529-mysterious-behavior-in-parfor-i-know-sounds-basic-but

Я надеюсь, что кто-то здесь будет доставлять больше информации в более строгим образом