ICE when using nalgebra Matrix3 in rust-cuda kernel: "failed to parse bitcode for LTO module"
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Reproduziere den Fehler aus my-kernel/src/lib.rs mit der gemeldeten nightly toolchain und den Einstellungen von rust-cuda 0.3.0. Untersuche build.rs ungefähr in Zeile 15, wo bei BuildFailed unwrap aufgerufen wird, und prüfe die angehängte Datei rustc-ice-2025-05-29T12_03_44-26464.txt zusammen mit dem bitcode/LTO-Fehler. Als erledigt gilt die Aufgabe, wenn der Matrix3-Kernel keinen ICE des Compilers mehr verursacht.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
I tried writing this (obviously wrong) matrix multiplication kernel with nalgebra:
#![allow(improper_ctypes_definitions, clippy::missing_safety_doc)]
use cuda_std::prelude::*;
use cuda_std::vek::Vec2;
use nalgebra::Matrix3;
#[kernel]
pub unsafe fn matmul(a: &Matrix3<u8>, b: &Matrix3<u8>, c: *mut Matrix3<u8>) {
let Vec2 { x, y } = thread::index_2d();
let x = x as usize;
let y = y as usize;
(*c)[(x, y)] = (a.row(x) * b.column(y)).sum();
}
But then the codegen throws an ICE:
Compiling gpu-playground v0.1.0 (F:\rust\gpu-playground2)
error: failed to run custom build command for `gpu-playground v0.1.0 (F:\rust\gpu-playground2)`
Caused by:
process didn't exit successfully: `F:\rust\gpu-playground2\target\debug\build\gpu-playground-6476c9a6924a5773\build-script-build` (exit code: 101)
--- stdout
cargo::rerun-if-changed=build.rs
cargo::rerun-if-changed=my-kernel
cargo:rerun-if-changed=F:\rust\gpu-playground2\my-kernel
--- stderr
Compiling my-kernel v0.1.0 (F:\rust\gpu-playground2\my-kernel)
warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
--> src\lib.rs:12:5
|
12 | (*c)[(x, y)] = (a.row(x) * b.column(y)).sum();
| ^^^^ dereference of raw pointer
|
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
= note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
note: an unsafe function restricts its caller, but its body is safe by default
--> src\lib.rs:8:1
|
8 | pub unsafe fn matmul(a: &Matrix3<u8>, b: &Matrix3<u8>, c: *mut Matrix3<u8>) {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: `#[warn(unsafe_op_in_unsafe_fn)]` on by default
error: failed to parse bitcode for LTO module: Explicit gep type does not match pointee type of pointer operand (Producer: 'LLVM7.1.0' Reader: 'LLVM 7.1.0')
thread 'coordinator' panicked at C:\Users\steve\scoop\persist\rustup\.rustup\toolchains\nightly-2025-03-02-x86_64-pc-windows-msvc\lib/rustlib/src/rust\compiler\rustc_codegen_ssa\src\back\write.rs:1686:29:
C:\Users\steve\scoop\persist\rustup\.rustup\toolchains\nightly-2025-03-02-x86_64-pc-windows-msvc\lib/rustlib/src/rust\compiler\rustc_codegen_ssa\src\back\write.rs:1686:29: worker thread panicked
stack backtrace:
0: 0x7ffdb516f403 - std::backtrace_rs::backtrace::win64::trace
at /rustc/8c392966a013fd8a09e6b78b3c8d6e442bc278e1/library\std\src\..\..\backtrace\src\backtrace\win64.rs:85
1: 0x7ffdb516f403 - std::backtrace_rs::backtrace::trace_unsynchronized
at /rustc/8c392966a013fd8a09e6b78b3c8d6e442bc278e1/library\std\src\..\..\backtrace\src\backtrace\mod.rs:66
2: 0x7ffdb516f403 - std::sys::backtrace::_print_fmt
at /rustc/8c392966a013fd8a09e6b78b3c8d6e442bc278e1/library\std\src\sys\backtrace.rs:66
3: 0x7ffdb516f403 - std::sys::backtrace::impl$0::print::impl$0::fmt
at /rustc/8c392966a013fd8a09e6b78b3c8d6e442bc278e1/library\std\src\sys\backtrace.rs:39
4: 0x7ffdb51a246a - core::fmt::rt::Argument::fmt
at /rustc/8c392966a013fd8a09e6b78b3c8d6e442bc278e1/library\core\src\fmt\rt.rs:177
5: 0x7ffdb51a246a - core::fmt::write
at /rustc/8c392966a013fd8a09e6b78b3c8d6e442bc278e1/library\core\src\fmt\mod.rs:1449
6: 0x7ffdb51653a7 - std::io::Write::write_fmt<std::sys::pal::windows::stdio::Stderr>
at /rustc/8c392966a013fd8a09e6b78b3c8d6e442bc278e1/library\std\src\io\mod.rs:1890
7: 0x7ffdb516f245 - std::sys::backtrace::BacktraceLock::print
at /rustc/8c392966a013fd8a09e6b78b3c8d6e442bc278e1/library\std\src\sys\backtrace.rs:42
8: 0x7ffdb51735b9 - std::panicking::default_hook::closure$0
at /rustc/8c392966a013fd8a09e6b78b3c8d6e442bc278e1/library\std\src\panicking.rs:298
9: 0x7ffdb51733a8 - std::panicking::default_hook
at /rustc/8c392966a013fd8a09e6b78b3c8d6e442bc278e1/library\std\src\panicking.rs:325
10: 0x7ffdb66edc57 - core[840dbb2f2845c865]::slice::sort::unstable::heapsort::heapsort::<((rustc_lint_defs[82a80524e948e0f0]::Level, &str), usize), <((rustc_lint_defs[82a80524e948e0f0]::Level, &str), usize) as core[840dbb2f2845c865]::cmp::PartialOrd>::lt>
11: 0x7ffdb66edc57 - core[840dbb2f2845c865]::slice::sort::unstable::heapsort::heapsort::<((rustc_lint_defs[82a80524e948e0f0]::Level, &str), usize), <((rustc_lint_defs[82a80524e948e0f0]::Level, &str), usize) as core[840dbb2f2845c865]::cmp::PartialOrd>::lt>
12: 0x7ffdb517424e - alloc::boxed::impl$30::call
at /rustc/8c392966a013fd8a09e6b78b3c8d6e442bc278e1/library\alloc\src\boxed.rs:1986
13: 0x7ffdb517424e - std::panicking::rust_panic_with_hook
at /rustc/8c392966a013fd8a09e6b78b3c8d6e442bc278e1/library\std\src\panicking.rs:839
14: 0x7ffdb7c6850f - <rustc_data_structures[da05d66f39f5cffa]::profiling::SelfProfilerRef>::exec::cold_call::<<rustc_data_structures[da05d66f39f5cffa]::profiling::SelfProfilerRef>::incr_result_hashing::{closure#0}>
15: 0x7ffdb7c62299 - std[47ca72d4d3ff77e3]::sys::backtrace::__rust_end_short_backtrace::<std[47ca72d4d3ff77e3]::panicking::begin_panic<alloc[3445c4d0d5195b57]::string::String>::{closure#0}, !>
16: 0x7ffdb7c5ddf9 - std[47ca72d4d3ff77e3]::panicking::begin_panic::<alloc[3445c4d0d5195b57]::string::String>
17: 0x7ffdb7cf7546 - rustc_middle[1aca9e23c1f5e2ca]::util::bug::span_bug_fmt::<rustc_span[f932d894d049cea0]::span_encoding::Span>
18: 0x7ffdb7cd80dd - <rustc_middle[1aca9e23c1f5e2ca]::ty::consts::Const>::to_value
19: 0x7ffdb7cd7eb6 - <rustc_middle[1aca9e23c1f5e2ca]::ty::consts::Const>::to_value
20: 0x7ffdb7cf7432 - rustc_middle[1aca9e23c1f5e2ca]::util::bug::bug_fmt
21: 0x7ffdbdf4bef0 - rustc_codegen_ssa::back::write::start_executing_work::{{closure}}::hd8445bdf0e67cb18
22: 0x7ffdbdea6701 - std::sys::backtrace::__rust_begin_short_backtrace::hfdfd38ba62b7d4c5
23: 0x7ffdbdf6ef1a - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hcfe036d37e2b909f
24: 0x7ffdbdf81210 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hdf11f69de5923ea6
25: 0x7ffdbdda4e91 - std::panicking::try::do_call::h13938fb4f3c25359
26: 0x7ffdbdf7fac3 - hashbrown::raw_entry::RawEntryBuilderMut<K,V,S,A>::from_key::hc4c6d274dc70f660
27: 0x7ffdbdf6e51a - std::thread::Builder::spawn_unchecked_::{{closure}}::h2b5e349ba6fba155
28: 0x7ffdbdf11a29 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once::hcf79a037a97f74ed
29: 0x7ffdb51849ed - alloc::boxed::impl$28::call_once
at /rustc/8c392966a013fd8a09e6b78b3c8d6e442bc278e1/library\alloc\src\boxed.rs:1972
30: 0x7ffdb51849ed - alloc::boxed::impl$28::call_once
at /rustc/8c392966a013fd8a09e6b78b3c8d6e442bc278e1/library\alloc\src\boxed.rs:1972
31: 0x7ffdb51849ed - std::sys::pal::windows::thread::impl$0::new::thread_start
at /rustc/8c392966a013fd8a09e6b78b3c8d6e442bc278e1/library\std\src\sys\pal\windows\thread.rs:56
32: 0x7ffe6e37e8d7 - BaseThreadInitThunk
33: 0x7ffe6f8bc5dc - RtlUserThreadStart
error: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md
note: please make sure that you have updated to the latest nightly
note: please attach the file at `F:\rust\gpu-playground2\my-kernel\rustc-ice-2025-05-29T12_03_44-26464.txt` to your bug report
note: compiler flags: --crate-type cdylib --crate-type rlib -C opt-level=3 -C embed-bitcode=no -C strip=debuginfo -Z unstable-options -Z codegen-backend=F:\rust\gpu-playground2\target\debug\rustc_codegen_nvvm.dll -Z crate-attr=feature(register_tool) -Z crate-attr=register_tool(nvvm_internal) -Z crate-attr=no_std -Z saturating_float_casts=false -C llvm-args=-arch=compute_61 --override-libm
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
end of query stack
error: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/Rust-GPU/Rust-CUDA/issues/new
note: please make sure that you have updated to the latest nightly
note: please attach the file at `F:\rust\gpu-playground2\my-kernel\rustc-ice-2025-05-29T12_03_44-26464.txt` to your bug report
note: compiler flags: --crate-type cdylib --crate-type rlib -C opt-level=3 -C embed-bitcode=no -C strip=debuginfo -Z unstable-options -Z codegen-backend=F:\rust\gpu-playground2\target\debug\rustc_codegen_nvvm.dll -Z crate-attr=feature(register_tool) -Z crate-attr=register_tool(nvvm_internal) -Z crate-attr=no_std -Z saturating_float_casts=false -C llvm-args=-arch=compute_61 --override-libm
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
end of query stack
note: `rust-cuda` version `0.3.0`
For more information about this error, try `rustc --explain E0133`.
warning: `my-kernel` (lib) generated 1 warning
error: could not compile `my-kernel` (lib) due to 1 previous error; 1 warning emitted
thread 'main' panicked at build.rs:15:10:
called `Result::unwrap()` on an `Err` value: BuildFailed
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
- Vorherrschende Sprache
- Rust
- Sterne
- 5.4k
- Forks
- 251
- Ø Merge
- 4 T. 15 Std.
- Gemergte PRs (30 T.)
- 4
Entwicklungsumgebung
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus Rust-GPU/rust-cuda
-
Default NvvmArch::Compute75 silently produces InvalidPtx on pre-Turing GPUs (Pascal/Maxwell/Volta)Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 30/100
-
Array parameters lose alignment metadata and ICE on >16 byte alignmentsEvtl. vergeben @Snehal-Reddy hat das vor 165 Tagen übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 38/100
Alle Issues in Rust-GPU/rust-cuda
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
Maintainer antworten meist innerhalb von 1 Tag
-
V1 manifest lists written by Java lose added/existing/deleted file countsEvtl. vergeben @kacper-li-airspace-intelligence hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
apache/iceberg-rust#3445 ·
Maintainer antworten meist innerhalb von 4 Tagen
-
Slack integration: links on self-hosted domains never unfurl (parseCapShareUrl only accepts cap.so / cap.link)Evtl. vergeben @mangeshraut712 hat das heute übernommen. Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
CapSoftware/Cap#2546 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
Maintainer antworten meist innerhalb von 1 Tag
-
area::tern-sync kind::cleanup triage::ready
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag