# 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 件のコメント-1 件の古いコメントを表示-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.

サインインしてコメントする。

### 採用された回答

Mohammad Sami 2021 年 9 月 24 日
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.

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeParallel Computing Fundamentals についてさらに検索

R2021a

### Community Treasure Hunt

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

Start Hunting!

Translated by