Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between MATLAB parallel computing terminologies

I want to know the differences between

1. labs
2. workers
3. cores
4. processes

Is it just the semantics or they are all different?

like image 860
user2574723 Avatar asked Mar 13 '15 13:03

user2574723


People also ask

What is parallel computing in MATLAB?

Parallel Computing Toolbox enables you to use NVIDIA® GPUs directly from MATLAB using gpuArray . More than 500 MATLAB functions run automatically on NVIDIA GPUs, including fft , element-wise operations, and several linear algebra operations such as lu and mldivide , also known as the backslash operator (\).

What is the use of MATLAB parallel server?

MATLAB Parallel Server™ lets you scale MATLAB® programs and Simulink® simulations to clusters and clouds. You can prototype your programs and simulations on the desktop and then run them on clusters and clouds without recoding.

Can I use Parfor without parallel computing toolbox?

The function runs in serial if you do not have Parallel Computing Toolbox. Use a parfor -loop without a pool to run magic with different matrix sizes. The loop runs in serial if you do not have Parallel Computing Toolbox.

What is MATLAB parallel server license?

The MATLAB Parallel Server Campus-Wide License provides campus-wide access to MATLAB Parallel Server and allows every user on campus to run an unlimited number of simultaneous workers (MATLAB processes) on clouds and university-owned clusters.


2 Answers

labs and workers are MathWorks terminologies, and they mean roughly the same thing.

A lab or a worker is essentially an instance of MATLAB (without a front-end). You run several of them, and you can run them either on your own machine (requires only Parallel Computing Toolbox) or remotely on a cluster (requires Distributed Computing Server). When you execute parallel code (such as a parfor loop, an spmd block, or a parfeval command), the code is executed in parallel by the workers, rather than by your main MATLAB.

Parallel Computing Toolbox has changed and developed its functionality quite a lot over recent releases, and has also changed and developed the terminologies it uses to describe the way it works. At some point it was convenient to refer to them as labs when running an spmd block, but workers when running a parfor loop, or working on jobs and tasks. I believe they are moving now toward always calling them workers (although there's a legacy in the commands labSend, labReceive, labBroadcast, labindex and numlabs).

cores and processes are different, and are not themselves anything to do with MATLAB.

A core is a physical part of your processor - you might have a dual-core or quad-core processor in your desktop computer, or you might have access to a really big computer with many more than that. By having multiple cores, your processor can do multiple things at once.

A process is (roughly) a program that your operating system is running. Although the OS runs multiple programs simultaneously, it typically does this by interleaving operations from each process. But if you have access to a multiple-core machine, those operations can be done in parallel.

So you would typically want to tell MATLAB to start one worker for each of the cores you have on your machine. Each of those workers will be run as a process by the OS, and will end up being run one worker per core in parallel.

The above is quite simplified, but I hope gives a roughly accurate picture.


Edit: moved description of threads from a comment to the answer.

Threads are something different again. Threads are also not in themselves anything to do with MATLAB.

Let's go back to processes for a moment. One thing I didn't mention above is that the OS allocates each process a specific block of memory which other processes shouldn't be able to touch, so that it's difficult for them to interact with each other and mess things up.

A thread is like a process within a process - it's a stream of operations that the process runs. Typically, operations from each thread would be interleaved, but if you have multiple cores, they can also be parallelized across the cores.

However, unlike processes, they all share a memory block, which is OK because they're all managed by the same program so it should matter less if they're allowed to interact.

Regular MATLAB automatically uses multiple threads to parallelize many built-in operations (such as matrix multiplication, svd, eig, linear algebra etc) - that's without you doing anything, and whether or not you have Parallel Computing Toolbox.

However, MATLAB workers are each run as a single process with a single thread, so you have full control over how to parallelize.

like image 164
Sam Roberts Avatar answered Oct 11 '22 09:10

Sam Roberts


I think workers are synonyms for processes. The term "cores" is related to the hardware. Labs is a mechanism which allows workers to communicate with each other. Each worker has at least one lab but can own more.

This piece of a discussion may be useful

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

I hope someone here will deliver more information in a more rigorous way

like image 28
freude Avatar answered Oct 11 '22 10:10

freude