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

2 views (last 30 days)
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?

Accepted Answer

Edric Ellis
Edric Ellis on 4 Jan 2023
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 Comments
Hridu Jain
Hridu Jain on 5 Jan 2023
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 on 6 Jan 2023
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).

Sign in to comment.

More Answers (0)

Categories

Find more on Get Started with Parallel Computing Toolbox in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!