Skip to contents

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.

Usage

get_parallel_dispatch_policy()

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"
#> 
#>