parfeval
並列プールワーカーで関数を実行
説明
【中文】F
= parfeval (fcn
,numout
,X1,…,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
をプール引数池
★★★★★★★★★★★★★★★★★★★★
例
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
キューにはRunningFutures
とQueuedFutures
2、。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
。未来,ID
。f
【未来】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
我的意思是,我的意思是RunningFutures
のID
。
为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
……RunningFutures
はf (1)
とf (4)
中文:啊哈!RunningFutures (2)
未来f (4)
。
。たとえば,コードが完了する前に再び同じコードを実行する場合や,関数内でparfeval
。。
ワークスペースからf
。
清晰的f
RunningFutures
とQueuedFutures
。RunningFutures
を使用して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
を使用したパラメータースイープ中のプロット
この例では,並列パラメータースイープをparfeval
★★★★★★★DataQueue
。
parfeval
。
この例では,ローレンツ常微分方程式系のパラメーター ? 。
パラメーターグリッドの作成
。
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;
関数parfeval
。parameterSweep
はこのスクリプトの最後で定義されている補助関数で,調べるパラメーターの分割についてのローレンツ系を解きます。★★★★★★★★★★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”);结束
afterEach
と毕竟
を使用したユーザーインターフェイスの非同期更新
中文:。parfeval
を使用して計算をワーカーにオフロードすると,ワーカーがこれらの計算を実行中にすべてのユーザーインターフェイスが応答可能な状態になります。【翻译】waitbar
。
,
afterEach
我不知道。,
毕竟
我不知道。
waitbar
图h
? ? ?afterEach
? ?毕竟
【中文译文waitbar
は图ハンドルを更新します。,ハンドルオブジェクトの動作。
H = waitbar(0;“等……”);
parfeval
。parfeval
。
为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
★★★★★★★★★afterEach
とupdateWaitbar
。★★★★★毕竟
と删除
。
updateWaitbar futures = afterEach(f,updateWaitbar,0);毕竟(updateWaitbarFutures @(~)删除(h), 0);
★★★★★毕竟
と柱状图
を使用してmaxFuture
。
showsHistogramFuture = afterAll(maxFuture,@histogram,0);
入力引数
fcn
- - - - - -通达,通达
関数ハンドル
。関数ハンドルとして指定します。
例:FCN = @sum
;function_handle
numout
- - - - - -【中文译文
非負の整数スカラー
【中文译文】。
n
はXm fcn (X1,…)
★★★★★★★★★★★★★
;单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
X1,…,Xm
- - - - - -入力引数
変数または式のコンマ区切りリスト
入力引数。。
池
- - - - - -プール
平行的。池
オブジェクト
。平行的。池
。
並列プールを作成するには,
parpool
[au:]バックグラウンドプールを取得するには,
backgroundPool
[au:]
例:parpool(“本地”);
例:backgroundPool;
出力引数
F
——未来
平行的。FevalFuture
オブジェクト
的未来。平行的。FevalFuture
。
F
■■■■fetchOutputs
? ?fetchNext
[au:]
拡張機能
超级超级超级超级超级
并行计算工具箱™を使用して自動的に並列計算を実行することで,コードを高速化します。
【翻译
MATLAB®のbackgroundPool
を使用してバックグラウンドでコードを実行するか,并行计算工具箱™のThreadPool
。
。★★★★★★スレッドベースの環境でのMATLAB関数の実行。
バージョン履歴
R2013bMatlab
。
。WebブラウザーはMATLABコマンドをサポートしていません。
你亦可选择下列网址:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。