Я хочу знать разницу междуразница между MATLAB параллельных вычислений терминологическая
1. labs
2. workers
3. cores
4. processes
это просто семантика или все они разные?
Я хочу знать разницу междуразница между MATLAB параллельных вычислений терминологическая
1. labs
2. workers
3. cores
4. processes
это просто семантика или все они разные?
лабораторий и рабочие являются 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 выполняются как один процесс с одним потоком, поэтому у вас есть полный контроль над распараллеливанием.
Я думаю, что рабочие являются синонимами процессов. Термин «сердечники» связан с оборудованием. Labs - это механизм, который позволяет рабочим общаться друг с другом. У каждого работника есть как минимум одна лаборатория, но может владеть больше.
Эта часть дискуссии может быть полезным
Я надеюсь, что кто-то здесь будет доставлять больше информации в более строгим образом
Я считаю, что вы только что получили это место - я называю рабочих «лабораториями» только в контексте блока «spmd». Хотя, конечно, в R2006a была введена терминология для так называемых «параллельных заданий» и когда еще не было блока 'spmd', который не появился до R2008b. – Edric
Являются ли лаборатории и нитки синонимами? – user2574723
Описание потоков см. В редакции к моему ответу. –