主要内容

。中文:中文:。

parfeval

並列プールワーカーで関数を実行

説明

F= parfeval (fcnnumoutX1,…,Xm【中文】fcn【中文翻译】, matlab®(1)、(1)、(1)。我的意思是,我的意思是,我的意思是,我的意思是,我的意思是,我的意思是。

この構文を使用する並列コードは,并行计算工具箱™を保有していないMATLABユーザーと共有できます。

Matlab,(1)n【中文译文fcn【中文】(日元…,Yn)=Xm fcn (X1,…)(英译汉)1 .

Matlabfcn★★★★★★未来オブジェクトF? ? ? ?fetchOutputs未来的,未来的(日元…,Yn)? ? ? ? ?関数fcn(1)、(1)、(1)、(1)、(2)取消我不知道。未来についての詳細は、未来

並列プールが開いている場合,MATLABはその並列プールを使用して関数fcn? ? ? ? ?

  • プールの自動作成が有効であれば,MATLABは既定のクラスタープロファイルを使用して並列プールを開始し,その後その並列プールを使用して関数fcn? ? ? ? ?。

    parpoolをプール引数★★★★★★★★★★★★★★★★★★★★

  • プールの自動作成が無効であれば,MATLABは遅延実行を使用して関数fcn? ? ? ? ?

    parallel.Pool.emptyをプール引数★★★★★★★★★★★★★★★★★★★★

F= parfeval (fcnnumoutX1,…,Xm【中文】fcnがプール。この構文は,実行時にプールを指定する必要がある場合に使用します。

コードをバックグラウンドで実行するには,parfeval

すべて折りたたむ

parfeval? ?parfevalOnAllを使用してバックグラウンドで計算を実行する際には,未来と呼ばれるオブジェクトを作成します。未来の状态。【中文翻译FevalQueue。未来をキャンセルするには,関数取消? ? ? ?【翻译】以下を行います。

  • 取消を使用して未来を直接キャンセルする。

  • FevalQueue

キューへの作業の追加

2 .p? ? ?

P = parpool(2);
使用“Processes”配置文件启动并行池(parpool)…连接到并行池(工人数量:2)。

parfevalを使用してバックグラウンドで計算を実行するときに,この関数は各計算について未来を作成し,プールのキューに追加します。。。。

parfevalを使用して,ワーカーに関数暂停() () () () () (f? ? ?3 .中文1を使用し,その他すべての未来に引数我不知道。

N = 1:5如果N == 3 f(N) = parfeval(@pause,0,1);其他的f(n) = parfeval(@pause,0,Inf);结束结束

parfeval。3 .全英文,全英文,全英文,全英文。parfeval (@pause 0正)

未来の直接キャンセル

状态f未来,细胞,细胞。

{f。州}
ans =1×5单元{“奔跑”}{“奔跑”}{“排队”}{“排队”}{“排队”}

3 .中文:1 .中文:1 .中文:1 .中文:1 .中文:1 .中文:

取消

取消(f (2));{f。州}
ans =1×5单元{“奔跑”}{'完成'}{“奔跑”}{“排队”}{“排队”}

2 .。3 .中文:3 .中文:3 .中文:未来。

等待(f (3));{f。州}
ans =1×5单元{“奔跑”}{'完成'}{'完成'}{“奔跑”}{“排队”}

3、未来“完成”? ? ? ?

完了エラーのチェック

未来? ? ?状态プロパティは“完成”? ? ? ?キャンセルされた未来と正常に完了した未来を区別するには,错误

流(“f (2): % s \ n”f (2) .Error.message)
f(2):期货执行取消。
流(“f (3): % s \ n”f (3) .Error.message)
f (3):

消息プロパティが示すように,コードは2番目の未来をキャンセルします。消息。3 .。

プールキュー内の未来のキャンセル

FevalQueue

p.FevalQueue
ans = FevalQueue with properties: Number Queued: 1 Number Running: 2

キューにはRunningFuturesQueuedFutures2、。RunningFutures

disp (p.FevalQueue.RunningFutures)
1 x2 FevalFuture数组:ID状态FinishDateTime功能错误  -------------------------------------------------------- 1 3运行@pause 2 6 @pause运行

QueuedFuturesプロパティは,現在待機中で実行されていないタスクに対応する未来からなる配列です。

disp (p.FevalQueue.QueuedFutures)
FevalFuture with properties: ID: 7 Function: @pause CreateDateTime: 08-Mar-2021 10:03:13 StartDateTime: RunningDuration: 0 days 0h 0m 0s State: queued Error: none

QueuedFutures

取消(p.FevalQueue.QueuedFutures);{f。州}
ans =1×5单元{“奔跑”}{'完成'}{'完成'}{“奔跑”}{'完成'}

RunningFutures?QueuedFuturesは,f。未来,IDf【未来】ID

disp (f)
1x5 FevalFuture array: ID State FinishDateTime Function Error -------------------------------------------------------------- 1 3 running @pause 2 4 finished (unread) 08-Mar-2021 10:03:20 @pause Error 3 5 finished (unread) 08-Mar-2021 10:03:21 @pause 4 6 running @pause 5 7 finished (unread) 08-Mar-2021 10:03:22 @pause Error

我的意思是,我的意思是RunningFuturesID

j = 1:length(p.FevalQueue.RunningFutures); rf = p.FevalQueue.RunningFutures(j);流("p.FevalQueue.RunningFutures(%i): ID = %i\n", j, r . id)结束
p.FevalQueue.RunningFutures(1): ID = 3 p.FevalQueue.RunningFutures(2): ID = 6

……RunningFuturesf (1)f (4)中文:啊哈!RunningFutures (2)未来f (4)

。たとえば,コードが完了する前に再び同じコードを実行する場合や,関数内でparfeval。。

ワークスペースからf

清晰的f

RunningFuturesQueuedFuturesRunningFuturesを使用してf (4)

rf2 = p.FevalQueue.RunningFutures(2);取消(rf2) rf2。状态
Ans = 'finished'

取消(p.FevalQueue.QueuedFutures);取消(p.FevalQueue.RunningFutures);

parfeval

1 .。fetchOutputs

F = parfeval(@magic,1,10);value = fetchOutputs(f);

啊哈,ループに複数の未来要求のベクトルを投入し,結果が使用可能になった時点で収集することもできます。効率性を高めるため,未来オブジェクトの配列を事前に割り当てます。

f(1:10) = parallel.FevalFuture;f(Idx) = parfeval(@magic,1, Idx);结束

fetchNext

magicResults = cell(1,10);idx = 1:10 [completedIdx,value] = fetchNext(f);magicResults{completedIdx} = value;流('得到索引为%d.\n的结果', completedIdx);结束

この例では,並列パラメータースイープをparfeval★★★★★★★DataQueue

parfeval

この例では,ローレンツ常微分方程式系のパラメーター σ ? ρ

d d t x σ y - z d d t y x ρ - z - y d d t z xy - β x

パラメーターグリッドの作成

gridSize = 40;sigma = linspace(5,45, gridSize);rho = linspace(50,100, gridSize);β = 8/3;

関数meshgrid

[rho,sigma] = meshgrid(rho,sigma);

“可见”真正的。。地动山动地Z?★★★★★★★★★★★★★★★★★★★★★★

图(“可见”,真正的);surface = surf(rho,sigma,NaN(size(sigma)));包含(‘\ρ“翻译”“泰克斯”) ylabel (‘\σ’“翻译”“泰克斯”

这是我的最爱

関数parpool

parpool;
使用“Processes”配置文件启动并行池(parpool)…连接到并行池(工人数量:6)。

ワーカーからデータを送信するには,DataQueue。関数afterEach。関数updatePlot(1)、(1)、(1)、(1)、(1)、(1)、(1)、(1)、(2)。

Q = parallel.pool.DataQueue;afterEach (Q, @(数据)updatePlot(表面、数据));

並列パラメータースイープの実行

【中文译文】parfeval高温基,高温基。。【中文翻译】)中文:中文一步★★★★★★★我的意思是,我的意思是分区★★★★★★★★★★★★★最後の分割の終点を追加しなければならないことに注意してください。

步长= 100;分区= [1:step:numel(sigma), numel(sigma)+1]
分区=1×171101 201 301 401 501 601 701 801 901 1001 1101 1201 1301 1401 1501 1601

  • 分割のスケジューリングのオーバーヘッドよりも計算時間が長くなる程度に大きい

  • すべてのワーカーをビジー状態に維持するために十分な分割数が存在する程度に小さい

f(1:numel(partitions)-1) = parallel.FevalFuture;

関数parfevalparameterSweepはこのスクリプトの最後で定義されている補助関数で,調べるパラメーターの分割についてのローレンツ系を解きます。★★★★★★★★★★parfeval我的意思是1> > > > > > > >

ii = 1:numel(partitions)-1 f(ii) = parfeval(@parameterSweep,1,partitions(ii),partitions(ii+1),sigma,rho,beta,Q);结束

parfeval。ワーカーは並列で計算を実行し,中間結果を使用できるようになったらDataQueue你怎么能这么说?

parfevalが完了するまでMATLABをブロックする場合は,未来オブジェクトに対して関数等待我不知道。この後のコードがparfeval★★★★★★★等待

等待(f);

parfeval【中文】:等待。。関数fetchOutputs

results =重塑(fetchOutputs(f),gridSize,[]);contourf(ρ,σ,结果)包含(‘\ρ“翻译”“泰克斯”) ylabel (‘\σ’“翻译”“泰克斯”

パラメータースイープで計算リソースが多く必要で,クラスターにアクセス可能な場合は,parfeval。★★★★★★デスクトップからクラスターへのスケールアップ

【中文译文

DataQueueオブジェクトで関数发送

函数results = parameterSweep(first,last,sigma,rho,beta,Q) results = 0 (last-first,1);2 =第一:持续1 lorenzSystem = @ (t))(σ(ii) * ((2) - (1));A (1)*(rho(ii) - A (3)) - A (2);A (1)* A (2) - * A (3)];[t,a] = ode45(lorenzSystem,[0 100],[1 11 1]);结果= a(end,3);发送(Q, [ii,结果]);Results (ii-first+1) = result;结束结束

函数updatePlot(surface,data) surface. zdata (data(1)) = data(2);drawnow (“limitrate”);结束

中文:。parfevalを使用して計算をワーカーにオフロードすると,ワーカーがこれらの計算を実行中にすべてのユーザーインターフェイスが応答可能な状態になります。【翻译】waitbar

  • afterEach我不知道。

  • 毕竟我不知道。

waitbarh? ? ?afterEach? ?毕竟【中文译文waitbarは图ハンドルを更新します。,ハンドルオブジェクトの動作

H = waitbar(0;“等……”);

waitbar.png

parfevalparfeval

idx = 1:10 0 f (idx) = parfeval (@ (n)真实(eig (randn (n))), 1、5 e2);结束

afterEach【翻译】parfeval【中文翻译】:。【未来】afterEach【中文翻译】

maxFuture = afterEach(f,@max,1);

状态f未来?状态プロパティが“完成”合乎逻辑的。的意思是【中文翻译】【翻译updateWaitbar? ? ?\ n \ n;h★★★★★★★★★★★★★★★★★★★★★★★★★★

updateWaitbar = @(~) waitbar(mean({f;州}= =“完成”), h);

maxFuture★★★★★★★★★afterEachupdateWaitbar。★★★★★毕竟删除

updateWaitbar futures = afterEach(f,updateWaitbar,0);毕竟(updateWaitbarFutures @(~)删除(h), 0);

★★★★★毕竟柱状图を使用してmaxFuture

showsHistogramFuture = afterAll(maxFuture,@histogram,0);

入力引数

すべて折りたたむ

。関数ハンドルとして指定します。

例:FCN = @sum

;function_handle

【中文译文】。

nXm fcn (X1,…)★★★★★★★★★★★★★

;||int8|int16|int32|int64|uint8|uint16|uint32|uint64

入力引数。。

平行的。池

  • 並列プールを作成するには,parpool[au:]

  • バックグラウンドプールを取得するには,backgroundPool[au:]

例:parpool(“本地”);

例:backgroundPool;

出力引数

すべて折りたたむ

的未来。平行的。FevalFuture

拡張機能

バージョン履歴

R2013b

草皮草皮