[英]Accelerate batch job execution in MATLAB
我是MATLAB中批处理作业执行的新手。 我正在玩以下代码:
clear
a = rand(10,1);
job = batch('l_beta');
wait(job)
load(job,'b')
l_beta
只是一行代码:
b = sum(a);
尽管所有操作都很简单,但令人惊讶的是,在第一个块中执行代码需要12秒钟。 我在以下链接中查看了讨论
https://www.mathworks.com/matlabcentral/answers/166757-why-is-batch-so-slow
似乎有很多与启动批处理作业相关的开销。 我想知道是否有简单的方法来减少这种开销。 说,如果我只进行一次配置/预热,然后只要运行MATLAB就不必担心。
您可以使用tic / toc和job属性很容易地调试它。 见下面的例子
clc; close all; clear;
a = 10;
tic;
c = parcluster();
fprintf('Creating the cluster: %.2f sec\n', toc);
tic;
job = createJob(c);
fprintf('Creating a job: %.2f sec\n', toc);
tic;
createTask(job, @exp, 1, {a});
createTask(job, @sin, 1, {a});
fprintf('Creating the tasks: %.2f sec\n', toc);
tic;
submit(job);
fprintf('Submitting the job: %.2f sec\n', toc);
% Most of the time goes on scheduling the job here
% pause(10);
tic;
wait(job)
fprintf('Waiting time: %.2f sec\n', toc);
tic;
results = fetchOutputs(job);
fprintf('Fetching Results: %.2f sec\n\n', toc);
fprintf('Job Properties\n');
fprintf('Create Time: %s \n', job.CreateTime);
fprintf('Submit Time: %s \n', job.SubmitTime);
fprintf('Start Time: %s \n', job.StartTime);
fprintf('Finish Time: %s \n', job.FinishTime);
delete(job);
如果运行此命令,则会得到以下信息
Creating the cluster: 0.01 sec
Creating a job: 0.02 sec
Creating the tasks: 0.04 sec
Submitting the job: 0.19 sec
Waiting time: 4.13 sec
Fetching Results: 0.02 sec
Job Properties
Create Time: Mon May 22 10:30:23 BST 2017
Submit Time: Mon May 22 10:30:23 BST 2017
Start Time: Mon May 22 10:30:26 BST 2017
Finish Time: Mon May 22 10:30:27 BST 2017
您会看到在提交和开始之间大部分时间都浪费了。 执行本身非常快。 如果通过从pause(10)
删除注释来引入暂停,则会得到以下内容
Creating the cluster: 0.01 sec
Creating a job: 0.02 sec
Creating the tasks: 0.04 sec
Submitting the job: 0.19 sec
Waiting time: 0.06 sec
Fetching Results: 0.02 sec
Job Properties
Create Time: Mon May 22 10:31:44 BST 2017
Submit Time: Mon May 22 10:31:44 BST 2017
Start Time: Mon May 22 10:31:47 BST 2017
Finish Time: Mon May 22 10:31:48 BST 2017
因此,您可以考虑在代码中尽早提交作业,在计划和运行作业时执行一些其他操作,然后在代码中进一步获取结果。 我希望这是有帮助的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.