Deborah.DeborahThreads
Deborah.DeborahThreads — Modulemodule DeborahThreadsDeborah.DeborahThreads — Threaded dispatcher for multi-job Deborah.DeborahCore runs.
Deborah.DeborahThreads parallelizes multiple Deborah.DeborahCore jobs (different LBP/TRP partitions, or multiple model/config variations) using Julia Threads. It parses a single TOML that enumerates label/train pairs, expands them into per-job arguments, writes per-job configs, and launches Deborah.DeborahCore.DeborahRunner.run_Deborah concurrently with simple batch scheduling.
Scope & Responsibilities
- Config expansion: Parse a multi-job
TOMLand materialize one job per(LBP, TRP). - Per-job config writer: Generate
TOMLdictionaries/files for each job. - Threaded execution: Dispatch jobs in batches of
Base.Threads.nthreads(); wait per batch. - Run logging: Record start/end timestamps and errors per job into
run_*.log.
Key Components
DeborahThreadsRunner.JobArgsDeborah: immutable container of a singleDeborah.DeborahCorejob's arguments.DeborahThreadsRunner.parse_config_DeborahThreads→Vector{JobArgsDeborah}: Expand the global config into concrete jobs.DeborahThreadsRunner.generate_toml_dict→Dict: Build aTOML-ready dictionary for one job (data / bootstrap / jackknife / abbreviation).DeborahThreadsRunner.run_one_job: Write per-jobTOML, callDeborah.DeborahCore.DeborahRunner.run_Deborah, and log results.DeborahThreadsRunner.run_DeborahThreads: High-level entry point: parse → batch → spawn → wait.
File/Path Conventions
- Output base:
<location>/<analysis_header>_<ensemble>/<analysis_header>_<ensemble>_<X_Y_or_code>_<model_suffix>/ - Per-job directory:
.../<overall_name>/ - Per-job config:
config_Deborah_<overall_name>.toml - Per-job log:
run_Deborah_<overall_name>.log
Minimal Usage
julia> using Deborah
julia> run_DeborahThreads("config_DeborahThreads.toml")Notes
- Abbreviation support: feature/target names can be encoded via
Deborah.Sarah.StringTranscoder. - Batching equals
Base.Threads.nthreads(); adjustJULIA_NUM_THREADSto change parallel width. - Column indices in the input spec are $1$-based; they are propagated into per-job
TOMLs. - Exceptions are caught per job and written into the corresponding
.logfile.