Returns EDI's built-in blocklist-first policy table, consulted by an
internal (non-exported) dispatcher, for deciding whether a given
"bootstrap" or "rand_ci" (randomization confidence interval)
operation is forced to run serially rather than in parallel, for a
given inference class and response type. "Blocklist-first" means every
operation is parallel-eligible by default; only combinations explicitly
matched below are forced serial.
Value
A named list with two components, bootstrap and rand_ci,
each itself a list with serial_inference_class_patterns (a character
vector of PCRE-flavored regular expressions matched against the inference
class name) and serial_response_types (a character vector of exact
response-type strings) — any match in either forces that operation to run
serially rather than in parallel.
Unlike get_cold_start_dispatch_policy,
get_warm_start_dispatch_policy, and
get_optimization_dispatch_policy, this table is a
correctness fact, not a performance one — every entry exists
because that operation is not currently parallel-safe for that class or
response type, not because it happens to be slower in parallel.
tune_EDI_for_this_machine benchmarks a related but
separate question — at what sample size parallel execution starts to
beat serial, and which core count wins — and will never propose
un-serializing anything named here.
Details
For a given operation ("bootstrap" or
"rand_ci"), the dispatcher looks up that operation's sub-list (e.g.
bootstrap) and forces serial execution if either the inference class
name matches any of serial_inference_class_patterns (regular
expressions, PCRE-flavored — serial_inference_class_patterns supports
lookahead, e.g. the built-in
"^InferenceSurvival(?!.*KK)" pattern matches non-KK survival inference
classes but excludes matched-design (KK) survival variants) or the response
type matches any of serial_response_types exactly. In the built-in
policy, incidence-response inference generally runs serially for both
operations (its bootstrap/randomization resampling is not currently
parallel-safe or not worth parallelizing at typical trial sizes), and
non-KK survival inference and InferenceAllKKWilcoxIVWC are
additionally forced serial for bootstrapping specifically.
See also
get_bootstrap_dispatch_policy,
get_cold_start_dispatch_policy, and
get_optimization_dispatch_policy for the analogous policies
controlling bootstrap CI type, cold-start behavior, and default optimizer
algorithm (none of which control parallel-vs-serial dispatch);
tune_EDI_for_this_machine for the machine-dependent
parallel-crossover/core-count benchmark this blocklist constrains but
is never itself a target of.
Examples
get_parallel_dispatch_policy()
#> $bootstrap
#> $bootstrap$serial_inference_class_patterns
#> [1] "^InferenceIncid" "^InferenceSurvival(?!.*KK)"
#> [3] "^InferenceAllKKWilcoxIVWC$"
#>
#> $bootstrap$serial_response_types
#> [1] "incidence"
#>
#>
#> $rand_ci
#> $rand_ci$serial_inference_class_patterns
#> [1] "^InferenceIncid"
#>
#> $rand_ci$serial_response_types
#> [1] "incidence"
#>
#>
