{"$message_type":"diagnostic","message":"unresolved imports `ipu_runtime::BlockLayout`, `ipu_runtime::ExecutableGraph`, `ipu_runtime::HostRunOptions`, `ipu_runtime::ProfileGranularity`, `ipu_runtime::allocator_memory_profile`, `ipu_runtime::block_binding`, `ipu_runtime::block_coordinates`, `ipu_runtime::blocked_matrix`, `ipu_runtime::package_graph`, `ipu_runtime::package_graph_profiled_with`, `ipu_runtime::run_host_with_inspector`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":166,"byte_end":177,"line_start":6,"line_end":6,"column_start":5,"column_end":16,"is_primary":true,"text":[{"text":"    BlockLayout, ExecutableGraph, HostRunOptions, ProfileGranularity, allocator_memory_profile,","highlight_start":5,"highlight_end":16}],"label":"no `BlockLayout` in the root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":179,"byte_end":194,"line_start":6,"line_end":6,"column_start":18,"column_end":33,"is_primary":true,"text":[{"text":"    BlockLayout, ExecutableGraph, HostRunOptions, ProfileGranularity, allocator_memory_profile,","highlight_start":18,"highlight_end":33}],"label":"no `ExecutableGraph` in the root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":196,"byte_end":210,"line_start":6,"line_end":6,"column_start":35,"column_end":49,"is_primary":true,"text":[{"text":"    BlockLayout, ExecutableGraph, HostRunOptions, ProfileGranularity, allocator_memory_profile,","highlight_start":35,"highlight_end":49}],"label":"no `HostRunOptions` in the root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":212,"byte_end":230,"line_start":6,"line_end":6,"column_start":51,"column_end":69,"is_primary":true,"text":[{"text":"    BlockLayout, ExecutableGraph, HostRunOptions, ProfileGranularity, allocator_memory_profile,","highlight_start":51,"highlight_end":69}],"label":"no `ProfileGranularity` in the root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":232,"byte_end":256,"line_start":6,"line_end":6,"column_start":71,"column_end":95,"is_primary":true,"text":[{"text":"    BlockLayout, ExecutableGraph, HostRunOptions, ProfileGranularity, allocator_memory_profile,","highlight_start":71,"highlight_end":95}],"label":"no `allocator_memory_profile` in the root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":262,"byte_end":275,"line_start":7,"line_end":7,"column_start":5,"column_end":18,"is_primary":true,"text":[{"text":"    block_binding, block_coordinates, blocked_matrix, package_graph, package_graph_profiled_with,","highlight_start":5,"highlight_end":18}],"label":"no `block_binding` in the root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":277,"byte_end":294,"line_start":7,"line_end":7,"column_start":20,"column_end":37,"is_primary":true,"text":[{"text":"    block_binding, block_coordinates, blocked_matrix, package_graph, package_graph_profiled_with,","highlight_start":20,"highlight_end":37}],"label":"no `block_coordinates` in the root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":296,"byte_end":310,"line_start":7,"line_end":7,"column_start":39,"column_end":53,"is_primary":true,"text":[{"text":"    block_binding, block_coordinates, blocked_matrix, package_graph, package_graph_profiled_with,","highlight_start":39,"highlight_end":53}],"label":"no `blocked_matrix` in the root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":312,"byte_end":325,"line_start":7,"line_end":7,"column_start":55,"column_end":68,"is_primary":true,"text":[{"text":"    block_binding, block_coordinates, blocked_matrix, package_graph, package_graph_profiled_with,","highlight_start":55,"highlight_end":68}],"label":"no `package_graph` in the root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":327,"byte_end":354,"line_start":7,"line_end":7,"column_start":70,"column_end":97,"is_primary":true,"text":[{"text":"    block_binding, block_coordinates, blocked_matrix, package_graph, package_graph_profiled_with,","highlight_start":70,"highlight_end":97}],"label":"no `package_graph_profiled_with` in the root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":360,"byte_end":383,"line_start":8,"line_end":8,"column_start":5,"column_end":28,"is_primary":true,"text":[{"text":"    run_host_with_inspector,","highlight_start":5,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `ipu_runtime::BlockLayout`, `ipu_runtime::ExecutableGraph`, `ipu_runtime::HostRunOptions`, `ipu_runtime::ProfileGranularity`, `ipu_runtime::allocator_memory_profile`, `ipu_runtime::block_binding`, `ipu_runtime::block_coordinates`, `ipu_runtime::blocked_matrix`, `ipu_runtime::package_graph`, `ipu_runtime::package_graph_profiled_with`, `ipu_runtime::run_host_with_inspector`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/ipu-runtime/src/bin/ipu-gemm-e2e.rs:6:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     BlockLayout, ExecutableGraph, HostRunOptions, ProfileGranularity, allocator_memory_profile,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `allocator_memory_profile` in the root\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m|\u001b[0m            \u001b[1m\u001b[91m|\u001b[0m                \u001b[1m\u001b[91m|\u001b[0m               \u001b[1m\u001b[91m|\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m|\u001b[0m            \u001b[1m\u001b[91m|\u001b[0m                \u001b[1m\u001b[91m|\u001b[0m               \u001b[1m\u001b[91mno `ProfileGranularity` in the root\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m|\u001b[0m            \u001b[1m\u001b[91m|\u001b[0m                \u001b[1m\u001b[91mno `HostRunOptions` in the root\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m|\u001b[0m            \u001b[1m\u001b[91mno `ExecutableGraph` in the root\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91mno `BlockLayout` in the root\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     block_binding, block_coordinates, blocked_matrix, package_graph, package_graph_profiled_with,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `package_graph_profiled_with` in the root\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m|\u001b[0m              \u001b[1m\u001b[91m|\u001b[0m                  \u001b[1m\u001b[91m|\u001b[0m               \u001b[1m\u001b[91m|\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m|\u001b[0m              \u001b[1m\u001b[91m|\u001b[0m                  \u001b[1m\u001b[91m|\u001b[0m               \u001b[1m\u001b[91mno `package_graph` in the root\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m|\u001b[0m              \u001b[1m\u001b[91m|\u001b[0m                  \u001b[1m\u001b[91mno `blocked_matrix` in the root\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m|\u001b[0m              \u001b[1m\u001b[91mno `block_coordinates` in the root\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91mno `block_binding` in the root\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     run_host_with_inspector,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `ipu_compiler`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":4,"byte_end":16,"line_start":1,"line_end":1,"column_start":5,"column_end":17,"is_primary":true,"text":[{"text":"use ipu_compiler::{","highlight_start":5,"highlight_end":17}],"label":"use of unresolved module or unlinked crate `ipu_compiler`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `ipu_compiler`, use `cargo add ipu_compiler` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `ipu_compiler`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/ipu-runtime/src/bin/ipu-gemm-e2e.rs:1:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use ipu_compiler::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `ipu_compiler`\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m\n  \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `ipu_compiler`, use `cargo add ipu_compiler` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `ipu_elf`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":123,"byte_end":130,"line_start":4,"line_end":4,"column_start":5,"column_end":12,"is_primary":true,"text":[{"text":"use ipu_elf::Toolchain;","highlight_start":5,"highlight_end":12}],"label":"use of unresolved module or unlinked crate `ipu_elf`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `ipu_elf`, use `cargo add ipu_elf` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `ipu_elf`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/ipu-runtime/src/bin/ipu-gemm-e2e.rs:4:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m4\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use ipu_elf::Toolchain;\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `ipu_elf`\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m\n  \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `ipu_elf`, use `cargo add ipu_elf` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"failed to resolve: use of unresolved module or unlinked crate `ipu_exchange`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":13818,"byte_end":13830,"line_start":389,"line_end":389,"column_start":25,"column_end":37,"is_primary":true,"text":[{"text":"    let physical_tile = ipu_exchange::Topology::c600().physical(placement.tile)?;","highlight_start":25,"highlight_end":37}],"label":"use of unresolved module or unlinked crate `ipu_exchange`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"there is a crate or module with a similar name","code":null,"level":"help","spans":[{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":13818,"byte_end":13830,"line_start":389,"line_end":389,"column_start":25,"column_end":37,"is_primary":true,"text":[{"text":"    let physical_tile = ipu_exchange::Topology::c600().physical(placement.tile)?;","highlight_start":25,"highlight_end":37}],"label":null,"suggested_replacement":"ipu_package","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: failed to resolve: use of unresolved module or unlinked crate `ipu_exchange`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/ipu-runtime/src/bin/ipu-gemm-e2e.rs:389:25\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m389\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     let physical_tile = ipu_exchange::Topology::c600().physical(placement.tile)?;\n    \u001b[1m\u001b[94m|\u001b[0m                         \u001b[1m\u001b[91m^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `ipu_exchange`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: there is a crate or module with a similar name\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m389\u001b[0m \u001b[91m- \u001b[0m    let physical_tile = \u001b[91mipu_exchange\u001b[0m::Topology::c600().physical(placement.tile)?;\n\u001b[1m\u001b[94m389\u001b[0m \u001b[92m+ \u001b[0m    let physical_tile = \u001b[92mipu_package\u001b[0m::Topology::c600().physical(placement.tile)?;\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"type annotations needed","code":{"code":"E0282","explanation":"The compiler could not infer a type and asked for a type annotation.\n\nErroneous code example:\n\n```compile_fail,E0282\nlet x = Vec::new();\n```\n\nThis error indicates that type inference did not result in one unique possible\ntype, and extra information is required. In most cases this can be provided\nby adding a type annotation. Sometimes you need to specify a generic type\nparameter manually.\n\nIn the example above, type `Vec` has a type parameter `T`. When calling\n`Vec::new`, barring any other later usage of the variable `x` that allows the\ncompiler to infer what type `T` is, the compiler needs to be told what it is.\n\nThe type can be specified on the variable:\n\n```\nlet x: Vec<i32> = Vec::new();\n```\n\nThe type can also be specified in the path of the expression:\n\n```\nlet x = Vec::<i32>::new();\n```\n\nIn cases with more complex types, it is not necessary to annotate the full\ntype. Once the ambiguity is resolved, the compiler can infer the rest:\n\n```\nlet x: Vec<_> = \"hello\".chars().rev().collect();\n```\n\nAnother way to provide the compiler with enough information, is to specify the\ngeneric type parameter:\n\n```\nlet x = \"hello\".chars().rev().collect::<Vec<char>>();\n```\n\nAgain, you need not specify the full type if the compiler can infer it:\n\n```\nlet x = \"hello\".chars().rev().collect::<Vec<_>>();\n```\n\nApart from a method or function with a generic type parameter, this error can\noccur when a type parameter of a struct or trait cannot be inferred. In that\ncase it is not always possible to use a type annotation, because all candidates\nhave the same return type. For instance:\n\n```compile_fail,E0282\nstruct Foo<T> {\n    num: T,\n}\n\nimpl<T> Foo<T> {\n    fn bar() -> i32 {\n        0\n    }\n\n    fn baz() {\n        let number = Foo::bar();\n    }\n}\n```\n\nThis will fail because the compiler does not know which instance of `Foo` to\ncall `bar` on. Change `Foo::bar()` to `Foo::<T>::bar()` to resolve the error.\n"},"level":"error","spans":[{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":5750,"byte_end":5753,"line_start":154,"line_end":154,"column_start":9,"column_end":12,"is_primary":true,"text":[{"text":"        app.write(fs::File::create(path).unwrap()).unwrap();","highlight_start":9,"highlight_end":12}],"label":"cannot infer type","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0282]\u001b[0m\u001b[1m: type annotations needed\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/ipu-runtime/src/bin/ipu-gemm-e2e.rs:154:9\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m154\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         app.write(fs::File::create(path).unwrap()).unwrap();\n    \u001b[1m\u001b[94m|\u001b[0m         \u001b[1m\u001b[91m^^^\u001b[0m \u001b[1m\u001b[91mcannot infer type\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"type annotations needed","code":{"code":"E0282","explanation":"The compiler could not infer a type and asked for a type annotation.\n\nErroneous code example:\n\n```compile_fail,E0282\nlet x = Vec::new();\n```\n\nThis error indicates that type inference did not result in one unique possible\ntype, and extra information is required. In most cases this can be provided\nby adding a type annotation. Sometimes you need to specify a generic type\nparameter manually.\n\nIn the example above, type `Vec` has a type parameter `T`. When calling\n`Vec::new`, barring any other later usage of the variable `x` that allows the\ncompiler to infer what type `T` is, the compiler needs to be told what it is.\n\nThe type can be specified on the variable:\n\n```\nlet x: Vec<i32> = Vec::new();\n```\n\nThe type can also be specified in the path of the expression:\n\n```\nlet x = Vec::<i32>::new();\n```\n\nIn cases with more complex types, it is not necessary to annotate the full\ntype. Once the ambiguity is resolved, the compiler can infer the rest:\n\n```\nlet x: Vec<_> = \"hello\".chars().rev().collect();\n```\n\nAnother way to provide the compiler with enough information, is to specify the\ngeneric type parameter:\n\n```\nlet x = \"hello\".chars().rev().collect::<Vec<char>>();\n```\n\nAgain, you need not specify the full type if the compiler can infer it:\n\n```\nlet x = \"hello\".chars().rev().collect::<Vec<_>>();\n```\n\nApart from a method or function with a generic type parameter, this error can\noccur when a type parameter of a struct or trait cannot be inferred. In that\ncase it is not always possible to use a type annotation, because all candidates\nhave the same return type. For instance:\n\n```compile_fail,E0282\nstruct Foo<T> {\n    num: T,\n}\n\nimpl<T> Foo<T> {\n    fn bar() -> i32 {\n        0\n    }\n\n    fn baz() {\n        let number = Foo::bar();\n    }\n}\n```\n\nThis will fail because the compiler does not know which instance of `Foo` to\ncall `bar` on. Change `Foo::bar()` to `Foo::<T>::bar()` to resolve the error.\n"},"level":"error","spans":[{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":7411,"byte_end":7417,"line_start":200,"line_end":200,"column_start":26,"column_end":32,"is_primary":true,"text":[{"text":"            let report = layout.decode(&actual, clock_hz).unwrap();","highlight_start":26,"highlight_end":32}],"label":"cannot infer type","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0282]\u001b[0m\u001b[1m: type annotations needed\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/ipu-runtime/src/bin/ipu-gemm-e2e.rs:200:26\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m200\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             let report = layout.decode(&actual, clock_hz).unwrap();\n    \u001b[1m\u001b[94m|\u001b[0m                          \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcannot infer type\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"`?` couldn't convert the error to `RuntimeError`","code":{"code":"E0277","explanation":"You tried to use a type which doesn't implement some trait in a place which\nexpected that trait.\n\nErroneous code example:\n\n```compile_fail,E0277\n// here we declare the Foo trait with a bar method\ntrait Foo {\n    fn bar(&self);\n}\n\n// we now declare a function which takes an object implementing the Foo trait\nfn some_func<T: Foo>(foo: T) {\n    foo.bar();\n}\n\nfn main() {\n    // we now call the method with the i32 type, which doesn't implement\n    // the Foo trait\n    some_func(5i32); // error: the trait bound `i32 : Foo` is not satisfied\n}\n```\n\nIn order to fix this error, verify that the type you're using does implement\nthe trait. Example:\n\n```\ntrait Foo {\n    fn bar(&self);\n}\n\n// we implement the trait on the i32 type\nimpl Foo for i32 {\n    fn bar(&self) {}\n}\n\nfn some_func<T: Foo>(foo: T) {\n    foo.bar(); // we can now use this method since i32 implements the\n               // Foo trait\n}\n\nfn main() {\n    some_func(5i32); // ok!\n}\n```\n\nOr in a generic context, an erroneous code example would look like:\n\n```compile_fail,E0277\nfn some_func<T>(foo: T) {\n    println!(\"{:?}\", foo); // error: the trait `core::fmt::Debug` is not\n                           //        implemented for the type `T`\n}\n\nfn main() {\n    // We now call the method with the i32 type,\n    // which *does* implement the Debug trait.\n    some_func(5i32);\n}\n```\n\nNote that the error here is in the definition of the generic function. Although\nwe only call it with a parameter that does implement `Debug`, the compiler\nstill rejects the function. It must work with all possible input types. In\norder to make this example compile, we need to restrict the generic type we're\naccepting:\n\n```\nuse std::fmt;\n\n// Restrict the input type to types that implement Debug.\nfn some_func<T: fmt::Debug>(foo: T) {\n    println!(\"{:?}\", foo);\n}\n\nfn main() {\n    // Calling the method is still fine, as i32 implements Debug.\n    some_func(5i32);\n\n    // This would fail to compile now:\n    // struct WithoutDebug;\n    // some_func(WithoutDebug);\n}\n```\n\nRust only looks at the signature of the called function, as such it must\nalready specify all requirements that will be used for every type parameter.\n"},"level":"error","spans":[{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":10432,"byte_end":10479,"line_start":293,"line_end":293,"column_start":10,"column_end":57,"is_primary":false,"text":[{"text":"        .ok_or(\"GEMM output is shorter than the matrix\")?;","highlight_start":10,"highlight_end":57}],"label":"this can't be annotated with `?` because it has type `Result<_, &str>`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":10264,"byte_end":10287,"line_start":289,"line_end":289,"column_start":6,"column_end":29,"is_primary":false,"text":[{"text":") -> ipu_runtime::Result<()> {","highlight_start":6,"highlight_end":29}],"label":"expected `RuntimeError` because of this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":10479,"byte_end":10480,"line_start":293,"line_end":293,"column_start":57,"column_end":58,"is_primary":true,"text":[{"text":"        .ok_or(\"GEMM output is shorter than the matrix\")?;","highlight_start":57,"highlight_end":58}],"label":"the trait `From<&str>` is not implemented for `RuntimeError`","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":10479,"byte_end":10480,"line_start":293,"line_end":293,"column_start":57,"column_end":58,"is_primary":false,"text":[{"text":"        .ok_or(\"GEMM output is shorter than the matrix\")?;","highlight_start":57,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"desugaring of operator `?`","def_site_span":{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":false,"text":[],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[{"message":"the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"the trait `From<&str>` is not implemented for `RuntimeError`\nbut trait `From<DriverError>` is implemented for it","code":null,"level":"help","spans":[{"file_name":"/srv/home/gc-sdk/ipu-stack/crates/ipu-runtime/src/lib.rs","byte_start":271,"byte_end":275,"line_start":10,"line_end":10,"column_start":14,"column_end":18,"is_primary":true,"text":[{"text":"    Driver(#[from] DriverError),","highlight_start":14,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null},{"message":"for that trait implementation, expected `DriverError`, found `&str`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0277]\u001b[0m\u001b[1m: `?` couldn't convert the error to `RuntimeError`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/ipu-runtime/src/bin/ipu-gemm-e2e.rs:293:57\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m289\u001b[0m \u001b[1m\u001b[94m|\u001b[0m ) -> ipu_runtime::Result<()> {\n    \u001b[1m\u001b[94m|\u001b[0m      \u001b[1m\u001b[94m-----------------------\u001b[0m \u001b[1m\u001b[94mexpected `RuntimeError` because of this\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m293\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         .ok_or(\"GEMM output is shorter than the matrix\")?;\n    \u001b[1m\u001b[94m|\u001b[0m          \u001b[1m\u001b[94m-----------------------------------------------\u001b[0m\u001b[1m\u001b[91m^\u001b[0m \u001b[1m\u001b[91mthe trait `From<&str>` is not implemented for `RuntimeError`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m          \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m          \u001b[1m\u001b[94mthis can't be annotated with `?` because it has type `Result<_, &str>`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait\n\u001b[1m\u001b[96mhelp\u001b[0m: the trait `From<\u001b[1m\u001b[35m&str\u001b[0m>` \u001b[1m\u001b[35mis not\u001b[0m implemented for `RuntimeError`\n      but trait `From<\u001b[1m\u001b[35mDriverError\u001b[0m>` \u001b[1m\u001b[35mis\u001b[0m implemented for it\n   \u001b[1m\u001b[94m--> \u001b[0m/srv/home/gc-sdk/ipu-stack/crates/ipu-runtime/src/lib.rs:10:14\n    \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     Driver(#[from] DriverError),\n    \u001b[1m\u001b[94m|\u001b[0m              \u001b[1m\u001b[96m^^^^\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for that trait implementation, expected `\u001b[1m\u001b[35mDriverError\u001b[0m`, found `\u001b[1m\u001b[35m&str\u001b[0m`\n\n"}
{"$message_type":"diagnostic","message":"the trait bound `RuntimeError: From<String>` is not satisfied","code":{"code":"E0277","explanation":"You tried to use a type which doesn't implement some trait in a place which\nexpected that trait.\n\nErroneous code example:\n\n```compile_fail,E0277\n// here we declare the Foo trait with a bar method\ntrait Foo {\n    fn bar(&self);\n}\n\n// we now declare a function which takes an object implementing the Foo trait\nfn some_func<T: Foo>(foo: T) {\n    foo.bar();\n}\n\nfn main() {\n    // we now call the method with the i32 type, which doesn't implement\n    // the Foo trait\n    some_func(5i32); // error: the trait bound `i32 : Foo` is not satisfied\n}\n```\n\nIn order to fix this error, verify that the type you're using does implement\nthe trait. Example:\n\n```\ntrait Foo {\n    fn bar(&self);\n}\n\n// we implement the trait on the i32 type\nimpl Foo for i32 {\n    fn bar(&self) {}\n}\n\nfn some_func<T: Foo>(foo: T) {\n    foo.bar(); // we can now use this method since i32 implements the\n               // Foo trait\n}\n\nfn main() {\n    some_func(5i32); // ok!\n}\n```\n\nOr in a generic context, an erroneous code example would look like:\n\n```compile_fail,E0277\nfn some_func<T>(foo: T) {\n    println!(\"{:?}\", foo); // error: the trait `core::fmt::Debug` is not\n                           //        implemented for the type `T`\n}\n\nfn main() {\n    // We now call the method with the i32 type,\n    // which *does* implement the Debug trait.\n    some_func(5i32);\n}\n```\n\nNote that the error here is in the definition of the generic function. Although\nwe only call it with a parameter that does implement `Debug`, the compiler\nstill rejects the function. It must work with all possible input types. In\norder to make this example compile, we need to restrict the generic type we're\naccepting:\n\n```\nuse std::fmt;\n\n// Restrict the input type to types that implement Debug.\nfn some_func<T: fmt::Debug>(foo: T) {\n    println!(\"{:?}\", foo);\n}\n\nfn main() {\n    // Calling the method is still fine, as i32 implements Debug.\n    some_func(5i32);\n\n    // This would fail to compile now:\n    // struct WithoutDebug;\n    // some_func(WithoutDebug);\n}\n```\n\nRust only looks at the signature of the called function, as such it must\nalready specify all requirements that will be used for every type parameter.\n"},"level":"error","spans":[{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":11434,"byte_end":11802,"line_start":319,"line_end":327,"column_start":20,"column_end":10,"is_primary":true,"text":[{"text":"        return Err(format!(","highlight_start":20,"highlight_end":28},{"text":"            \"GEMM mismatch at [{}, {}]: D2H={:#010x} expected={:#010x}; block SRAM-vs-D2H differences={}, SRAM-vs-expected differences={}\",","highlight_start":1,"highlight_end":140},{"text":"            mismatch.row,","highlight_start":1,"highlight_end":26},{"text":"            mismatch.column,","highlight_start":1,"highlight_end":29},{"text":"            mismatch.actual,","highlight_start":1,"highlight_end":29},{"text":"            mismatch.expected,","highlight_start":1,"highlight_end":31},{"text":"            comparison.transport_differences,","highlight_start":1,"highlight_end":46},{"text":"            comparison.sram_expected_differences","highlight_start":1,"highlight_end":49},{"text":"        )","highlight_start":1,"highlight_end":10}],"label":"the trait `From<String>` is not implemented for `RuntimeError`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":11812,"byte_end":11816,"line_start":328,"line_end":328,"column_start":10,"column_end":14,"is_primary":false,"text":[{"text":"        .into());","highlight_start":10,"highlight_end":14}],"label":"required by a bound introduced by this call","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"the trait `From<String>` is not implemented for `RuntimeError`\nbut trait `From<DriverError>` is implemented for it","code":null,"level":"help","spans":[{"file_name":"/srv/home/gc-sdk/ipu-stack/crates/ipu-runtime/src/lib.rs","byte_start":271,"byte_end":275,"line_start":10,"line_end":10,"column_start":14,"column_end":18,"is_primary":true,"text":[{"text":"    Driver(#[from] DriverError),","highlight_start":14,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null},{"message":"for that trait implementation, expected `DriverError`, found `String`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"required for `String` to implement `Into<RuntimeError>`","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0277]\u001b[0m\u001b[1m: the trait bound `RuntimeError: From<String>` is not satisfied\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/ipu-runtime/src/bin/ipu-gemm-e2e.rs:319:20\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m319\u001b[0m \u001b[1m\u001b[94m|\u001b[0m           return Err(format!(\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m ____________________^\u001b[0m\n\u001b[1m\u001b[94m320\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m|\u001b[0m             \"GEMM mismatch at [{}, {}]: D2H={:#010x} expected={:#010x}; block SRAM-vs-D2H differences={}, SRAM-vs-expected differences={}\",\n\u001b[1m\u001b[94m321\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m|\u001b[0m             mismatch.row,\n\u001b[1m\u001b[94m322\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m|\u001b[0m             mismatch.column,\n\u001b[1m\u001b[94m...\u001b[0m   \u001b[1m\u001b[91m|\u001b[0m\n\u001b[1m\u001b[94m326\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m|\u001b[0m             comparison.sram_expected_differences\n\u001b[1m\u001b[94m327\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m|\u001b[0m         )\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m|_________^\u001b[0m \u001b[1m\u001b[91mthe trait `From<String>` is not implemented for `RuntimeError`\u001b[0m\n\u001b[1m\u001b[94m328\u001b[0m \u001b[1m\u001b[94m|\u001b[0m           .into());\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[94m----\u001b[0m \u001b[1m\u001b[94mrequired by a bound introduced by this call\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: the trait `From<\u001b[1m\u001b[35mString\u001b[0m>` \u001b[1m\u001b[35mis not\u001b[0m implemented for `RuntimeError`\n      but trait `From<\u001b[1m\u001b[35mDriverError\u001b[0m>` \u001b[1m\u001b[35mis\u001b[0m implemented for it\n   \u001b[1m\u001b[94m--> \u001b[0m/srv/home/gc-sdk/ipu-stack/crates/ipu-runtime/src/lib.rs:10:14\n    \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     Driver(#[from] DriverError),\n    \u001b[1m\u001b[94m|\u001b[0m              \u001b[1m\u001b[96m^^^^\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for that trait implementation, expected `\u001b[1m\u001b[35mDriverError\u001b[0m`, found `\u001b[1m\u001b[35mString\u001b[0m`\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: required for `String` to implement `Into<RuntimeError>`\n\n"}
{"$message_type":"diagnostic","message":"`?` couldn't convert the error to `RuntimeError`","code":{"code":"E0277","explanation":"You tried to use a type which doesn't implement some trait in a place which\nexpected that trait.\n\nErroneous code example:\n\n```compile_fail,E0277\n// here we declare the Foo trait with a bar method\ntrait Foo {\n    fn bar(&self);\n}\n\n// we now declare a function which takes an object implementing the Foo trait\nfn some_func<T: Foo>(foo: T) {\n    foo.bar();\n}\n\nfn main() {\n    // we now call the method with the i32 type, which doesn't implement\n    // the Foo trait\n    some_func(5i32); // error: the trait bound `i32 : Foo` is not satisfied\n}\n```\n\nIn order to fix this error, verify that the type you're using does implement\nthe trait. Example:\n\n```\ntrait Foo {\n    fn bar(&self);\n}\n\n// we implement the trait on the i32 type\nimpl Foo for i32 {\n    fn bar(&self) {}\n}\n\nfn some_func<T: Foo>(foo: T) {\n    foo.bar(); // we can now use this method since i32 implements the\n               // Foo trait\n}\n\nfn main() {\n    some_func(5i32); // ok!\n}\n```\n\nOr in a generic context, an erroneous code example would look like:\n\n```compile_fail,E0277\nfn some_func<T>(foo: T) {\n    println!(\"{:?}\", foo); // error: the trait `core::fmt::Debug` is not\n                           //        implemented for the type `T`\n}\n\nfn main() {\n    // We now call the method with the i32 type,\n    // which *does* implement the Debug trait.\n    some_func(5i32);\n}\n```\n\nNote that the error here is in the definition of the generic function. Although\nwe only call it with a parameter that does implement `Debug`, the compiler\nstill rejects the function. It must work with all possible input types. In\norder to make this example compile, we need to restrict the generic type we're\naccepting:\n\n```\nuse std::fmt;\n\n// Restrict the input type to types that implement Debug.\nfn some_func<T: fmt::Debug>(foo: T) {\n    println!(\"{:?}\", foo);\n}\n\nfn main() {\n    // Calling the method is still fine, as i32 implements Debug.\n    some_func(5i32);\n\n    // This would fail to compile now:\n    // struct WithoutDebug;\n    // some_func(WithoutDebug);\n}\n```\n\nRust only looks at the signature of the called function, as such it must\nalready specify all requirements that will be used for every type parameter.\n"},"level":"error","spans":[{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":14307,"byte_end":14335,"line_start":401,"line_end":401,"column_start":23,"column_end":51,"is_primary":false,"text":[{"text":"    let block_bytes = usize::try_from(block_words)? * 4;","highlight_start":23,"highlight_end":51}],"label":"this can't be annotated with `?` because it has type `Result<_, TryFromIntError>`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":13457,"byte_end":13493,"line_start":381,"line_end":381,"column_start":6,"column_end":42,"is_primary":false,"text":[{"text":") -> ipu_runtime::Result<BlockComparison> {","highlight_start":6,"highlight_end":42}],"label":"expected `RuntimeError` because of this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":14335,"byte_end":14336,"line_start":401,"line_end":401,"column_start":51,"column_end":52,"is_primary":true,"text":[{"text":"    let block_bytes = usize::try_from(block_words)? * 4;","highlight_start":51,"highlight_end":52}],"label":"the trait `From<TryFromIntError>` is not implemented for `RuntimeError`","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":14335,"byte_end":14336,"line_start":401,"line_end":401,"column_start":51,"column_end":52,"is_primary":false,"text":[{"text":"    let block_bytes = usize::try_from(block_words)? * 4;","highlight_start":51,"highlight_end":52}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"desugaring of operator `?`","def_site_span":{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":false,"text":[],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[{"message":"the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"the trait `From<TryFromIntError>` is not implemented for `RuntimeError`\nbut trait `From<DriverError>` is implemented for it","code":null,"level":"help","spans":[{"file_name":"/srv/home/gc-sdk/ipu-stack/crates/ipu-runtime/src/lib.rs","byte_start":271,"byte_end":275,"line_start":10,"line_end":10,"column_start":14,"column_end":18,"is_primary":true,"text":[{"text":"    Driver(#[from] DriverError),","highlight_start":14,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null},{"message":"for that trait implementation, expected `DriverError`, found `TryFromIntError`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0277]\u001b[0m\u001b[1m: `?` couldn't convert the error to `RuntimeError`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/ipu-runtime/src/bin/ipu-gemm-e2e.rs:401:51\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m381\u001b[0m \u001b[1m\u001b[94m|\u001b[0m ) -> ipu_runtime::Result<BlockComparison> {\n    \u001b[1m\u001b[94m|\u001b[0m      \u001b[1m\u001b[94m------------------------------------\u001b[0m \u001b[1m\u001b[94mexpected `RuntimeError` because of this\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m401\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     let block_bytes = usize::try_from(block_words)? * 4;\n    \u001b[1m\u001b[94m|\u001b[0m                       \u001b[1m\u001b[94m----------------------------\u001b[0m\u001b[1m\u001b[91m^\u001b[0m \u001b[1m\u001b[91mthe trait `From<TryFromIntError>` is not implemented for `RuntimeError`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m                       \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m                       \u001b[1m\u001b[94mthis can't be annotated with `?` because it has type `Result<_, TryFromIntError>`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait\n\u001b[1m\u001b[96mhelp\u001b[0m: the trait `From<\u001b[1m\u001b[35mTryFromIntError\u001b[0m>` \u001b[1m\u001b[35mis not\u001b[0m implemented for `RuntimeError`\n      but trait `From<\u001b[1m\u001b[35mDriverError\u001b[0m>` \u001b[1m\u001b[35mis\u001b[0m implemented for it\n   \u001b[1m\u001b[94m--> \u001b[0m/srv/home/gc-sdk/ipu-stack/crates/ipu-runtime/src/lib.rs:10:14\n    \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     Driver(#[from] DriverError),\n    \u001b[1m\u001b[94m|\u001b[0m              \u001b[1m\u001b[96m^^^^\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for that trait implementation, expected `\u001b[1m\u001b[35mDriverError\u001b[0m`, found `\u001b[1m\u001b[35mTryFromIntError\u001b[0m`\n\n"}
{"$message_type":"diagnostic","message":"`?` couldn't convert the error to `RuntimeError`","code":{"code":"E0277","explanation":"You tried to use a type which doesn't implement some trait in a place which\nexpected that trait.\n\nErroneous code example:\n\n```compile_fail,E0277\n// here we declare the Foo trait with a bar method\ntrait Foo {\n    fn bar(&self);\n}\n\n// we now declare a function which takes an object implementing the Foo trait\nfn some_func<T: Foo>(foo: T) {\n    foo.bar();\n}\n\nfn main() {\n    // we now call the method with the i32 type, which doesn't implement\n    // the Foo trait\n    some_func(5i32); // error: the trait bound `i32 : Foo` is not satisfied\n}\n```\n\nIn order to fix this error, verify that the type you're using does implement\nthe trait. Example:\n\n```\ntrait Foo {\n    fn bar(&self);\n}\n\n// we implement the trait on the i32 type\nimpl Foo for i32 {\n    fn bar(&self) {}\n}\n\nfn some_func<T: Foo>(foo: T) {\n    foo.bar(); // we can now use this method since i32 implements the\n               // Foo trait\n}\n\nfn main() {\n    some_func(5i32); // ok!\n}\n```\n\nOr in a generic context, an erroneous code example would look like:\n\n```compile_fail,E0277\nfn some_func<T>(foo: T) {\n    println!(\"{:?}\", foo); // error: the trait `core::fmt::Debug` is not\n                           //        implemented for the type `T`\n}\n\nfn main() {\n    // We now call the method with the i32 type,\n    // which *does* implement the Debug trait.\n    some_func(5i32);\n}\n```\n\nNote that the error here is in the definition of the generic function. Although\nwe only call it with a parameter that does implement `Debug`, the compiler\nstill rejects the function. It must work with all possible input types. In\norder to make this example compile, we need to restrict the generic type we're\naccepting:\n\n```\nuse std::fmt;\n\n// Restrict the input type to types that implement Debug.\nfn some_func<T: fmt::Debug>(foo: T) {\n    println!(\"{:?}\", foo);\n}\n\nfn main() {\n    // Calling the method is still fine, as i32 implements Debug.\n    some_func(5i32);\n\n    // This would fail to compile now:\n    // struct WithoutDebug;\n    // some_func(WithoutDebug);\n}\n```\n\nRust only looks at the signature of the called function, as such it must\nalready specify all requirements that will be used for every type parameter.\n"},"level":"error","spans":[{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":15008,"byte_end":15028,"line_start":416,"line_end":416,"column_start":13,"column_end":33,"is_primary":false,"text":[{"text":"            u16::try_from(index)?,","highlight_start":13,"highlight_end":33}],"label":"this can't be annotated with `?` because it has type `Result<_, TryFromIntError>`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":13457,"byte_end":13493,"line_start":381,"line_end":381,"column_start":6,"column_end":42,"is_primary":false,"text":[{"text":") -> ipu_runtime::Result<BlockComparison> {","highlight_start":6,"highlight_end":42}],"label":"expected `RuntimeError` because of this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":15028,"byte_end":15029,"line_start":416,"line_end":416,"column_start":33,"column_end":34,"is_primary":true,"text":[{"text":"            u16::try_from(index)?,","highlight_start":33,"highlight_end":34}],"label":"the trait `From<TryFromIntError>` is not implemented for `RuntimeError`","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":15028,"byte_end":15029,"line_start":416,"line_end":416,"column_start":33,"column_end":34,"is_primary":false,"text":[{"text":"            u16::try_from(index)?,","highlight_start":33,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"desugaring of operator `?`","def_site_span":{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":false,"text":[],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[{"message":"the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"the trait `From<TryFromIntError>` is not implemented for `RuntimeError`\nbut trait `From<DriverError>` is implemented for it","code":null,"level":"help","spans":[{"file_name":"/srv/home/gc-sdk/ipu-stack/crates/ipu-runtime/src/lib.rs","byte_start":271,"byte_end":275,"line_start":10,"line_end":10,"column_start":14,"column_end":18,"is_primary":true,"text":[{"text":"    Driver(#[from] DriverError),","highlight_start":14,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null},{"message":"for that trait implementation, expected `DriverError`, found `TryFromIntError`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0277]\u001b[0m\u001b[1m: `?` couldn't convert the error to `RuntimeError`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/ipu-runtime/src/bin/ipu-gemm-e2e.rs:416:33\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m381\u001b[0m \u001b[1m\u001b[94m|\u001b[0m ) -> ipu_runtime::Result<BlockComparison> {\n    \u001b[1m\u001b[94m|\u001b[0m      \u001b[1m\u001b[94m------------------------------------\u001b[0m \u001b[1m\u001b[94mexpected `RuntimeError` because of this\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m416\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             u16::try_from(index)?,\n    \u001b[1m\u001b[94m|\u001b[0m             \u001b[1m\u001b[94m--------------------\u001b[0m\u001b[1m\u001b[91m^\u001b[0m \u001b[1m\u001b[91mthe trait `From<TryFromIntError>` is not implemented for `RuntimeError`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m             \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m             \u001b[1m\u001b[94mthis can't be annotated with `?` because it has type `Result<_, TryFromIntError>`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait\n\u001b[1m\u001b[96mhelp\u001b[0m: the trait `From<\u001b[1m\u001b[35mTryFromIntError\u001b[0m>` \u001b[1m\u001b[35mis not\u001b[0m implemented for `RuntimeError`\n      but trait `From<\u001b[1m\u001b[35mDriverError\u001b[0m>` \u001b[1m\u001b[35mis\u001b[0m implemented for it\n   \u001b[1m\u001b[94m--> \u001b[0m/srv/home/gc-sdk/ipu-stack/crates/ipu-runtime/src/lib.rs:10:14\n    \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     Driver(#[from] DriverError),\n    \u001b[1m\u001b[94m|\u001b[0m              \u001b[1m\u001b[96m^^^^\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for that trait implementation, expected `\u001b[1m\u001b[35mDriverError\u001b[0m`, found `\u001b[1m\u001b[35mTryFromIntError\u001b[0m`\n\n"}
{"$message_type":"diagnostic","message":"the trait bound `RuntimeError: From<String>` is not satisfied","code":{"code":"E0277","explanation":"You tried to use a type which doesn't implement some trait in a place which\nexpected that trait.\n\nErroneous code example:\n\n```compile_fail,E0277\n// here we declare the Foo trait with a bar method\ntrait Foo {\n    fn bar(&self);\n}\n\n// we now declare a function which takes an object implementing the Foo trait\nfn some_func<T: Foo>(foo: T) {\n    foo.bar();\n}\n\nfn main() {\n    // we now call the method with the i32 type, which doesn't implement\n    // the Foo trait\n    some_func(5i32); // error: the trait bound `i32 : Foo` is not satisfied\n}\n```\n\nIn order to fix this error, verify that the type you're using does implement\nthe trait. Example:\n\n```\ntrait Foo {\n    fn bar(&self);\n}\n\n// we implement the trait on the i32 type\nimpl Foo for i32 {\n    fn bar(&self) {}\n}\n\nfn some_func<T: Foo>(foo: T) {\n    foo.bar(); // we can now use this method since i32 implements the\n               // Foo trait\n}\n\nfn main() {\n    some_func(5i32); // ok!\n}\n```\n\nOr in a generic context, an erroneous code example would look like:\n\n```compile_fail,E0277\nfn some_func<T>(foo: T) {\n    println!(\"{:?}\", foo); // error: the trait `core::fmt::Debug` is not\n                           //        implemented for the type `T`\n}\n\nfn main() {\n    // We now call the method with the i32 type,\n    // which *does* implement the Debug trait.\n    some_func(5i32);\n}\n```\n\nNote that the error here is in the definition of the generic function. Although\nwe only call it with a parameter that does implement `Debug`, the compiler\nstill rejects the function. It must work with all possible input types. In\norder to make this example compile, we need to restrict the generic type we're\naccepting:\n\n```\nuse std::fmt;\n\n// Restrict the input type to types that implement Debug.\nfn some_func<T: fmt::Debug>(foo: T) {\n    println!(\"{:?}\", foo);\n}\n\nfn main() {\n    // Calling the method is still fine, as i32 implements Debug.\n    some_func(5i32);\n\n    // This would fail to compile now:\n    // struct WithoutDebug;\n    // some_func(WithoutDebug);\n}\n```\n\nRust only looks at the signature of the called function, as such it must\nalready specify all requirements that will be used for every type parameter.\n"},"level":"error","spans":[{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":15655,"byte_end":15830,"line_start":435,"line_end":437,"column_start":20,"column_end":10,"is_primary":true,"text":[{"text":"        return Err(format!(","highlight_start":20,"highlight_end":28},{"text":"            \"D2H differs from SRAM in {transport_differences} words of block ({block_row}, {block_column}); first difference {first_transport_difference:?}\"","highlight_start":1,"highlight_end":157},{"text":"        )","highlight_start":1,"highlight_end":10}],"label":"the trait `From<String>` is not implemented for `RuntimeError`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":15840,"byte_end":15844,"line_start":438,"line_end":438,"column_start":10,"column_end":14,"is_primary":false,"text":[{"text":"        .into());","highlight_start":10,"highlight_end":14}],"label":"required by a bound introduced by this call","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"the trait `From<String>` is not implemented for `RuntimeError`\nbut trait `From<DriverError>` is implemented for it","code":null,"level":"help","spans":[{"file_name":"/srv/home/gc-sdk/ipu-stack/crates/ipu-runtime/src/lib.rs","byte_start":271,"byte_end":275,"line_start":10,"line_end":10,"column_start":14,"column_end":18,"is_primary":true,"text":[{"text":"    Driver(#[from] DriverError),","highlight_start":14,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null},{"message":"for that trait implementation, expected `DriverError`, found `String`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"required for `String` to implement `Into<RuntimeError>`","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0277]\u001b[0m\u001b[1m: the trait bound `RuntimeError: From<String>` is not satisfied\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/ipu-runtime/src/bin/ipu-gemm-e2e.rs:435:20\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m435\u001b[0m \u001b[1m\u001b[94m|\u001b[0m   \u001b[1m\u001b[94m...\u001b[0m   return Err(format!(\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m __________________^\u001b[0m\n\u001b[1m\u001b[94m436\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m|\u001b[0m \u001b[1m\u001b[94m...\u001b[0m       \"D2H differs from SRAM in {transport_differences} words of block ({block_row}, {block_column}); first difference {first_transpo\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m437\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m|\u001b[0m \u001b[1m\u001b[94m...\u001b[0m   )\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m|_______^\u001b[0m \u001b[1m\u001b[91mthe trait `From<String>` is not implemented for `RuntimeError`\u001b[0m\n\u001b[1m\u001b[94m438\u001b[0m \u001b[1m\u001b[94m|\u001b[0m   \u001b[1m\u001b[94m...\u001b[0m   .into());\n    \u001b[1m\u001b[94m|\u001b[0m          \u001b[1m\u001b[94m----\u001b[0m \u001b[1m\u001b[94mrequired by a bound introduced by this call\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: the trait `From<\u001b[1m\u001b[35mString\u001b[0m>` \u001b[1m\u001b[35mis not\u001b[0m implemented for `RuntimeError`\n      but trait `From<\u001b[1m\u001b[35mDriverError\u001b[0m>` \u001b[1m\u001b[35mis\u001b[0m implemented for it\n   \u001b[1m\u001b[94m--> \u001b[0m/srv/home/gc-sdk/ipu-stack/crates/ipu-runtime/src/lib.rs:10:14\n    \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     Driver(#[from] DriverError),\n    \u001b[1m\u001b[94m|\u001b[0m              \u001b[1m\u001b[96m^^^^\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for that trait implementation, expected `\u001b[1m\u001b[35mDriverError\u001b[0m`, found `\u001b[1m\u001b[35mString\u001b[0m`\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: required for `String` to implement `Into<RuntimeError>`\n\n"}
{"$message_type":"diagnostic","message":"failed to resolve: use of unresolved module or unlinked crate `ipu_compiler`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":10187,"byte_end":10199,"line_start":287,"line_end":287,"column_start":19,"column_end":31,"is_primary":true,"text":[{"text":"    placements: &[ipu_compiler::BlockPlacement],","highlight_start":19,"highlight_end":31}],"label":"use of unresolved module or unlinked crate `ipu_compiler`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `ipu_compiler`, use `cargo add ipu_compiler` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: failed to resolve: use of unresolved module or unlinked crate `ipu_compiler`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/ipu-runtime/src/bin/ipu-gemm-e2e.rs:287:19\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m287\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     placements: &[ipu_compiler::BlockPlacement],\n    \u001b[1m\u001b[94m|\u001b[0m                   \u001b[1m\u001b[91m^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `ipu_compiler`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `ipu_compiler`, use `cargo add ipu_compiler` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"failed to resolve: use of unresolved module or unlinked crate `ipu_compiler`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":11916,"byte_end":11928,"line_start":336,"line_end":336,"column_start":19,"column_end":31,"is_primary":true,"text":[{"text":"    placements: &[ipu_compiler::BlockPlacement],","highlight_start":19,"highlight_end":31}],"label":"use of unresolved module or unlinked crate `ipu_compiler`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `ipu_compiler`, use `cargo add ipu_compiler` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: failed to resolve: use of unresolved module or unlinked crate `ipu_compiler`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/ipu-runtime/src/bin/ipu-gemm-e2e.rs:336:19\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m336\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     placements: &[ipu_compiler::BlockPlacement],\n    \u001b[1m\u001b[94m|\u001b[0m                   \u001b[1m\u001b[91m^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `ipu_compiler`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `ipu_compiler`, use `cargo add ipu_compiler` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"failed to resolve: use of unresolved module or unlinked crate `ipu_compiler`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/ipu-runtime/src/bin/ipu-gemm-e2e.rs","byte_start":13342,"byte_end":13354,"line_start":377,"line_end":377,"column_start":19,"column_end":31,"is_primary":true,"text":[{"text":"    placements: &[ipu_compiler::BlockPlacement],","highlight_start":19,"highlight_end":31}],"label":"use of unresolved module or unlinked crate `ipu_compiler`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `ipu_compiler`, use `cargo add ipu_compiler` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: failed to resolve: use of unresolved module or unlinked crate `ipu_compiler`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/ipu-runtime/src/bin/ipu-gemm-e2e.rs:377:19\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m377\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     placements: &[ipu_compiler::BlockPlacement],\n    \u001b[1m\u001b[94m|\u001b[0m                   \u001b[1m\u001b[91m^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `ipu_compiler`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `ipu_compiler`, use `cargo add ipu_compiler` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"aborting due to 14 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m: aborting due to 14 previous errors\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0277, E0282, E0432, E0433.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1mSome errors have detailed explanations: E0277, E0282, E0432, E0433.\u001b[0m\n"}
{"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0277`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1mFor more information about an error, try `rustc --explain E0277`.\u001b[0m\n"}
