2015-03-13 24 views

risposta

10

laboratori e lavoratori sono MathWorks terminologie, e significano grosso modo la stessa cosa.

Un laboratorio o un lavoratore è essenzialmente un'istanza di MATLAB (senza un front-end). Ne esegui alcuni e puoi eseguirli sul tuo computer (richiede solo Parallel Computing Toolbox) o in remoto su un cluster (richiede Distributed Computing Server). Quando si esegue il codice parallelo (ad esempio un ciclo parfor, un blocco spmd o un comando parfeval), il codice viene eseguito in parallelo dagli operatori, anziché dal MATLAB principale.

Parallel Computing Toolbox ha cambiato e sviluppato la sua funzionalità molto rispetto alle versioni più recenti e ha anche modificato e sviluppato le terminologie utilizzate per descrivere il modo in cui funziona. Ad un certo punto è stato utile riferirsi a loro come laboratori quando si esegue un blocco spmd, ma lavoratori quando si esegue un ciclo parfor o si lavora su lavori e attività. Credo che si stiano muovendo ora verso il loro sempre chiamandoli workers (sebbene ci sia un'eredità nei comandi labSend, labReceive, labBroadcast, labindex e numlabs).

nuclei e processi sono diversi, e non sono di per sé nulla a che fare con MATLAB.

A core è una parte fisica del processore: potresti avere un processore dual-core o quad-core nel tuo computer desktop, oppure potresti avere accesso a un computer molto grande con molti altri ancora. Avendo più core, il tuo processore può fare più cose contemporaneamente.

A processo è (approssimativamente) un programma che il sistema operativo è in esecuzione. Sebbene il sistema operativo esegua più programmi contemporaneamente, generalmente lo fa interlacciando le operazioni da ciascun processo. Ma se si ha accesso a una macchina multi-core, queste operazioni possono essere eseguite in parallelo.

Quindi, in genere, si vuole dire a MATLAB di avviare un worker per ciascuno dei core presenti sulla macchina. Ognuno di questi lavoratori verrà eseguito come processo dal sistema operativo e finirà per essere eseguito un lavoratore per core in parallelo.

Quanto sopra è abbastanza semplificato, ma spero che dia un'immagine approssimativa.


Edit: spostato descrizione di fili da un commento alla risposta.

I fili sono di nuovo diversi. I thread non sono in se stessi niente a che fare con MATLAB.

Torniamo ai processi per un momento. Una cosa che non ho menzionato sopra è che il sistema operativo assegna ad ogni processo uno specifico blocco di memoria che altri processi non dovrebbero essere in grado di toccare, in modo che sia difficile per loro interagire tra loro e fare confusione.

A thread è come un processo all'interno di un processo, è un flusso di operazioni in cui viene eseguito il processo. In genere, le operazioni da ogni thread sono intercalate, ma se si dispone di più core, possono anche essere parallelizzati tra i core.

Tuttavia, a differenza dei processi, tutti condividono un blocco di memoria, il che è OK perché sono tutti gestiti dallo stesso programma, quindi dovrebbe essere meno importante se gli è consentito interagire.

regolare MATLAB utilizza automaticamente più thread per parallelizzare molte operazioni built-in (come moltiplicazione di matrici, svd, eig, Algebra lineare ecc) - che è senza di te fare nulla, e se non si dispone di Parallel Computing Toolbox.

Tuttavia, gli operatori MATLAB vengono eseguiti come processo singolo con un singolo thread, in modo da avere il pieno controllo su come parallelizzare.

+0

Suppongo che tu abbia appena ottenuto quel punto - mi riferisco ai lavoratori come "lab" solo nel contesto di un blocco 'spmd'. Sebbene, naturalmente, la terminologia sia stata introdotta in R2006a per quelli che allora erano conosciuti come "lavori paralleli", e quando non esisteva ancora il blocco 'spmd' - quello non andava fino a R2008b. – Edric

+0

Sono anche lab e thread? – user2574723

+0

Per una descrizione dei thread, vedere la modifica alla mia risposta. –

1

Penso che i lavoratori siano sinonimi di processi. Il termine "core" è correlato all'hardware. Labs è un meccanismo che consente ai lavoratori di comunicare tra loro. Ogni lavoratore ha almeno un laboratorio ma può possedere di più.

Questo pezzo di una discussione può essere utile

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

spero che qualcuno qui fornirà maggiori informazioni in modo più rigoroso