Is is possible to run a batch job on an MJS Cloud Center cluster with SpmdEnabled set to false?

1 次查看(过去 30 天)
I'm running some parallel pool computations on an MJS cluster (created with Cloud Center) using the batch command. Used this help article to set that up: https://www.mathworks.com/help/parallel-computing/run-a-batch-job.html#bu62o45.
I'm running with a pool of several hundred workers using the 'Pool' argument to the batch command. Unfortunately, the entire job will fail if any of the workers crash, which happens quite frequently.
Searching online, I've found that setting SpmdEnabled to false when using the parpool command will allow the task to complete on the remaining workers. I'd like to set this flag, but can't seem to find a way to do it using the batch command. Is there another way to disable SPMD support but also use the batch command with a parallel pool to submit a job to a cloud cluster?

采纳的回答

Edric Ellis
Edric Ellis 2023-1-4
Unfortunately, this option is not supported at the moment for batch jobs. I realise it's probably rather a big change to your code, but you could use independent tasks using createJob and createTask.
  4 个评论
Hridu Jain
Hridu Jain 2023-1-5
Thanks, Edric. If I were to use your suggestion and rework my code, would I need to eliminate use of parfor and parsim?
I believe parfor works when using job = createCommunicatingJob(...,'Type','pool',...) but this would once again have SPMD support, right?
So, I would instead need to rework the code to work with createJob and run createTask in a for loop. Is that right? And would there be anyway to use parsim with this setup?
Here's a rough outline of how my program is currently setup:
function y = run_simulations()
% initialize
[a,b] = initialize_stuff();
% preprocess and prep for simulation
parfor i = 1:500
SimIn(i) = preprocess_simulation_inputs(a,b);
end
% run simulations
SimOut = parsim(SimIn);
% post-process
y = postprocess(SimOut);
end
I call my run_simulations function with the batch command with the Pool argument.
Edric Ellis
Edric Ellis 2023-1-6
I'm afraid you'd need to change your parfor loop into a series of independent tasks using createTask. (Likewise, you wouldn't be able to use parsim).

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Parallel Computing Fundamentals 的更多信息

产品


版本

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by