SYMBOL INDEX (908 symbols across 50 files) FILE: crates/dsperse/benches/serialization.rs function make_slice_metadata (line 14) | fn make_slice_metadata(index: usize) -> SliceMetadata { function make_model_metadata (line 40) | fn make_model_metadata(num_slices: usize) -> ModelMetadata { function make_run_metadata (line 62) | fn make_run_metadata(num_slices: usize) -> RunMetadata { function bench_roundtrip (line 151) | fn bench_roundtrip Deserialize<'de>>( function serialization_benchmarks (line 182) | fn serialization_benchmarks(c: &mut Criterion) { FILE: crates/dsperse/build.rs function main (line 1) | fn main() { FILE: crates/dsperse/src/backend/jstprove.rs type JstproveBackend (line 20) | pub struct JstproveBackend { method new (line 35) | pub fn new() -> Self { method with_compress (line 39) | pub fn with_compress(mut self, compress: bool) -> Self { method compress (line 44) | pub fn compress(&self) -> bool { method load_bundle_cached (line 48) | pub fn load_bundle_cached(&self, path: &Path) -> Result Result R... method compile (line 165) | pub fn compile( method witness (line 198) | pub fn witness( method witness_f64 (line 221) | pub fn witness_f64( method load_params (line 249) | pub fn load_params(&self, circuit_path: &Path) -> Result Resu... method extract_outputs (line 262) | pub fn extract_outputs( method extract_outputs_full (line 282) | pub fn extract_outputs_full( method verify (line 296) | pub fn verify( method verify_and_extract (line 309) | pub fn verify_and_extract( method setup_holographic_vk (line 345) | pub fn setup_holographic_vk(&self, circuit_path: &Path) -> Result<()> { method prove_holographic (line 367) | pub fn prove_holographic(&self, circuit_path: &Path, witness_bytes: &[... method verify_holographic (line 379) | pub fn verify_holographic(&self, circuit_path: &Path, proof_bytes: &[u... method default (line 26) | fn default() -> Self { method prove (line 396) | fn prove(&self, circuit_path: &Path, witness_bytes: &[u8]) -> Result Result { type WarmCircuit (line 428) | pub struct WarmCircuit { method load (line 437) | pub fn load( method witness_f64 (line 457) | pub fn witness_f64(&self, activations: &[f64]) -> Result> { function bundle_cache_starts_empty (line 478) | fn bundle_cache_starts_empty() { function backend_constructs_without_proof_config_state (line 485) | fn backend_constructs_without_proof_config_state() { function clear_cache_on_empty_succeeds (line 491) | fn clear_cache_on_empty_succeeds() { function clear_cache_removes_entries (line 499) | fn clear_cache_removes_entries() { function load_bundle_cached_returns_error_for_missing_path (line 518) | fn load_bundle_cached_returns_error_for_missing_path() { function resolve_proof_config_rejects_unstamped_bundle (line 526) | fn resolve_proof_config_rejects_unstamped_bundle() { FILE: crates/dsperse/src/backend/onnx.rs function coerce_tdim_inputs (line 11) | pub fn coerce_tdim_inputs(inputs: &TVec) -> TVec { type NamedOutputs (line 29) | pub type NamedOutputs = HashMap, Vec)>; function load_onnx_model (line 31) | fn load_onnx_model(onnx_path: &Path) -> Result { function resolve_concrete_shape (line 37) | fn resolve_concrete_shape(model: &InferenceModel, input_shape: &[usize])... function resolve_input_datum_type (line 66) | fn resolve_input_datum_type(model: &InferenceModel, idx: usize) -> Resul... function optimize_to_runnable (line 77) | fn optimize_to_runnable( function run_inference_with_coercion (line 91) | pub fn run_inference_with_coercion( function extract_all_outputs (line 155) | fn extract_all_outputs(result: &[TValue]) -> Result { function load_runnable (line 165) | fn load_runnable( constant I64_SAFE_BOUND_F64 (line 176) | const I64_SAFE_BOUND_F64: f64 = I64_SAFE_BOUND as f64; function reject_non_finite (line 178) | fn reject_non_finite(v: f64, idx: usize, type_name: &str) -> Result<()> { function validate_integer_input (line 187) | fn validate_integer_input( function build_input_tvalue (line 213) | fn build_input_tvalue(input_data: &[f64], shape: &[usize], dt: DatumType... function run_single (line 301) | fn run_single( type WarmModel (line 312) | pub struct WarmModel { method load (line 319) | pub fn load(onnx_path: &Path, input_shape: &[usize]) -> Result { method run (line 328) | pub fn run(&self, input_data: &[f64]) -> Result<(Vec, Vec)> { function run_inference (line 334) | pub fn run_inference( function run_inference_named (line 344) | pub fn run_inference_named( function run_inference_multi (line 372) | pub fn run_inference_multi( function run_inference_multi_named (line 380) | pub fn run_inference_multi_named( function run_multi_inner (line 388) | fn run_multi_inner( function collect_output_names (line 478) | fn collect_output_names(model: &InferenceModel) -> Vec { constant I64_SAFE_BOUND (line 493) | const I64_SAFE_BOUND: i64 = 9_007_199_254_740_992; function i64_to_f64_checked (line 495) | fn i64_to_f64_checked(v: i64, label: &str) -> Result { function u64_to_f64_checked (line 504) | fn u64_to_f64_checked(v: u64, label: &str) -> Result { function tvalue_to_f64 (line 513) | fn tvalue_to_f64(tv: &TValue, label: &str) -> Result<(Vec, Vec Result Result<(Vec, Vec Result Result { constant VERSION (line 18) | pub const VERSION: &str = env!("DSPERSE_DISPLAY_VERSION"); type Cli (line 22) | pub struct Cli { type Commands (line 30) | pub enum Commands { function dispatch (line 46) | pub fn dispatch(command: Commands) -> Result<()> { type SliceArgs (line 63) | pub struct SliceArgs { type CombineArgs (line 90) | pub struct CombineArgs { type CompileArgs (line 98) | pub struct CompileArgs { type RunArgs (line 154) | pub struct RunArgs { type ProveArgs (line 182) | pub struct ProveArgs { type VerifyArgs (line 194) | pub struct VerifyArgs { type PackageArgs (line 206) | pub struct PackageArgs { type PublishArgs (line 229) | pub struct PublishArgs { type FullRunArgs (line 253) | pub struct FullRunArgs { type SetupHolographicArgs (line 325) | pub struct SetupHolographicArgs { type CircuitOps (line 341) | struct CircuitOps(Vec); method as_refs (line 344) | fn as_refs(&self) -> Vec<&str> { function resolve_circuit_ops (line 349) | fn resolve_circuit_ops(proof_system_str: &str, circuit_ops: Option<&str>... function resolve_slices_dir (line 385) | fn resolve_slices_dir(slices_dir: Option, model_dir: &Path) -> ... function cmd_slice (line 389) | pub fn cmd_slice(args: SliceArgs) -> Result<()> { function cmd_combine (line 409) | pub fn cmd_combine(args: CombineArgs) -> Result<()> { function cmd_compile (line 417) | pub fn cmd_compile(args: CompileArgs) -> Result<()> { function cmd_run (line 448) | pub fn cmd_run(args: RunArgs) -> Result<()> { function cmd_prove (line 474) | pub fn cmd_prove(args: ProveArgs) -> Result<()> { function cmd_verify (line 482) | pub fn cmd_verify(args: VerifyArgs) -> Result<()> { function cmd_package (line 490) | pub fn cmd_package(args: PackageArgs) -> Result<()> { function cmd_publish (line 518) | pub fn cmd_publish(args: PublishArgs) -> Result<()> { function cmd_full_run (line 551) | pub fn cmd_full_run(args: FullRunArgs) -> Result<()> { function cmd_setup_holographic (line 620) | pub fn cmd_setup_holographic(args: SetupHolographicArgs) -> Result<()> { type AnalyzeArgs (line 642) | pub struct AnalyzeArgs { type AnalyzeFormat (line 680) | pub enum AnalyzeFormat { method fmt (line 686) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { function cmd_analyze (line 694) | fn cmd_analyze(args: AnalyzeArgs) -> Result<()> { function parse_index_spec (line 788) | fn parse_index_spec(spec: &str) -> Result> { function run_id (line 821) | fn run_id() -> String { function parse_index_spec_single (line 835) | fn parse_index_spec_single() { function parse_index_spec_multiple (line 840) | fn parse_index_spec_multiple() { function parse_index_spec_range (line 845) | fn parse_index_spec_range() { function parse_index_spec_mixed (line 850) | fn parse_index_spec_mixed() { function parse_index_spec_whitespace_tolerance (line 855) | fn parse_index_spec_whitespace_tolerance() { function parse_index_spec_empty_rejected (line 860) | fn parse_index_spec_empty_rejected() { function parse_index_spec_invalid_token (line 865) | fn parse_index_spec_invalid_token() { function parse_index_spec_reversed_range (line 870) | fn parse_index_spec_reversed_range() { function parse_index_spec_trailing_comma (line 875) | fn parse_index_spec_trailing_comma() { function run_id_format (line 880) | fn run_id_format() { function run_id_unique (line 889) | fn run_id_unique() { function cli_parse_slice_command (line 896) | fn cli_parse_slice_command() { function cli_parse_run_command (line 902) | fn cli_parse_run_command() { function cli_log_level_default (line 915) | fn cli_log_level_default() { function cli_log_level_override (line 921) | fn cli_log_level_override() { function cli_compile_with_layers (line 934) | fn cli_compile_with_layers() { function cli_run_parallel (line 951) | fn cli_run_parallel() { function cli_slice_with_tile_size (line 970) | fn cli_slice_with_tile_size() { function cli_parse_combine_command (line 987) | fn cli_parse_combine_command() { function cli_parse_combine_with_slices_dir (line 993) | fn cli_parse_combine_with_slices_dir() { function cli_run_combined_default_true (line 1013) | fn cli_run_combined_default_true() { function cli_run_combined_explicit_false (line 1030) | fn cli_run_combined_explicit_false() { function cli_compile_holographic_default_false (line 1049) | fn cli_compile_holographic_default_false() { function cli_compile_holographic_explicit_true (line 1059) | fn cli_compile_holographic_explicit_true() { function cli_full_run_holographic_explicit_true (line 1076) | fn cli_full_run_holographic_explicit_true() { function cli_setup_holographic_command (line 1093) | fn cli_setup_holographic_command() { function cli_setup_holographic_overwrite (line 1111) | fn cli_setup_holographic_overwrite() { function cli_compile_wai_default_true (line 1128) | fn cli_compile_wai_default_true() { function cli_compile_wai_explicit_false (line 1138) | fn cli_compile_wai_explicit_false() { function resolve_circuit_ops_invalid_proof_system (line 1155) | fn resolve_circuit_ops_invalid_proof_system() { function resolve_circuit_ops_unsupported_op (line 1161) | fn resolve_circuit_ops_unsupported_op() { function resolve_circuit_ops_empty_spec_rejected (line 1167) | fn resolve_circuit_ops_empty_spec_rejected() { function resolve_circuit_ops_whitespace_only_spec_rejected (line 1173) | fn resolve_circuit_ops_whitespace_only_spec_rejected() { function resolve_circuit_ops_valid_specific_ops (line 1179) | fn resolve_circuit_ops_valid_specific_ops() { function resolve_circuit_ops_none_returns_all (line 1188) | fn resolve_circuit_ops_none_returns_all() { function resolve_slices_dir_custom_path (line 1195) | fn resolve_slices_dir_custom_path() { function resolve_slices_dir_default_fallback (line 1201) | fn resolve_slices_dir_default_fallback() { FILE: crates/dsperse/src/converter.rs function prepare_jstprove_artifacts (line 10) | pub fn prepare_jstprove_artifacts( function prepare_jstprove_artifacts_filtered (line 17) | pub fn prepare_jstprove_artifacts_filtered( function prepare_jstprove_artifacts_nonexistent_model (line 56) | fn prepare_jstprove_artifacts_nonexistent_model() { function prepare_jstprove_artifacts_with_weights_as_inputs (line 62) | fn prepare_jstprove_artifacts_with_weights_as_inputs() { FILE: crates/dsperse/src/error.rs type Result (line 3) | pub type Result = std::result::Result; type DsperseError (line 6) | pub enum DsperseError { method io (line 42) | pub fn io(source: std::io::Error, path: impl Into) -> Self { FILE: crates/dsperse/src/main.rs function main (line 6) | fn main() { FILE: crates/dsperse/src/pipeline/channel_split.rs function reshape_channel_split_output (line 16) | pub(crate) fn reshape_channel_split_output( function execute_channel_split (line 52) | pub(crate) fn execute_channel_split( function execute_channel_group (line 243) | fn execute_channel_group( FILE: crates/dsperse/src/pipeline/combined.rs type CombinedRun (line 15) | pub struct CombinedRun { method new (line 26) | pub fn new(slices_dir: &Path, input: ArrayD) -> Result { method all_circuit_work (line 105) | pub fn all_circuit_work(&self) -> Result> { method mark_slice_done (line 171) | pub fn mark_slice_done(&mut self, slice_id: &str) -> bool { method mark_slice_failed (line 175) | pub fn mark_slice_failed(&mut self, slice_id: &str) -> bool { method is_slice_failed (line 183) | pub fn is_slice_failed(&self, slice_id: &str) -> bool { method failed_count (line 187) | pub fn failed_count(&self) -> usize { method is_complete (line 191) | pub fn is_complete(&self) -> bool { method model_meta (line 195) | pub fn model_meta(&self) -> &ModelMetadata { method final_output (line 199) | pub fn final_output(&self) -> Option<&ArrayD> { method expected_slice_outputs (line 214) | pub fn expected_slice_outputs(&self, slice_id: &str) -> Option Option> { method slice_tile_counts (line 229) | pub fn slice_tile_counts(&self) -> (usize, usize, HashMap &Path { method pending_count (line 245) | pub fn pending_count(&self) -> usize { function run_combined_onnx (line 250) | fn run_combined_onnx( function seed_tensor_cache_from_initializers (line 274) | fn seed_tensor_cache_from_initializers( FILE: crates/dsperse/src/pipeline/compiler.rs type CircuitCache (line 14) | type CircuitCache = std::sync::Mutex>; type CompileOutcome (line 16) | enum CompileOutcome { type CompileReport (line 37) | pub struct CompileReport { method ok_if_no_failures (line 50) | pub fn ok_if_no_failures(self) -> Result { function normalize_split_metadata (line 70) | fn normalize_split_metadata( function compile_slices (line 127) | pub fn compile_slices( type SliceAnalysis (line 298) | struct SliceAnalysis { constant DATA_MOVEMENT_OPS (line 303) | const DATA_MOVEMENT_OPS: &[&str] = &[ function analyze_slice_onnx (line 319) | fn analyze_slice_onnx(onnx_path: &Path, jstprove_ops: &[&str]) -> Result... function compute_circuit_signature (line 340) | pub(super) fn compute_circuit_signature(tmpl_path: &Path, curve: Option<... function compute_bundle_signature (line 437) | pub(super) fn compute_bundle_signature( function summarize_onnx_ops (line 501) | fn summarize_onnx_ops(onnx_path: &Path) -> String { type SliceAnalysisReport (line 528) | pub struct SliceAnalysisReport { function derive_slice_report_metrics (line 550) | fn derive_slice_report_metrics( function analyze_slices (line 563) | pub fn analyze_slices( function estimate_onnx_constraints (line 733) | fn estimate_onnx_constraints(onnx_path: &Path) -> Result { function extract_graph_shapes (line 743) | fn extract_graph_shapes( function normalize_slice_for_backend (line 794) | fn normalize_slice_for_backend(onnx_path: &Path) -> Result Result { function setup_holographic_for_slices (line 1008) | pub fn setup_holographic_for_slices( function run_holographic_setup (line 1098) | fn run_holographic_setup( function populate_channel_split_groups (line 1127) | fn populate_channel_split_groups( function compile_channel_split_slice (line 1187) | fn compile_channel_split_slice( function compile_dim_split_template (line 1380) | fn compile_dim_split_template( function copy_dir_recursive (line 1540) | fn copy_dir_recursive(src: &Path, dst: &Path) -> Result<()> { function resolve_compile_onnx (line 1555) | fn resolve_compile_onnx( function test_models_dir (line 1584) | fn test_models_dir() -> std::path::PathBuf { function make_slice_metadata (line 1588) | fn make_slice_metadata(index: usize, path: &str) -> SliceMetadata { constant TEST_OPS (line 1611) | const TEST_OPS: &[&str] = &["Conv", "Gemm", "MatMul"]; function analyze_slice_onnx_nonexistent (line 1614) | fn analyze_slice_onnx_nonexistent() { function analyze_slice_onnx_test_model (line 1620) | fn analyze_slice_onnx_test_model() { function analyze_slice_onnx_with_initializers (line 1632) | fn analyze_slice_onnx_with_initializers() { function analyze_slice_onnx_without_initializers (line 1654) | fn analyze_slice_onnx_without_initializers() { function resolve_compile_onnx_no_tiling (line 1671) | fn resolve_compile_onnx_no_tiling() { function resolve_compile_onnx_with_tile (line 1683) | fn resolve_compile_onnx_with_tile() { function resolve_compile_onnx_tile_missing_falls_back (line 1723) | fn resolve_compile_onnx_tile_missing_falls_back() { function write_identity_onnx (line 1761) | fn write_identity_onnx(path: &Path) { function bundle_signature_differs_from_circuit_signature_even_without_metadata (line 1780) | fn bundle_signature_differs_from_circuit_signature_even_without_metadata... function bundle_signature_disambiguates_vk_presence (line 1803) | fn bundle_signature_disambiguates_vk_presence() { function bundle_signature_disambiguates_proof_config_and_wai_on_metadata_branch (line 1824) | fn bundle_signature_disambiguates_proof_config_and_wai_on_metadata_branc... FILE: crates/dsperse/src/pipeline/dim_split.rs function execute_dim_split (line 13) | pub(crate) fn execute_dim_split( function execute_matmul_dim_split (line 63) | fn execute_matmul_dim_split( function execute_generic_dim_split (line 294) | fn execute_generic_dim_split( function resolve_output_shape (line 420) | fn resolve_output_shape( FILE: crates/dsperse/src/pipeline/incremental.rs type SliceWork (line 14) | pub struct SliceWork { type SliceExecutionResult (line 27) | pub struct SliceExecutionResult { type IncrementalRun (line 33) | pub struct IncrementalRun { method new (line 44) | pub fn new(slices_dir: &Path, input: ArrayD) -> Result { method next_slice (line 78) | pub fn next_slice(&self) -> Result> { method apply_result (line 130) | pub fn apply_result(&mut self, result: SliceExecutionResult) -> Result... method is_complete (line 194) | pub fn is_complete(&self) -> bool { method final_output (line 198) | pub fn final_output(&self) -> Option<&ArrayD> { method into_run_metadata (line 213) | pub fn into_run_metadata(self) -> RunMetadata { method slices_dir (line 220) | pub fn slices_dir(&self) -> &Path { method model_meta (line 224) | pub fn model_meta(&self) -> &ModelMetadata { method run_meta (line 228) | pub fn run_meta(&self) -> &RunMetadata { method tensor_cache (line 232) | pub fn tensor_cache(&self) -> &TensorStore { FILE: crates/dsperse/src/pipeline/packager.rs type PackageConfig (line 16) | pub struct PackageConfig { type PackageResult (line 26) | pub struct PackageResult { type ArtifactRef (line 34) | struct ArtifactRef { type Manifest (line 42) | struct Manifest { type ModelInfo (line 52) | struct ModelInfo { type InputSchema (line 70) | struct InputSchema { type ComponentEntry (line 77) | struct ComponentEntry { type WeightRef (line 90) | struct WeightRef { type DagNode (line 98) | struct DagNode { constant VALID_CURVES (line 106) | const VALID_CURVES: &[&str] = &[ function normalize_curve (line 115) | fn normalize_curve(curve: Option<&str>) -> Result> { function package_content_addressed (line 130) | pub fn package_content_addressed( function resolve_circuit_dir (line 306) | fn resolve_circuit_dir(slices_dir: &Path, slice: &SliceMetadata) -> Resu... type ComponentSource (line 334) | enum ComponentSource { function resolve_source_onnx (line 339) | fn resolve_source_onnx(slices_dir: &Path, slice: &SliceMetadata) -> Resu... function list_bundle_files (line 387) | fn list_bundle_files(dir: &Path) -> Result> { function extract_component (line 413) | fn extract_component( function collect_payload_blobs (line 454) | fn collect_payload_blobs( function reject_symlink_path (line 504) | fn reject_symlink_path(path: &Path) -> Result<()> { function reject_symlink (line 517) | fn reject_symlink(entry: &walkdir::DirEntry) -> Result<()> { function hash_named_file (line 527) | fn hash_named_file(path: &Path, filename: &str, curve: Option<&str>) -> ... function sha256_bytes (line 554) | fn sha256_bytes(data: &[u8]) -> String { function encode_hex (line 560) | fn encode_hex(bytes: &[u8]) -> String { function copy_files_flat (line 569) | fn copy_files_flat(source_dir: &Path, dest_dir: &Path) -> Result { function write_minimal_onnx (line 605) | fn write_minimal_onnx(path: &Path, input_dim: i64) { function create_test_model_metadata (line 623) | fn create_test_model_metadata(slices_dir: &Path, count: usize) { function ensure_test_artifacts (line 697) | fn ensure_test_artifacts(slices_dir: &Path) { function test_content_addressed_output_structure (line 705) | fn test_content_addressed_output_structure() { function test_missing_model_onnx_fails (line 746) | fn test_missing_model_onnx_fails() { function test_symlinked_artifact_rejected (line 769) | fn test_symlinked_artifact_rejected() { function test_manifest_structure (line 794) | fn test_manifest_structure() { function test_component_files_exist (line 840) | fn test_component_files_exist() { function test_wb_files_exist (line 871) | fn test_wb_files_exist() { function test_hash_determinism (line 903) | fn test_hash_determinism() { function test_curve_changes_hash (line 945) | fn test_curve_changes_hash() { function test_curve_changes_hash_uncompiled_onnx (line 1005) | fn test_curve_changes_hash_uncompiled_onnx() { function test_invalid_curve_rejected (line 1108) | fn test_invalid_curve_rejected() { function test_curve_normalization (line 1140) | fn test_curve_normalization() { function test_deduplication_shared_circuits (line 1194) | fn test_deduplication_shared_circuits() { function test_uncompiled_onnx_only_slice (line 1281) | fn test_uncompiled_onnx_only_slice() { function test_missing_artifact_errors (line 1361) | fn test_missing_artifact_errors() { function test_path_traversal_rejected (line 1430) | fn test_path_traversal_rejected() { function test_nonexistent_dir (line 1501) | fn test_nonexistent_dir() { function test_identical_bytes_different_filenames_distinct_hashes (line 1516) | fn test_identical_bytes_different_filenames_distinct_hashes() { function test_symlink_payload_rejected (line 1610) | fn test_symlink_payload_rejected() { FILE: crates/dsperse/src/pipeline/prover.rs function prove_run (line 9) | pub fn prove_run( FILE: crates/dsperse/src/pipeline/publisher.rs constant REQUEST_TIMEOUT (line 9) | const REQUEST_TIMEOUT: Duration = Duration::from_secs(30); constant UPLOAD_TIMEOUT (line 10) | const UPLOAD_TIMEOUT: Duration = Duration::from_secs(300); type PublishConfig (line 12) | pub struct PublishConfig { type PublishResult (line 24) | pub struct PublishResult { function auth_header (line 32) | fn auth_header(token: &str) -> String { function publish (line 36) | pub fn publish(dir: &Path, config: &PublishConfig) -> Result Result Self { function resolve_circuit_path_required (line 44) | fn resolve_circuit_path_required( function resolve_circuit_path_optional (line 55) | pub(crate) fn resolve_circuit_path_optional( function load_model_metadata (line 64) | pub fn load_model_metadata(slices_dir: &Path) -> Result { function validate_weights_onnx (line 86) | fn validate_weights_onnx( function load_donor_model (line 118) | fn load_donor_model( function donor_init_map (line 134) | fn donor_init_map( function run_inference (line 150) | pub fn run_inference( function run_combined_inference (line 397) | fn run_combined_inference( function execute_slice (line 767) | fn execute_slice( function execute_single (line 872) | fn execute_single( function store_named_outputs (line 986) | fn store_named_outputs( function collect_named_outputs (line 997) | fn collect_named_outputs( function run_onnx_inference (line 1019) | pub(crate) fn run_onnx_inference(onnx_path: &Path, input: &ArrayD) ... function run_onnx_inference_named (line 1029) | pub(crate) fn run_onnx_inference_named( function run_onnx_inference_multi_named (line 1038) | pub(crate) fn run_onnx_inference_multi_named( function build_execution_chain (line 1057) | pub(crate) fn build_execution_chain( function build_run_metadata (line 1126) | pub(crate) fn build_run_metadata( function extract_initializers_from_map (line 1171) | pub(crate) fn extract_initializers_from_map( function extract_onnx_initializers (line 1213) | pub fn extract_onnx_initializers( function flatten_cached_inputs (line 1226) | pub(crate) fn flatten_cached_inputs(cache: &TensorStore, names: &[String... function generate_wai_witness (line 1236) | pub(crate) fn generate_wai_witness( function make_tiling (line 1268) | fn make_tiling( function reshape_to_4d_valid (line 1302) | fn reshape_to_4d_valid() { function reshape_to_4d_single_element (line 1309) | fn reshape_to_4d_single_element() { function reshape_to_4d_mismatch (line 1317) | fn reshape_to_4d_mismatch() { function reshape_to_4d_empty (line 1323) | fn reshape_to_4d_empty() { function split_into_tiles_2x2_no_halo (line 1329) | fn split_into_tiles_2x2_no_halo() { function split_into_tiles_with_halo (line 1341) | fn split_into_tiles_with_halo() { function split_into_tiles_negative_halo_rejected (line 1353) | fn split_into_tiles_negative_halo_rejected() { function split_into_tiles_batch_gt1_rejected (line 1360) | fn split_into_tiles_batch_gt1_rejected() { function reconstruct_from_tiles_2x2 (line 1367) | fn reconstruct_from_tiles_2x2() { function reconstruct_from_tiles_empty (line 1388) | fn reconstruct_from_tiles_empty() { function reconstruct_from_tiles_wrong_element_count (line 1394) | fn reconstruct_from_tiles_wrong_element_count() { function reconstruct_from_tiles_wrong_tile_count (line 1401) | fn reconstruct_from_tiles_wrong_tile_count() { function split_reconstruct_roundtrip (line 1420) | fn split_reconstruct_roundtrip() { function store_named_outputs_basic (line 1442) | fn store_named_outputs_basic() { function store_named_outputs_missing_name_errors (line 1455) | fn store_named_outputs_missing_name_errors() { function store_named_outputs_partial_write_errors (line 1464) | fn store_named_outputs_partial_write_errors() { function run_config_default (line 1480) | fn run_config_default() { function multi_input_activation_concatenation_ordering (line 1489) | fn multi_input_activation_concatenation_ordering() { function multi_input_activation_missing_tensor_error (line 1520) | fn multi_input_activation_missing_tensor_error() { FILE: crates/dsperse/src/pipeline/slice_cache.rs type SliceAssets (line 6) | pub struct SliceAssets { method load_from_dslice (line 12) | pub fn load_from_dslice(slices_dir: &Path, slice_id: &str) -> Result ExecutionMethod { method action_label (line 28) | fn action_label(&self) -> &'static str { method past_label (line 35) | fn past_label(&self) -> &'static str { method error_label (line 42) | fn error_label(&self) -> &'static str { function run_pipeline_stage (line 50) | pub fn run_pipeline_stage( function execute_single_slice (line 160) | fn execute_single_slice( function execute_stage_operation (line 220) | fn execute_stage_operation( function execute_tiled_stage (line 274) | fn execute_tiled_stage( function execute_tile_stage_operation (line 356) | fn execute_tile_stage_operation( FILE: crates/dsperse/src/pipeline/strategy.rs type ExecutionStrategy (line 6) | pub enum ExecutionStrategy<'a> { function from_metadata (line 14) | pub fn from_metadata(meta: &'a RunSliceMetadata, use_circuit: bool) -> R... function execution_method (line 52) | pub fn execution_method(&self) -> ExecutionMethod { function output_name (line 62) | pub fn output_name(&self) -> Option<&str> { FILE: crates/dsperse/src/pipeline/tensor_store.rs type TensorStore (line 8) | pub struct TensorStore { method new (line 13) | pub fn new() -> Self { method get (line 17) | pub fn get(&self, name: &str) -> Result<&ArrayD> { method try_get (line 23) | pub fn try_get(&self, name: &str) -> Option<&ArrayD> { method put (line 27) | pub fn put(&mut self, name: String, tensor: ArrayD) { method contains (line 31) | pub fn contains(&self, name: &str) -> bool { method len (line 35) | pub fn len(&self) -> usize { method is_empty (line 39) | pub fn is_empty(&self) -> bool { method keys (line 43) | pub fn keys(&self) -> impl Iterator { method as_map (line 47) | pub fn as_map(&self) -> &HashMap> { method gather (line 51) | pub fn gather(&self, names: &[String]) -> Result> { function put_and_get (line 62) | fn put_and_get() { function get_missing_returns_error (line 70) | fn get_missing_returns_error() { function try_get_missing_returns_none (line 76) | fn try_get_missing_returns_none() { function contains_check (line 82) | fn contains_check() { FILE: crates/dsperse/src/pipeline/tile_executor.rs function resolve_tile_circuit (line 9) | pub fn resolve_tile_circuit( function execute_tiles (line 34) | pub fn execute_tiles(parallel: usize, num_tiles: usize, op: F) -> ... function make_tiling (line 58) | fn make_tiling() -> TilingInfo { function resolve_tile_circuit_no_info (line 85) | fn resolve_tile_circuit_no_info() { function resolve_tile_circuit_with_default (line 92) | fn resolve_tile_circuit_with_default() { function resolve_tile_circuit_from_single_tile (line 100) | fn resolve_tile_circuit_from_single_tile() { function execute_tiles_collects_results (line 113) | fn execute_tiles_collects_results() { function execute_tiles_zero_tiles_errors (line 122) | fn execute_tiles_zero_tiles_errors() { FILE: crates/dsperse/src/pipeline/tiled.rs function execute_tiled (line 22) | pub(crate) fn execute_tiled( function execute_combined_tiled (line 374) | pub(crate) fn execute_combined_tiled( function prepare_tiles_from_cache (line 566) | pub(crate) fn prepare_tiles_from_cache( function split_for_tiling (line 607) | pub fn split_for_tiling(input: &ArrayD, tiling: &TilingInfo) -> Res... function split_into_tiles (line 672) | pub fn split_into_tiles(input: &Array4, tiling: &TilingInfo) -> Res... function reconstruct_from_tiles (line 724) | pub fn reconstruct_from_tiles( function trim_to_original_dims (line 792) | pub(crate) fn trim_to_original_dims(arr: ArrayD, tiling: &TilingInf... function split_into_tiles_1d (line 818) | pub(crate) fn split_into_tiles_1d( function reconstruct_from_tiles_1d (line 866) | pub(crate) fn reconstruct_from_tiles_1d( function trim_to_original_seq (line 909) | pub(crate) fn trim_to_original_seq(arr: ArrayD, tiling: &TilingInfo... function prepare_fixed_segments_from_cache (line 927) | pub(crate) fn prepare_fixed_segments_from_cache( function reconstruct_from_fixed_segments (line 971) | pub(crate) fn reconstruct_from_fixed_segments( function reshape_to_4d (line 997) | pub(crate) fn reshape_to_4d(flat: &[f64], c: usize, h: usize, w: usize) ... function flatten_tile_inputs (line 1009) | pub(crate) fn flatten_tile_inputs(all_tiles: &[Vec>], tile_i... FILE: crates/dsperse/src/pipeline/verifier.rs function verify_run (line 9) | pub fn verify_run( FILE: crates/dsperse/src/python.rs function to_py_err (line 12) | fn to_py_err(e: DsperseError) -> PyErr { function to_pretty_json (line 30) | fn to_pretty_json(value: &T) -> PyResult { function resolve_ops (line 38) | fn resolve_ops(proof_system: &str, circuit_ops: Option<&[String]>) -> Py... function require_nonzero (line 58) | fn require_nonzero(parallel: usize) -> PyResult<()> { function slice_model (line 69) | fn slice_model( function compile_slices (line 99) | fn compile_slices( function run_inference (line 154) | fn run_inference( function prove_run (line 183) | fn prove_run(py: Python<'_>, run_dir: &str, slices_dir: &str, parallel: ... function verify_run (line 196) | fn verify_run( function cli_main (line 214) | fn cli_main(py: Python<'_>, argv: Option>) -> PyResult<()> { function setup_holographic (line 243) | fn setup_holographic( function _native (line 267) | fn _native(m: &Bound<'_, PyModule>) -> PyResult<()> { FILE: crates/dsperse/src/schema/execution.rs type ExecutionMethod (line 9) | pub enum ExecutionMethod { method fmt (line 20) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type TileResult (line 34) | pub struct TileResult { method failure (line 48) | pub fn failure( method success (line 64) | pub fn success(tile_idx: usize, method: Option, time_... type ExecutionInfo (line 77) | pub struct ExecutionInfo { type StrategyOutput (line 90) | pub struct StrategyOutput { type SliceResult (line 96) | pub struct SliceResult { method failure (line 112) | pub fn failure( method success (line 129) | pub fn success(slice_id: impl Into, method: ExecutionMethod, t... type ExecutionNode (line 143) | pub struct ExecutionNode { method default (line 162) | fn default() -> Self { type ExecutionResultEntry (line 177) | pub struct ExecutionResultEntry { type ExecutionChain (line 188) | pub struct ExecutionChain { method get_result_for_slice (line 204) | pub fn get_result_for_slice(&self, slice_id: &str) -> Option<&Executio... type RunMetadata (line 212) | pub struct RunMetadata { method get_slice (line 228) | pub fn get_slice(&self, slice_id: &str) -> Option<&RunSliceMetadata> { method iter_circuit_slices (line 232) | pub fn iter_circuit_slices(&self) -> impl Iterator bool { FILE: crates/dsperse/src/schema/metadata.rs type BackendKind (line 9) | pub enum BackendKind { method fmt (line 17) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type TensorShape (line 26) | pub struct TensorShape { type Dependencies (line 34) | pub struct Dependencies { type CompilationFiles (line 44) | pub struct CompilationFiles { type BackendCompilation (line 56) | pub struct BackendCompilation { type Compilation (line 71) | pub struct Compilation { type SliceShapeWrapper (line 77) | pub struct SliceShapeWrapper { type SliceMetadata (line 83) | pub struct SliceMetadata { method split_strategy (line 111) | pub fn split_strategy(&self) -> Option &[String] { method resolve_onnx (line 124) | pub fn resolve_onnx( type RunSliceMetadata (line 137) | pub struct RunSliceMetadata { method split_strategy (line 169) | pub fn split_strategy(&self) -> Option crate::error::Result { method save (line 219) | pub fn save(&self, path: &std::path::Path) -> crate::error::Result<()> { method stamp_version (line 231) | pub fn stamp_version(&mut self) { FILE: crates/dsperse/src/schema/tiling.rs type SplitStrategy (line 4) | pub enum SplitStrategy<'a> { type TileInfo (line 11) | pub struct TileInfo { type TilingInfo (line 21) | pub struct TilingInfo { method all_input_names (line 67) | pub fn all_input_names(&self) -> Vec<&str> { type ChannelGroupInfo (line 77) | pub struct ChannelGroupInfo { type ChannelSplitInfo (line 93) | pub struct ChannelSplitInfo { function default_one (line 122) | fn default_one() -> usize { function default_four (line 126) | fn default_four() -> usize { function default_pair_zero (line 130) | fn default_pair_zero() -> [i64; 2] { function default_pair_one (line 134) | fn default_pair_one() -> [i64; 2] { function default_quad_zero (line 138) | fn default_quad_zero() -> [i64; 4] { function deserialize_halo (line 142) | fn deserialize_halo<'de, D>(deserializer: D) -> std::result::Result<[i64... type DimSplitKind (line 159) | pub enum DimSplitKind { type DimSplitInfo (line 167) | pub struct DimSplitInfo { method from_detection (line 203) | pub fn from_detection( function default_input_name (line 236) | fn default_input_name() -> String { function default_output_name (line 240) | fn default_output_name() -> String { FILE: crates/dsperse/src/slicer/analyzer.rs type NodeAnalysis (line 11) | pub struct NodeAnalysis { type ParameterDetail (line 20) | pub struct ParameterDetail { type NodeDependencies (line 26) | pub struct NodeDependencies { type AnalysisResult (line 32) | pub struct AnalysisResult { function analyze (line 45) | pub fn analyze(model: &ModelProto, onnx_path: Option<&Path>) -> Result Vec> { function get_model_output_names (line 145) | fn get_model_output_names(graph: &GraphProto) -> Vec { function get_parameter_details (line 149) | fn get_parameter_details( function get_segment_dependencies (line 174) | pub fn get_segment_dependencies( function make_node (line 251) | fn make_node( function make_model_with_nodes (line 271) | fn make_model_with_nodes(nodes: Vec) -> ModelProto { function make_model_with_initializers (line 278) | fn make_model_with_initializers( function analyze_empty_model (line 289) | fn analyze_empty_model() { function analyze_single_relu (line 298) | fn analyze_single_relu() { function analyze_conv_with_initializer (line 308) | fn analyze_conv_with_initializer() { function analyze_non_param_op_has_no_details (line 328) | fn analyze_non_param_op_has_no_details() { function analyze_model_no_graph (line 340) | fn analyze_model_no_graph() { function analyze_dependencies_tracked (line 349) | fn analyze_dependencies_tracked() { function analyze_unnamed_nodes_get_generated_keys (line 366) | fn analyze_unnamed_nodes_get_generated_keys() { function get_segment_dependencies_basic (line 375) | fn get_segment_dependencies_basic() { function make_attribute_graph (line 420) | fn make_attribute_graph( function analyze_loop_captures_outer_scope_refs (line 433) | fn analyze_loop_captures_outer_scope_refs() { function analyze_if_captures_outer_scope_refs (line 515) | fn analyze_if_captures_outer_scope_refs() { function segment_deps_include_subgraph_outer_refs (line 611) | fn segment_deps_include_subgraph_outer_refs() { function analyze_nested_subgraph_captures_outer_scope_refs (line 687) | fn analyze_nested_subgraph_captures_outer_scope_refs() { FILE: crates/dsperse/src/slicer/autotiler.rs function try_pair (line 8) | fn try_pair(v: &[i64]) -> Option<[i64; 2]> { function try_quad (line 16) | fn try_quad(v: &[i64]) -> Option<[i64; 4]> { function model_opset (line 24) | pub(crate) fn model_opset(model: &ModelProto) -> i64 { function is_elementwise (line 34) | fn is_elementwise(op: &str) -> bool { type ChannelSplitParams (line 39) | pub struct ChannelSplitParams { type PoolParams (line 49) | struct PoolParams { method from_node (line 58) | fn from_node(node: &NodeProto, node_idx: usize) -> Option { function get_pool_params (line 103) | fn get_pool_params(graph: &GraphProto) -> Option { type ConvParams (line 112) | struct ConvParams { method from_node (line 124) | fn from_node(node: &NodeProto, node_idx: usize, graph: &GraphProto) ->... function get_conv_params (line 200) | fn get_conv_params(graph: &GraphProto) -> Option { function effective_kernel (line 209) | fn effective_kernel(kernel: [i64; 2], dilation: [i64; 2]) -> Option<[i64... function conv_output_hw (line 221) | fn conv_output_hw( function compute_halo_size (line 249) | fn compute_halo_size(pads: [i64; 4]) -> Option<[i64; 4]> { function compute_min_spatial_tile (line 256) | fn compute_min_spatial_tile(kernel: [i64; 2], dilation: [i64; 2]) -> Opt... type SpatialKernelParams (line 261) | struct SpatialKernelParams { function extract_spatial_kernel_params (line 268) | fn extract_spatial_kernel_params( function is_spatial_tileable (line 307) | fn is_spatial_tileable(graph: &GraphProto, primary_op: &str) -> bool { function is_standard_conv_slice (line 319) | fn is_standard_conv_slice(graph: &GraphProto) -> Option { function is_tileable (line 324) | fn is_tileable(graph: &GraphProto) -> bool { function is_channel_splittable (line 328) | fn is_channel_splittable(graph: &GraphProto) -> bool { function get_model_dimensions (line 335) | fn get_model_dimensions(graph: &GraphProto) -> Option<(String, String, i... function is_elementwise_only_slice (line 351) | fn is_elementwise_only_slice(graph: &GraphProto) -> bool { function find_weights_and_bias (line 358) | fn find_weights_and_bias( type WeightInfo (line 380) | struct WeightInfo { type SlicePrologue (line 385) | struct SlicePrologue<'a> { function extract_slice_prologue (line 392) | fn extract_slice_prologue(model: &ModelProto) -> Option i64 { function detect_elementwise_fixed_segments (line 615) | fn detect_elementwise_fixed_segments(graph: &GraphProto) -> Option Option { type DimSplitDetection (line 688) | pub struct DimSplitDetection { function estimate_slice_constraints (line 704) | pub fn estimate_slice_constraints(nodes: &[NodeProto], shapes: &HashMap<... function detect_dim_split (line 730) | pub fn detect_dim_split( type TilingDetection (line 1126) | pub enum TilingDetection { type SpatialTileGeometry (line 1164) | struct SpatialTileGeometry { function compute_spatial_tile_geometry (line 1173) | fn compute_spatial_tile_geometry( type TileModelSpec (line 1230) | struct TileModelSpec { function save_tile_model (line 1238) | fn save_tile_model( function create_tile_slice (line 1263) | pub fn create_tile_slice( function create_pool_tile_slice (line 1371) | pub fn create_pool_tile_slice( function integrate_extra_ops (line 1445) | fn integrate_extra_ops( function create_channel_group_slice (line 1539) | fn create_channel_group_slice( function i64_to_usize (line 1638) | fn i64_to_usize(val: i64, ctx: &str, name: &str) -> Result { function checked_dim_product (line 1644) | fn checked_dim_product(factors: &[usize]) -> Result { function slice_weights (line 1654) | fn slice_weights(weights: &WeightInfo, c_start: usize, c_end: usize) -> ... function save_conv_bias (line 1714) | fn save_conv_bias( function apply_channel_splitting (line 1738) | pub fn apply_channel_splitting( function create_dim_split_template (line 1889) | pub fn create_dim_split_template( function create_matmul_dim_template (line 1910) | fn create_matmul_dim_template( function check_axis_separable (line 2049) | fn check_axis_separable( function create_generic_dim_template (line 2118) | fn create_generic_dim_template( function create_elementwise_tile_slice (line 2362) | pub fn create_elementwise_tile_slice( type TileSliceResult (line 2503) | pub struct TileSliceResult { function halo_symmetric_pads (line 2513) | fn halo_symmetric_pads() { function halo_asymmetric_pads (line 2518) | fn halo_asymmetric_pads() { function halo_zero_pads (line 2523) | fn halo_zero_pads() { function halo_negative_pads_rejected (line 2528) | fn halo_negative_pads_rejected() { function halo_mixed_pads (line 2533) | fn halo_mixed_pads() { function min_tile_3x3_no_dilation (line 2538) | fn min_tile_3x3_no_dilation() { function min_tile_5x5_no_dilation (line 2543) | fn min_tile_5x5_no_dilation() { function min_tile_3x3_dilation_2 (line 2548) | fn min_tile_3x3_dilation_2() { function min_tile_1x1 (line 2554) | fn min_tile_1x1() { function optimal_tile_exact_divisor (line 2559) | fn optimal_tile_exact_divisor() { function optimal_tile_no_exact_divisor_falls_back (line 2564) | fn optimal_tile_no_exact_divisor_falls_back() { function optimal_tile_target_equals_spatial (line 2569) | fn optimal_tile_target_equals_spatial() { function optimal_tile_min_exceeds_target (line 2574) | fn optimal_tile_min_exceeds_target() { function optimal_tile_stride_constraint (line 2579) | fn optimal_tile_stride_constraint() { function optimal_tile_no_valid_stride_divisor (line 2585) | fn optimal_tile_no_valid_stride_divisor() { function checked_dim_product_normal (line 2590) | fn checked_dim_product_normal() { function checked_dim_product_empty (line 2595) | fn checked_dim_product_empty() { function checked_dim_product_overflow (line 2600) | fn checked_dim_product_overflow() { function checked_dim_product_single (line 2605) | fn checked_dim_product_single() { function slice_weights_basic (line 2610) | fn slice_weights_basic() { function slice_weights_single_channel (line 2625) | fn slice_weights_single_channel() { function slice_weights_start_ge_end (line 2636) | fn slice_weights_start_ge_end() { function slice_weights_end_exceeds_c_in (line 2645) | fn slice_weights_end_exceeds_c_in() { function slice_weights_insufficient_dims (line 2654) | fn slice_weights_insufficient_dims() { function slice_weights_data_length_mismatch (line 2663) | fn slice_weights_data_length_mismatch() { function elementwise_ops_recognized (line 2672) | fn elementwise_ops_recognized() { function non_elementwise_ops_rejected (line 2680) | fn non_elementwise_ops_rejected() { function spatial_tile_config_already_fits (line 2688) | fn spatial_tile_config_already_fits() { function spatial_tile_config_min_tile_too_large (line 2695) | fn spatial_tile_config_min_tile_too_large() { function spatial_tile_config_finds_tile (line 2702) | fn spatial_tile_config_finds_tile() { function channel_split_config_basic (line 2712) | fn channel_split_config_basic() { function channel_split_config_zero_dims (line 2722) | fn channel_split_config_zero_dims() { function channel_split_config_fits_without_splitting (line 2728) | fn channel_split_config_fits_without_splitting() { function detect_tiling_none_without_tile_size (line 2733) | fn detect_tiling_none_without_tile_size() { function detect_tiling_none_empty_graph (line 2742) | fn detect_tiling_none_empty_graph() { function effective_kernel_overflow (line 2751) | fn effective_kernel_overflow() { function effective_kernel_sub_underflow (line 2757) | fn effective_kernel_sub_underflow() { function effective_kernel_valid (line 2762) | fn effective_kernel_valid() { function conv_output_hw_zero_stride (line 2769) | fn conv_output_hw_zero_stride() { function conv_output_hw_kernel_exceeds_input (line 2781) | fn conv_output_hw_kernel_exceeds_input() { function conv_output_hw_overflow_pads (line 2789) | fn conv_output_hw_overflow_pads() { function conv_output_hw_valid (line 2797) | fn conv_output_hw_valid() { function compute_halo_size_negative_rejected (line 2809) | fn compute_halo_size_negative_rejected() { function compute_min_spatial_tile_overflow (line 2814) | fn compute_min_spatial_tile_overflow() { function slice_weights_full_range_is_identity (line 2819) | fn slice_weights_full_range_is_identity() { function detect_dim_split_gemm_trans_b (line 2831) | fn detect_dim_split_gemm_trans_b() { function detect_dim_split_matmul_no_trans (line 2865) | fn detect_dim_split_matmul_no_trans() { function detect_dim_split_k_chunks_saturate_budget (line 2894) | fn detect_dim_split_k_chunks_saturate_budget() { function detect_dim_split_single_row_with_k_chunking (line 2925) | fn detect_dim_split_single_row_with_k_chunking() { function detect_dim_split_skips_single_row_single_chunk (line 2949) | fn detect_dim_split_skips_single_row_single_chunk() { function detect_dim_split_declines_infeasible_n (line 2981) | fn detect_dim_split_declines_infeasible_n() { function detect_dim_split_skips_non_terminal_matmul (line 3008) | fn detect_dim_split_skips_non_terminal_matmul() { function detect_dim_split_picks_terminal_matmul_after_consumed_one (line 3044) | fn detect_dim_split_picks_terminal_matmul_after_consumed_one() { function detect_dim_split_skips_gemm_trans_a (line 3078) | fn detect_dim_split_skips_gemm_trans_a() { function detect_dim_split_skips_gemm_with_bias (line 3105) | fn detect_dim_split_skips_gemm_with_bias() { function create_matmul_dim_template_uses_info_weight_name (line 3140) | fn create_matmul_dim_template_uses_info_weight_name() { function create_matmul_dim_template_disambiguates_shared_weight (line 3203) | fn create_matmul_dim_template_disambiguates_shared_weight() { function make_maxpool_node (line 3267) | fn make_maxpool_node( function pool_params_valid (line 3290) | fn pool_params_valid() { function pool_params_rejects_ceil_mode (line 3300) | fn pool_params_rejects_ceil_mode() { function pool_params_accepts_ceil_mode_zero (line 3306) | fn pool_params_accepts_ceil_mode_zero() { function pool_params_rejects_auto_pad (line 3312) | fn pool_params_rejects_auto_pad() { function pool_params_rejects_non_maxpool (line 3332) | fn pool_params_rejects_non_maxpool() { function make_elementwise_model (line 3342) | fn make_elementwise_model(op: &str, shape: &[i64]) -> ModelProto { function fixed_segments_too_small_returns_none (line 3351) | fn fixed_segments_too_small_returns_none() { function fixed_segments_detects_large_tensor (line 3357) | fn fixed_segments_detects_large_tensor() { function fixed_segments_rejects_zero_dim (line 3381) | fn fixed_segments_rejects_zero_dim() { function fixed_segments_rejects_non_elementwise (line 3387) | fn fixed_segments_rejects_non_elementwise() { function create_pool_tile_slice_valid (line 3402) | fn create_pool_tile_slice_valid() { function create_pool_tile_slice_rejects_zero_tile (line 3416) | fn create_pool_tile_slice_rejects_zero_tile() { function create_pool_tile_slice_no_pool_node (line 3427) | fn create_pool_tile_slice_no_pool_node() { function estimate_slice_constraints_clamps_symbolic_dimensions (line 3439) | fn estimate_slice_constraints_clamps_symbolic_dimensions() { FILE: crates/dsperse/src/slicer/combiner.rs function materialize_combined_model (line 8) | pub fn materialize_combined_model( constant ONNX_STRING_DATATYPE (line 90) | const ONNX_STRING_DATATYPE: i32 = 8; constant NON_NUMERIC_TENSOR_TYPES (line 91) | const NON_NUMERIC_TENSOR_TYPES: &[i32] = &[ONNX_STRING_DATATYPE]; function resolve_value_info (line 93) | fn resolve_value_info( function ensure_combined_materialized (line 126) | pub fn ensure_combined_materialized( function materialize_combined_to_disk (line 137) | pub fn materialize_combined_to_disk( function make_test_model (line 174) | fn make_test_model( function bool_outputs_included_in_combined_model (line 237) | fn bool_outputs_included_in_combined_model() { function combined_model_has_intermediate_outputs (line 275) | fn combined_model_has_intermediate_outputs() { function combined_model_to_disk_roundtrip (line 300) | fn combined_model_to_disk_roundtrip() { function ensure_combined_is_idempotent (line 335) | fn ensure_combined_is_idempotent() { FILE: crates/dsperse/src/slicer/layernorm_fuse.rs function fuse_inline_layernorms (line 7) | pub fn fuse_inline_layernorms( type MatchedPattern (line 103) | struct MatchedPattern { function try_match_layernorm (line 116) | fn try_match_layernorm( function resolve_shape (line 265) | fn resolve_shape( function reduce_axes (line 283) | fn reduce_axes(node: &NodeProto, initializers: &HashMap Option { function find_unique_consumer (line 307) | fn find_unique_consumer( function find_square_consumer (line 323) | fn find_square_consumer( function pow_exponent_is_two (line 358) | fn pow_exponent_is_two(name: &str, initializers: &HashMap)>; type Replacement (line 413) | type Replacement = (Vec, Vec, ReplacementShapes); function emit_replacement (line 415) | fn emit_replacement( function materialize_1d_initializer (line 502) | fn materialize_1d_initializer( function const_vector (line 538) | fn const_vector(name: &str, len: usize, fill: f32) -> TensorProto { function make_f32_vector (line 542) | fn make_f32_vector(name: &str, vals: &[f32]) -> TensorProto { function normalize_axis (line 552) | fn normalize_axis(axis: i64, rank: usize) -> usize { function int_attr (line 560) | fn int_attr(name: &str, v: i64) -> AttributeProto { function float_attr (line 569) | fn float_attr(name: &str, v: f32) -> AttributeProto { function int_list_attr (line 578) | fn int_list_attr(name: &str, vals: &[i64]) -> AttributeProto { FILE: crates/dsperse/src/slicer/materializer.rs constant MAX_BACKWARD_DEPTH (line 10) | const MAX_BACKWARD_DEPTH: usize = 64; function resolve_shape_backward (line 12) | fn resolve_shape_backward( function resolve_shape_backward_inner (line 20) | fn resolve_shape_backward_inner( function materialize_slice_model (line 78) | pub fn materialize_slice_model( function materialize_slice_to_disk (line 188) | pub fn materialize_slice_to_disk( function ensure_slice_materialized (line 205) | pub fn ensure_slice_materialized( function materialize_tiling_artifacts (line 272) | fn materialize_tiling_artifacts( function ensure_all_slices_materialized (line 392) | pub fn ensure_all_slices_materialized(slices_dir: &Path, metadata: &Mode... function apply_traced_shapes (line 400) | fn apply_traced_shapes(mut model: ModelProto, shapes: &HashMap { type ShapeContext (line 524) | struct ShapeContext<'a> { function resolve_elem_type (line 536) | fn resolve_elem_type(&self, name: &str) -> i32 { function get_segment_details (line 554) | fn get_segment_details( function build_node_output_types (line 638) | pub fn build_node_output_types(graph: &GraphProto) -> HashMap Result<()> { function cleanup_extracted_slice (line 868) | pub fn cleanup_extracted_slice(slices_dir: &Path, slice_id: &str) { FILE: crates/dsperse/src/slicer/mod.rs constant UNARY_ACTIVATIONS (line 15) | pub(crate) const UNARY_ACTIVATIONS: &[&str] = &[ constant UNARY_STRUCTURAL (line 32) | pub(crate) const UNARY_STRUCTURAL: &[&str] = &["Cast", "Not", "Identity"... constant BINARY_ARITHMETIC (line 34) | pub(crate) const BINARY_ARITHMETIC: &[&str] = &["Add", "Sub", "Mul", "Di... constant NORMALIZATION_OPS (line 36) | pub(crate) const NORMALIZATION_OPS: &[&str] = constant LAYOUT_OPS (line 39) | pub(crate) const LAYOUT_OPS: &[&str] = &[ constant CONTROL_FLOW_OPS (line 48) | pub(crate) const CONTROL_FLOW_OPS: &[&str] = &["Loop", "If", "Scan"]; function is_control_flow (line 50) | pub(crate) fn is_control_flow(op: &str) -> bool { function collect_subgraph_outer_refs (line 54) | pub(crate) fn collect_subgraph_outer_refs( function collect_outer_refs_recursive (line 71) | fn collect_outer_refs_recursive( function is_shape_preserving (line 114) | pub(crate) fn is_shape_preserving(op: &str) -> bool { function is_slice_passthrough (line 134) | pub(crate) fn is_slice_passthrough(op: &str) -> bool { function is_elementwise (line 138) | pub(crate) fn is_elementwise(op: &str) -> bool { function is_binary_arithmetic (line 142) | pub(crate) fn is_binary_arithmetic(op: &str) -> bool { function build_segment_ranges (line 146) | pub(crate) fn build_segment_ranges( FILE: crates/dsperse/src/slicer/onnx_fold.rs function fold_constant_nodes (line 7) | pub fn fold_constant_nodes(model: &mut ModelProto) -> HashSet { function remove_identity_nodes (line 81) | pub fn remove_identity_nodes(graph: &mut GraphProto) -> usize { function eliminate_dead_nodes (line 149) | pub fn eliminate_dead_nodes(graph: &mut GraphProto) -> usize { function propagate_constants_with_shapes (line 182) | pub fn propagate_constants_with_shapes( function propagate_constants (line 239) | pub(crate) fn propagate_constants(graph: &mut GraphProto) -> HashSet Option Option Option Option Option usize { function sample_linear_2d (line 1091) | fn sample_linear_2d( function sample_cubic_2d (line 1119) | fn sample_cubic_2d( function cubic_weights (line 1181) | fn cubic_weights(t: f32, a: f32) -> [f32; 4] { function cubic_kernel (line 1194) | fn cubic_kernel(x: f32, a: f32) -> f32 { function clamp_axis (line 1205) | fn clamp_axis(i: isize, dim: usize) -> (bool, usize) { type ReduceOp (line 1216) | enum ReduceOp { function eval_reduce (line 1223) | fn eval_reduce( function eval_cast (line 1333) | fn eval_cast( function eval_unary_f32 (line 1418) | fn eval_unary_f32( function eval_binary_f32 (line 1432) | fn eval_binary_f32( function broadcast_shape (line 1471) | fn broadcast_shape(a_dims: &[i64], b_dims: &[i64]) -> Option> { function broadcast_index (line 1498) | fn broadcast_index(out_idx: usize, out_dims: &[i64], src_dims: &[i64]) -... constant MAX_BROADCAST_ELEMENTS (line 1514) | const MAX_BROADCAST_ELEMENTS: usize = 100_000_000; function broadcast_total (line 1516) | fn broadcast_total(out_dims: &[i64]) -> Option { function broadcast_binary (line 1528) | fn broadcast_binary( function broadcast_binary_i64 (line 1546) | fn broadcast_binary_i64( function eval_reshape (line 1564) | fn eval_reshape( function eval_squeeze (line 1614) | fn eval_squeeze( function eval_unsqueeze (line 1669) | fn eval_unsqueeze( function eval_shape (line 1709) | fn eval_shape( function eval_gather (line 1756) | fn eval_gather( function eval_slice (line 1826) | fn eval_slice(inputs: &[&TensorProto], out_name: &str) -> Option Option usize { FILE: crates/dsperse/src/slicer/onnx_proto.rs function load_model (line 23) | pub fn load_model(path: &Path) -> Result { function canonicalize_node_attributes (line 29) | fn canonicalize_node_attributes(nodes: &mut [NodeProto]) { function save_model (line 43) | pub fn save_model(model: &ModelProto, path: &Path) -> Result<()> { function make_tensor_value_info (line 58) | pub fn make_tensor_value_info(name: &str, elem_type: i32, shape: &[i64])... function make_tensor (line 85) | pub fn make_tensor(name: &str, elem_type: i32, dims: &[i64], float_data:... function make_node (line 95) | pub fn make_node( function make_graph (line 115) | pub fn make_graph( function make_model (line 132) | pub fn make_model(graph: GraphProto, opset_version: i64) -> ModelProto { function make_attribute_ints (line 144) | pub fn make_attribute_ints(name: &str, ints: &[i64]) -> AttributeProto { function make_attribute_int (line 153) | pub fn make_attribute_int(name: &str, val: i64) -> AttributeProto { function get_attribute_ints (line 162) | pub fn get_attribute_ints(node: &NodeProto, name: &str) -> Option Option { function get_attribute_float (line 173) | pub fn get_attribute_float(node: &NodeProto, name: &str) -> Option { function make_attribute_float (line 177) | pub fn make_attribute_float(name: &str, val: f32) -> AttributeProto { function tensor_to_i64 (line 186) | pub fn tensor_to_i64(tensor: &TensorProto) -> Vec { function tensor_to_f32 (line 211) | pub fn tensor_to_f32(tensor: &TensorProto) -> Vec { function tensor_to_f64 (line 290) | pub fn tensor_to_f64(tensor: &TensorProto) -> Vec { function build_initializer_map (line 351) | pub fn build_initializer_map(graph: &GraphProto) -> HashMap HashMap bool { function validate_initializer_compatibility (line 390) | pub fn validate_initializer_compatibility( function pad_float_data (line 429) | fn pad_float_data( function pad_raw_data_f32 (line 449) | fn pad_raw_data_f32(raw: &[u8], target_dims: &[i64], donor_dims: &[i64],... function replace_initializers (line 458) | pub fn replace_initializers( function build_patched_onnx (line 513) | pub fn build_patched_onnx( function model_opset_version (line 525) | fn model_opset_version(model: &ModelProto) -> i64 { function min_opset_for_op (line 534) | fn min_opset_for_op(op_type: &str) -> Option { function normalize_opset (line 543) | pub fn normalize_opset(model: &mut ModelProto) -> usize { function normalize_for_circuit_backend (line 613) | pub fn normalize_for_circuit_backend(model: &mut ModelProto) -> usize { function fix_zero_dims (line 633) | fn fix_zero_dims(graph: &mut GraphProto) -> usize { function flatten_matmul_inputs (line 673) | fn flatten_matmul_inputs(graph: &mut GraphProto) -> usize { function materialize_reshape_targets (line 870) | fn materialize_reshape_targets(graph: &mut GraphProto) -> usize { FILE: crates/dsperse/src/slicer/onnx_shapes.rs function shape_from_value_info (line 3) | pub fn shape_from_value_info(vi: &ValueInfoProto) -> Option> { function elem_type_from_value_info (line 19) | pub fn elem_type_from_value_info(vi: &ValueInfoProto) -> Option { function vi_shape (line 27) | pub fn vi_shape(vi: &ValueInfoProto) -> Vec { function set_vi_shape (line 46) | pub fn set_vi_shape(vi: &mut ValueInfoProto, shape: &[i64]) { function strip_symbolic_value_info (line 62) | pub fn strip_symbolic_value_info(model: &mut ModelProto) -> usize { function resolve_dynamic_input_shapes (line 114) | pub fn resolve_dynamic_input_shapes( FILE: crates/dsperse/src/slicer/onnx_slicer.rs function slice_model (line 14) | pub fn slice_model( function build_slice_metadata (line 254) | fn build_slice_metadata( function build_shape_from_traced (line 411) | fn build_shape_from_traced( function determine_slice_points (line 436) | fn determine_slice_points( function optimize_points (line 471) | fn optimize_points( function is_spatial_primary (line 486) | fn is_spatial_primary(op: &str) -> bool { function isolate_expensive_ops (line 498) | fn isolate_expensive_ops( function isolate_conv (line 600) | fn isolate_conv(points: &[usize], analysis: &AnalysisResult) -> Vec V... function filter_constant_only_slices (line 669) | fn filter_constant_only_slices(points: &[usize], analysis: &AnalysisResu... function merge_control_flow_segments (line 702) | fn merge_control_flow_segments(points: &[usize], analysis: &AnalysisResu... function complete_slice_points (line 744) | fn complete_slice_points(points: &mut Vec, analysis: &AnalysisRes... function broadcast_shapes (line 757) | pub(crate) fn broadcast_shapes(shapes: &[&Vec]) -> Option> { function make_analysis_with_params (line 782) | fn make_analysis_with_params(nodes: Vec<(&str, usize, &str, bool)>) -> A... constant TEST_OPS (line 823) | const TEST_OPS: &[&str] = &["Conv", "Gemm", "MatMul"]; function complete_slice_points_adds_boundaries (line 826) | fn complete_slice_points_adds_boundaries() { function complete_slice_points_already_complete (line 840) | fn complete_slice_points_already_complete() { function complete_slice_points_deduplicates (line 849) | fn complete_slice_points_deduplicates() { function isolate_conv_inserts_boundaries (line 857) | fn isolate_conv_inserts_boundaries() { function isolate_conv_no_convs (line 874) | fn isolate_conv_no_convs() { function isolate_maxpool_gets_boundary (line 883) | fn isolate_maxpool_gets_boundary() { function optimize_jstprove_slices_splits_at_boundary (line 892) | fn optimize_jstprove_slices_splits_at_boundary() { function optimize_jstprove_slices_all_supported (line 905) | fn optimize_jstprove_slices_all_supported() { function optimize_for_tiling_maxpool_stays_grouped (line 914) | fn optimize_for_tiling_maxpool_stays_grouped() { function optimize_for_tiling_splits_at_non_tileable (line 927) | fn optimize_for_tiling_splits_at_non_tileable() { function optimize_for_tiling_relu_after_non_tileable_kept (line 940) | fn optimize_for_tiling_relu_after_non_tileable_kept() { function filter_constant_only_slices_removes_constant_segments (line 952) | fn filter_constant_only_slices_removes_constant_segments() { function filter_constant_only_slices_keeps_non_constant (line 966) | fn filter_constant_only_slices_keeps_non_constant() { function filter_constant_only_slices_empty_points (line 975) | fn filter_constant_only_slices_empty_points() { function determine_slice_points_includes_parameterized_nodes (line 982) | fn determine_slice_points_includes_parameterized_nodes() { function determine_slice_points_with_tile_size (line 999) | fn determine_slice_points_with_tile_size() { type NodeSpec (line 1013) | type NodeSpec<'a> = (&'a str, usize, &'a str, bool, Vec<&'a str>, Vec<&'... function make_analysis_with_deps (line 1015) | fn make_analysis_with_deps(nodes: Vec>) -> AnalysisResult { function merge_control_flow_removes_boundary_between_producer_and_loop (line 1057) | fn merge_control_flow_removes_boundary_between_producer_and_loop() { function merge_control_flow_preserves_unrelated_boundaries (line 1095) | fn merge_control_flow_preserves_unrelated_boundaries() { function merge_control_flow_no_control_flow_ops (line 1141) | fn merge_control_flow_no_control_flow_ops() { function isolate_conv_absorbs_reshape_then_boundaries_on_matmul (line 1161) | fn isolate_conv_absorbs_reshape_then_boundaries_on_matmul() { function isolate_conv_absorbs_transpose_chain_then_boundaries_on_matmul (line 1200) | fn isolate_conv_absorbs_transpose_chain_then_boundaries_on_matmul() { function isolate_conv_stops_when_passthrough_consumes_external_input (line 1243) | fn isolate_conv_stops_when_passthrough_consumes_external_input() { FILE: crates/dsperse/src/slicer/self_div_rewrite.rs function rewrite_self_div_to_one (line 14) | pub fn rewrite_self_div_to_one( FILE: crates/dsperse/src/slicer/trace.rs type TraceResult (line 7) | pub(crate) struct TraceResult { function fold_and_trace_via_tract (line 12) | pub(crate) fn fold_and_trace_via_tract( function tag_all_outputs (line 236) | fn tag_all_outputs(onnx_path: &Path, model: &ModelProto) -> Result Option u8 { type LoopBody (line 294) | struct LoopBody { function collect_loop_bodies (line 304) | fn collect_loop_bodies(model: &ModelProto) -> HashMap { function synthesize_loop_outputs (line 377) | fn synthesize_loop_outputs( function resolve_absorbed_nodes (line 428) | fn resolve_absorbed_nodes( function resolve_body_tensor_shape (line 467) | fn resolve_body_tensor_shape( function resolve_body_tensor_shape_inner (line 476) | fn resolve_body_tensor_shape_inner( FILE: crates/dsperse/src/utils/io.rs function read_msgpack (line 9) | pub fn read_msgpack(path: &Path) -> Result { function write_msgpack (line 14) | pub fn write_msgpack(path: &Path, value: &Value) -> Result<()> { function extract_input_data (line 22) | pub fn extract_input_data(value: &Value) -> Option<&Value> { function flatten_nested_list (line 29) | pub fn flatten_nested_list(value: &Value) -> Vec { function flatten_recursive (line 35) | fn flatten_recursive(value: &Value, out: &mut Vec) { function infer_shape (line 57) | pub fn infer_shape(value: &Value) -> Vec { function value_to_arrayd (line 71) | pub fn value_to_arrayd(value: &Value) -> Result> { function arrayd_to_value (line 97) | pub fn arrayd_to_value(arr: &ArrayD) -> Value { function gather_inputs_from_cache (line 116) | pub fn gather_inputs_from_cache( function build_msgpack_map (line 183) | pub fn build_msgpack_map(entries: Vec<(&str, Value)>) -> Value { function map_get_ref (line 192) | pub fn map_get_ref<'a>(value: &'a Value, key: &str) -> Option<&'a Value> { FILE: crates/dsperse/src/utils/limits.rs function reject_symlink (line 6) | pub fn reject_symlink(path: &Path) -> Result<()> { function open_nofollow (line 19) | fn open_nofollow(path: &Path) -> Result { function read_checked (line 47) | pub fn read_checked(path: &Path) -> Result> { function read_to_string_checked (line 55) | pub fn read_to_string_checked(path: &Path) -> Result { function reject_symlink_on_regular_file (line 68) | fn reject_symlink_on_regular_file() { function reject_symlink_on_symlink (line 75) | fn reject_symlink_on_symlink() { function read_checked_normal (line 85) | fn read_checked_normal() { function read_to_string_checked_normal (line 93) | fn read_to_string_checked_normal() { FILE: crates/dsperse/src/utils/metadata.rs function load_run_metadata (line 6) | pub fn load_run_metadata(path: &Path) -> Result { function save_run_metadata (line 11) | pub fn save_run_metadata(path: &Path, meta: &RunMetadata) -> Result<()> { FILE: crates/dsperse/src/utils/paths.rs constant METADATA_FILE (line 5) | pub const METADATA_FILE: &str = "metadata.msgpack"; constant INPUT_FILE (line 6) | pub const INPUT_FILE: &str = "input.msgpack"; constant OUTPUT_FILE (line 7) | pub const OUTPUT_FILE: &str = "output.msgpack"; constant WITNESS_FILE (line 8) | pub const WITNESS_FILE: &str = "witness.bin"; constant PROOF_FILE (line 9) | pub const PROOF_FILE: &str = "proof.bin"; function resolve_relative_path (line 11) | pub fn resolve_relative_path(base: &Path, relative: &str) -> Result String { function slice_dir_path (line 42) | pub fn slice_dir_path(root: &Path, index: usize) -> PathBuf { function find_metadata_path (line 46) | pub fn find_metadata_path(dir: &Path) -> Option { function resolve_relative_normal_path (line 63) | fn resolve_relative_normal_path() { function resolve_relative_rejects_absolute (line 70) | fn resolve_relative_rejects_absolute() { function resolve_relative_rejects_parent_dir (line 76) | fn resolve_relative_rejects_parent_dir() { function resolve_relative_rejects_embedded_parent (line 82) | fn resolve_relative_rejects_embedded_parent() { function resolve_relative_allows_current_dir (line 88) | fn resolve_relative_allows_current_dir() { function resolve_relative_empty_string (line 95) | fn resolve_relative_empty_string() { FILE: crates/dsperse/src/version.rs type DsperseVersion (line 4) | pub struct DsperseVersion { function dsperse_artifact_version (line 11) | pub fn dsperse_artifact_version() -> DsperseVersion { FILE: crates/dsperse/tests/integration_slice.rs function test_models_dir (line 5) | fn test_models_dir() -> &'static Path { function slice_net_model (line 10) | fn slice_net_model() { function slice_doom_model (line 53) | fn slice_doom_model() { function slice_net_model_remainder (line 83) | fn slice_net_model_remainder() { function slice_with_tile_size (line 108) | fn slice_with_tile_size() { function slice_metadata_roundtrip_from_disk (line 135) | fn slice_metadata_roundtrip_from_disk() { function materialize_from_manifest (line 166) | fn materialize_from_manifest() { function resolve_onnx_points_to_existing_file_after_materialize (line 210) | fn resolve_onnx_points_to_existing_file_after_materialize() { FILE: crates/dsperse/tests/schema_roundtrip.rs function model_metadata_roundtrip (line 6) | fn model_metadata_roundtrip() { function run_metadata_roundtrip (line 120) | fn run_metadata_roundtrip() { function execution_info_with_tiles (line 181) | fn execution_info_with_tiles() { function channel_split_roundtrip (line 200) | fn channel_split_roundtrip() { function compilation_files_aliases (line 233) | fn compilation_files_aliases() { function backend_serde (line 248) | fn backend_serde() { function tensor_shape_i64_deserialization (line 266) | fn tensor_shape_i64_deserialization() { function tensor_shape_rejects_non_integer (line 283) | fn tensor_shape_rejects_non_integer() { function run_slice_metadata_i64_shapes (line 290) | fn run_slice_metadata_i64_shapes() { function resolve_onnx_uses_relative_path_not_absolute (line 314) | fn resolve_onnx_uses_relative_path_not_absolute() { FILE: crates/dsperse/tests/sn2_contract.rs function make_value_array (line 6) | fn make_value_array(vals: &[f64]) -> Value { function make_value_2d (line 10) | fn make_value_2d(rows: &[&[f64]]) -> Value { function make_value_3d (line 14) | fn make_value_3d(planes: &[&[&[f64]]]) -> Value { function make_value_4d (line 18) | fn make_value_4d(blocks: &[&[&[&[f64]]]]) -> Value { function value_arrayd_roundtrip_1d (line 23) | fn value_arrayd_roundtrip_1d() { function value_arrayd_roundtrip_2d (line 35) | fn value_arrayd_roundtrip_2d() { function value_arrayd_roundtrip_3d (line 47) | fn value_arrayd_roundtrip_3d() { function value_arrayd_roundtrip_4d (line 59) | fn value_arrayd_roundtrip_4d() { function value_arrayd_full_roundtrip_preserves_values (line 71) | fn value_arrayd_full_roundtrip_preserves_values() { function extract_input_data_key_precedence (line 83) | fn extract_input_data_key_precedence() { function extract_input_data_fallback_to_input (line 95) | fn extract_input_data_fallback_to_input() { function extract_input_data_fallback_to_data (line 106) | fn extract_input_data_fallback_to_data() { function extract_input_data_fallback_to_inputs (line 116) | fn extract_input_data_fallback_to_inputs() { function extract_input_data_returns_none_for_unrecognized_keys (line 126) | fn extract_input_data_returns_none_for_unrecognized_keys() { function slice_dir_path_formats_correctly (line 135) | fn slice_dir_path_formats_correctly() { function arrayd_to_value_then_extract_input_data_integration (line 152) | fn arrayd_to_value_then_extract_input_data_integration() { FILE: python/dsperse/cli.py function main (line 4) | def main():