10#ifndef OAKFIELD_NEURAL_MODELS_H
11#define OAKFIELD_NEURAL_MODELS_H
26#define SIM_NEURAL_MODEL_COMMAND_MAX 255U
28#define SIM_NEURAL_MODEL_NOTE_MAX 127U
30#define SIM_NEURAL_MODEL_ERROR_MAX 191U
51#define SIM_NEURAL_DEVICE_MASK_CPU (1U << 0)
52#define SIM_NEURAL_DEVICE_MASK_CUDA (1U << 1)
53#define SIM_NEURAL_DEVICE_MASK_MPS (1U << 2)
SimResult
Return codes shared by libsimcore modules.
Definition field.h:29
Neural inference operator scaffolding.
SimResult(* SimNeuralInferenceFn)(void *userdata, const SimField *input, SimField *output, const SimNeuralInferenceRequest *request)
Callback surface for pluggable neural inference backends.
Definition neural_infer.h:53
#define SIM_NEURAL_MODEL_ID_MAX
Definition neural_infer.h:20
bool sim_neural_execution_device_from_string(const char *text, SimNeuralExecutionDevice *out_device)
Parse an execution device name.
const char * sim_neural_backend_kind_name(SimNeuralBackendKind kind)
Return a stable name for a backend kind.
bool sim_neural_backend_kind_from_string(const char *text, SimNeuralBackendKind *out_kind)
Parse a backend kind name.
size_t sim_neural_model_count(const struct SimContext *context)
Return the number of registered models.
SimResult sim_neural_model_infer(struct SimContext *context, const char *model_id, const SimField *input, SimField *output, const SimNeuralInferenceRequest *request)
Run inference for a registered model.
#define SIM_NEURAL_MODEL_ERROR_MAX
Definition neural_models.h:30
SimNeuralBackendKind
Supported neural inference backend families.
Definition neural_models.h:35
@ SIM_NEURAL_BACKEND_INPROCESS_ONNX_RUNTIME
Definition neural_models.h:38
@ SIM_NEURAL_BACKEND_CALLBACK
Definition neural_models.h:36
@ SIM_NEURAL_BACKEND_EXTERNAL_PROCESS
Definition neural_models.h:37
@ SIM_NEURAL_BACKEND_INPROCESS_LIBTORCH
Definition neural_models.h:39
#define SIM_NEURAL_MODEL_NOTE_MAX
Definition neural_models.h:28
SimResult sim_neural_model_stats_at(const struct SimContext *context, size_t model_index, SimNeuralModelRuntimeStats *out_stats)
Copy model runtime stats by registry index.
SimResult sim_neural_model_registry_init(SimNeuralModelRegistry *registry)
Initialize an empty model registry.
SimResult sim_neural_model_config(const struct SimContext *context, const char *model_id, SimNeuralModelConfig *out_config)
Copy model config by model id.
bool sim_neural_model_supports_device(const SimNeuralModelConfig *config, SimNeuralExecutionDevice device)
Test whether a model configuration supports a device.
void sim_neural_model_runtime_stats_reset(SimNeuralModelRuntimeStats *stats)
Reset runtime stats to their initial successful CPU state.
SimResult sim_neural_model_register(struct SimContext *context, const SimNeuralModelConfig *config, size_t *out_index)
Register or replace a neural model in a simulation context.
#define SIM_NEURAL_MODEL_COMMAND_MAX
Definition neural_models.h:26
void sim_neural_model_registry_destroy(SimNeuralModelRegistry *registry)
Destroy a model registry and release entry storage.
const char * sim_neural_execution_device_name(SimNeuralExecutionDevice device)
Return a stable name for an execution device.
SimNeuralModelConfig sim_neural_model_config_defaults(void)
Return a default callback/CPU/deterministic model config.
SimResult sim_neural_model_config_at(const struct SimContext *context, size_t model_index, SimNeuralModelConfig *out_config)
Copy model config by registry index.
SimResult sim_neural_model_stats(const struct SimContext *context, const char *model_id, SimNeuralModelRuntimeStats *out_stats)
Copy model runtime stats by model id.
SimNeuralExecutionDevice
Execution devices that can be requested for inference.
Definition neural_models.h:45
@ SIM_NEURAL_EXEC_DEVICE_MPS
Definition neural_models.h:48
@ SIM_NEURAL_EXEC_DEVICE_CUDA
Definition neural_models.h:47
@ SIM_NEURAL_EXEC_DEVICE_CPU
Definition neural_models.h:46
SimNeuralPrecisionMode
Numeric precision policy for neural inference operators.
Definition operator.h:198
Simulation runtime state.
Definition sim_context.h:70
Owning multidimensional field.
Definition field.h:157
Inference request metadata passed to neural callbacks.
Definition neural_infer.h:25
Registration-time model metadata and backend configuration.
Definition neural_models.h:58
char model_id[SIM_NEURAL_MODEL_ID_MAX+1U]
Definition neural_models.h:59
SimNeuralPrecisionMode default_precision
Definition neural_models.h:63
char external_command[SIM_NEURAL_MODEL_COMMAND_MAX+1U]
Definition neural_models.h:65
void * callback_userdata
Definition neural_models.h:68
SimNeuralBackendKind backend_kind
Definition neural_models.h:60
SimNeuralInferenceFn callback_fn
Definition neural_models.h:67
uint32_t supported_device_mask
Definition neural_models.h:61
char note[SIM_NEURAL_MODEL_NOTE_MAX+1U]
Definition neural_models.h:66
bool deterministic
Definition neural_models.h:64
Stored registry entry pairing model config with runtime stats.
Definition neural_models.h:91
SimNeuralModelConfig config
Definition neural_models.h:92
SimNeuralModelRuntimeStats stats
Definition neural_models.h:93
Owning dynamic array of neural model entries.
Definition neural_models.h:99
size_t count
Definition neural_models.h:101
SimNeuralModelEntry * entries
Definition neural_models.h:100
size_t capacity
Definition neural_models.h:102
Accumulated runtime counters for a registered model.
Definition neural_models.h:74
uint64_t failure_count
Definition neural_models.h:77
double last_wall_ms
Definition neural_models.h:79
SimResult last_result
Definition neural_models.h:83
SimNeuralExecutionDevice last_device
Definition neural_models.h:84
double total_wall_ms
Definition neural_models.h:80
double last_sim_time
Definition neural_models.h:82
uint64_t success_count
Definition neural_models.h:76
uint64_t invocation_count
Definition neural_models.h:75
size_t last_step_index
Definition neural_models.h:81
char last_error[SIM_NEURAL_MODEL_ERROR_MAX+1U]
Definition neural_models.h:85
uint64_t total_elements
Definition neural_models.h:78