|
PICurv 0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
|
This guide documents how picurv converts case configs into scheduler artifacts for cluster execution.
Typical cluster-enabled run uses:
case.ymlsolver.ymlmonitor.ymlpost.ymlcluster.yml (scheduler contract)Initialize templates from examples, then customize per cluster/account policy.
Generate and submit:
Generate only (no submission):
Submit existing staged artifacts later:
Stop a submitted run by directory:
Explicit scheduler cross-check (optional):
Notes:
--scheduler is optional and only valid with --cluster.cluster.yml:scheduler.type.cluster.yml (nodes * ntasks_per_node).nodes=1, ntasks_per_node=1) and a single-rank launcher command even when solver stage is multi-rank.cluster.yml does not currently name the run directory. picurv generates run_id as <case_basename>_<timestamp>, then derives Slurm job names like <run_id>_solve and <run_id>_post.cluster.yml.execution first, then nearest .picurv-execution.yml (cluster_execution, then default_execution), then built-in srun.In run directory, scheduler generation typically produces:
runs/<run_id>/scheduler/solver.sbatchruns/<run_id>/scheduler/post.sbatchruns/<run_id>/scheduler/solver_<jobid>.out/.err after solver submissionruns/<run_id>/scheduler/post_<jobid>.out/.err after post submissionruns/<run_id>/manifest.jsonruns/<run_id>/scheduler/submission.json (always in cluster mode when run artifacts are written; contains launch metadata and submission IDs when present)These coexist with standard runtime control artifacts used by solver/postprocessor binaries. submission.json is also the run-directory contract consumed by picurv submit and picurv cancel.
solver.sbatch) immediately, or later via picurv submit --run-dir ...,post.sbatch), with afterok:<solver_jobid> dependency when solve+post are both requested in one command or when submit --stage all is used.This allows consistent local dry-run and cluster production flow from the same inputs.
--no-submit first when validating new scheduler settings.examples/master_template/master_cluster.yml).short_job.local.yml / long_job.local.yml instead of committing account/module-specific scheduler profiles.cluster.yml instead of editing generated scripts manually.max(warmup_avg, ewma, latest_step)max(60 s, 2.0 * estimator)cluster.yml -> execution.walltime_guard only when the defaults do not fit your timestep variability or filesystem overhead.cluster.yml -> execution.extra_sbatch.signal as fallback protection: signal: "USR1@300" for srun, or signal: "B:USR1@300" plus exec mpirun ... for direct mpirun batch launches.cluster.yml resources directly.nodes=1, ntasks_per_node=1) in generated post.sbatch.srun, mpirun, mpiexec), PICurv also strips conflicting size flags and forces the post launch to rank 1.scheduler/; solver-generated runtime logs still live under logs/.picurv init now creates .picurv-execution.yml in each new case with inert defaults.cluster.yml override only when batch jobs differ.PICURV_MPI_LAUNCHER still overrides everything.--num-procs in cluster mode is a consistency guard, not an independent rank selector:1 (auto) or exactly nodes * ntasks_per_node.picurv run --dry-run --format json before submission when integrating with external launch wrappers.--dry-run, then --no-submit, then submit --run-dir ....See also:
This page describes Cluster Run Guide (Slurm) within the PICurv workflow. For CFD users, the most reliable reading strategy is to map the page content to a concrete run decision: what is configured, what runtime stage it influences, and which diagnostics should confirm expected behavior.
Treat this page as both a conceptual reference and a runbook. If you are debugging, pair the method/procedure described here with monitor output, generated runtime artifacts under runs/<run_id>/config, and the associated solver/post logs so numerical intent and implementation behavior stay aligned.