Skip to main content

gam/
lib.rs

1#![deny(dead_code)]
2#![deny(unused_variables)]
3#![deny(unused_imports)]
4
5include!(concat!(env!("OUT_DIR"), "/lint_errors.rs"));
6
7/// Initialize faer's global parallelism backend to a Rayon pool sized at
8/// `rayon::current_num_threads()`. Rayon's pool itself honors the standard
9/// `RAYON_NUM_THREADS` environment variable on first use, so callers that
10/// need to constrain the worker count (e.g. the benchmark harnesses) set it
11/// once on the spawned subprocess and rayon picks it up natively.
12///
13/// Idempotent: only the first call has effect (guarded by `std::sync::Once`).
14/// Without this, faer's global default is `Par::Seq` and matmul/factorizations
15/// run single-threaded even when the host has many cores.
16pub fn init_parallelism() {
17    static INIT: std::sync::Once = std::sync::Once::new();
18    INIT.call_once(|| {
19        faer::set_global_parallelism(faer::Par::rayon(0));
20    });
21}
22
23pub mod approx_ledger;
24pub mod families;
25pub mod inference;
26pub mod linalg;
27pub mod report;
28pub mod resource;
29pub mod solver;
30mod span;
31pub mod terms;
32#[cfg(test)]
33pub mod testing;
34pub mod types;
35
36pub use data::{
37    encode_recordswith_inferred_schema, load_csvwith_inferred_schema, load_csvwith_schema,
38};
39pub use inference::{alo, data, diagnostics, generative, hmc, predict, probability, quadrature};
40pub use linalg::{faer_ndarray, matrix, utils};
41pub use resource::{
42    ByteLruCache, DerivativeStorageMode, MaterializationPolicy, MatrixMaterializationError,
43    ProblemHints, ResidentBytes, ResourcePolicy,
44};
45pub use solver::{estimate, mixture_link, pirls, seeding, visualizer};
46pub use terms::{basis, construction, hull, layout, smooth, term_builder};
47
48pub use families::bernoulli_marginal_slope;
49pub use families::custom_family;
50pub use families::gamlss;
51pub use families::survival;
52pub use families::survival_construction;
53pub use families::survival_location_scale;
54pub use families::survival_marginal_slope;
55pub use families::survival_predict;
56pub use families::transformation_normal;
57pub use solver::protocol::{
58    LatentScoreSemantics, MarginalSlopeCalibrationProtocol, SurvivalMarginalSlopeProtocol,
59};
60pub use solver::workflow::{
61    BernoulliMarginalSlopeFitRequest, BinomialLocationScaleFitRequest, FitConfig, FitRequest,
62    FitResult, GaussianLocationScaleFitRequest, LatentBinaryFitRequest, LatentSurvivalFitRequest,
63    LinkWiggleConfig, MaterializedModel, StandardBinomialWiggleConfig, StandardFitRequest,
64    StandardFitResult, SurvivalLocationScaleFitRequest, SurvivalLocationScaleFitResult,
65    SurvivalMarginalSlopeFitRequest, SurvivalTransformationFitRequest,
66    SurvivalTransformationFitResult, TransformationNormalFitRequest, fit_from_formula, fit_model,
67    is_binary_response, materialize, resolve_family, resolve_offset_column, resolve_weight_column,
68};