# How to use parpool for independent expressions

조회 수: 1(최근 30일)
Ole 2021년 9월 23일
댓글: Raymond Norris 2021년 9월 24일
How to evaluate independent expressions in local parpool on laptop.
When I try the code below, the parpool is idle.
How to force matlab to evaluate the expressions in parallel.
x = 1; y =2; z=3;
parpool('local',4)
s = x + y + z;
a = 2*x + z;
w = 3*y + 2*z;
f = 3*x + 2*z;
##### 댓글 수: 1표시숨기기 없음
Raymond Norris 2021년 9월 24일
Let me ask you this. Using a pool of workers (i.e. processes) cancels out any implicit threadedness. So will there be any value in doing as your requesting?
To see the impact, try the following:
tic
< run code >
toc
tic
< run code >
toc
Next, run your code using a parallel pool of workers and parfeval (as Mohammad has suggested) and see how close it gets to your timings with maxNumCompThreads set to 'auto'. You might see it's a wash.

댓글을 달려면 로그인하십시오.

### 채택된 답변

You can use the parfeval function to make these calculations on a worker thread.
x = 1; y =2; z=3;
p=parpool('local',4)
Fs = parfeval(p,@(x,y,z) x + y + z,1,x,y,z);
Fa = parfeval(p,@(x,z)2*x + z,1,x,z);
Fw = parfeval(p,@(y,z)3*y + 2*z,1,y,z);
Ff = parfeval(p,@(x,z)3*x + 2*z,1,x,z);
s = Fs.fetchOutputs;
a = Fa.fetchOutputs;
w = Fw.fetchOutputs;
f = Ff.fetchOutputs;
To avoid copying of data to workers from main thread if you have large datasets, you can use thread based parpool.

댓글을 달려면 로그인하십시오.

### 범주

Find more on Parallel Computing Fundamentals in Help Center and File Exchange

R2021a

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by