19#include <unordered_map>
49 std::size_t chunk_size);
64 void evaluate(
const int *evidence_data, std::size_t batch_size,
65 std::size_t num_vars,
double *output_data,
66 std::size_t query_var);
104 void evaluate_multi(
const int *evidence_data, std::size_t batch_size,
105 std::size_t num_vars,
const std::size_t *query_vars,
106 std::size_t num_queries,
107 const std::size_t *output_offsets,
108 double *output_data);
133 void evaluate_map(
const int *evidence_data, std::size_t batch_size,
134 std::size_t num_vars,
int *output_states);
148 std::size_t n_states);
161 const double *likelihoods_matrix,
162 std::size_t total_n_states);
181 std::size_t current_batch_start,
182 std::size_t current_chunk_size)
const;
Runs junction tree inference for a batch of evidence rows.
void apply_soft_evidence_to_workspace(BatchWorkspace &workspace, std::size_t current_batch_start, std::size_t current_chunk_size) const
void evaluate_multi(const int *evidence_data, std::size_t batch_size, std::size_t num_vars, const std::size_t *query_vars, std::size_t num_queries, const std::size_t *output_offsets, double *output_data)
Posterior marginals of several variables for every batch row, from one sum-product calibration per ch...
void evaluate_map(const int *evidence_data, std::size_t batch_size, std::size_t num_vars, int *output_states)
Most probable state of every variable for every batch row, from max-product propagation.
std::unique_ptr< BatchWorkspace > single_workspace_cache_
reused when a batch is a single chunk
std::size_t single_workspace_batch_size_
batch size the cache was built for
void invalidate_workspace_cache()
Discards the workspace kept for single-chunk evaluations.
void clear_soft_evidence()
Removes all stored soft evidence, scalar and matrix.
const JunctionTree & junction_tree() const
The junction tree given at construction.
std::unordered_map< bncore::NodeId, std::vector< double > > soft_evidence_scalar_
void set_soft_evidence_matrix(bncore::NodeId var, const double *likelihoods_matrix, std::size_t total_n_states)
Sets a separate likelihood vector per batch row for a variable.
std::unordered_map< bncore::NodeId, std::vector< double > > soft_evidence_matrix_
BatchExecutionEngine(const JunctionTree &jt, std::size_t num_threads, std::size_t chunk_size)
void set_soft_evidence(bncore::NodeId var, const double *likelihoods, std::size_t n_states)
Sets one likelihood vector for a variable, used for every batch row.
void evaluate(const int *evidence_data, std::size_t batch_size, std::size_t num_vars, double *output_data, std::size_t query_var)
Posterior marginal of one variable for every batch row.
Message passing state for one junction tree and one batch size.
Cliques and separators compiled from one Graph.
Junction tree data structure of BNCore: Clique, Separator and the JunctionTree container.
std::uint32_t NodeId
Handle of a variable within one Graph.
Basic BNCore types: the NodeId variable handle and the VariableMetadata record that Graph stores for ...
bncore::BatchWorkspace, the message passing state of junction tree inference, and the precomputed ind...