Skip to content

'More efficient & data-parallel spartan' fails in dev mode #71

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: feat/rayon_parallelism
Choose a base branch
from

Conversation

matthiasgoergens
Copy link
Contributor

@matthiasgoergens matthiasgoergens commented Feb 5, 2025

When running in dev profile, instead of release, I get:

[...]
c5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0
    field struct^0^state0.poseidon.0.0 = state0.poseidon.0.0
    field struct^0^state1.poseidon.0.0 = state1.poseidon.0.0
    field struct^0^state2.poseidon.0.0 = state2.poseidon.0.0
    field struct^0^state3.poseidon.0.0 = state3.poseidon.0.0
    field struct^0^state4.poseidon.0.0 = state4.poseidon.0.0
    field struct^0^state5.poseidon.0.0 = state5.poseidon.0.0
    field struct^0^state6.poseidon.0.0 = state6.poseidon.0.0
    field struct^0^state7.poseidon.0.0 = state7.poseidon.0.0
    field struct^0^state8.poseidon.0.0 = state8.poseidon.0.0
    field struct^0^state9.poseidon.0.0 = state9.poseidon.0.0
    field struct^0^state10.poseidon.0.0 = state10.poseidon.0.0
    field struct^0^state11.poseidon.0.0 = state11.poseidon.0.0
    field %RET^state0.poseidon = struct^0^state0.poseidon.0.0
    field %RET^state1.poseidon = struct^0^state1.poseidon.0.0
    field %RET^state10.poseidon = struct^0^state10.poseidon.0.0
    field %RET^state11.poseidon = struct^0^state11.poseidon.0.0
    field %RET^state2.poseidon = struct^0^state2.poseidon.0.0
    field %RET^state3.poseidon = struct^0^state3.poseidon.0.0
    field %RET^state4.poseidon = struct^0^state4.poseidon.0.0
    field %RET^state5.poseidon = struct^0^state5.poseidon.0.0
    field %RET^state6.poseidon = struct^0^state6.poseidon.0.0
    field %RET^state7.poseidon = struct^0^state7.poseidon.0.0
    field %RET^state8.poseidon = struct^0^state8.poseidon.0.0
    field %RET^state9.poseidon = struct^0^state9.poseidon.0.0
Transition: -> [email protected]

Block 12:
Func: poseidon, Scope: 0
Exec Bound: 1, While Loop: false
RO Ops: 0, VM Ops: 0
Num Cons: -
Inputs:
Outputs:
Instructions:
Transition: -> [email protected]


--
Optimization:
thread 'main' panicked at src/front/zsharp/blocks_optimization.rs:3458:41:
attempt to subtract with overflow
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

My test_poseidon.sh look like this:

#!/bin/bash
set -euxo pipefail

profile="dev"
#profile="release"

echo "const u32 REPETITION = $1" > zok_tests/benchmarks/poseidon_test/poseidon_const.zok

cd circ_blocks
cargo run --profile="${profile}" --example zxc poseidon_test/poseidon_struct

With $ RUST_BACKTRACE=full ./test_poseidon.sh 1000 we get

[...]
    field %RET^state9.poseidon = struct^0^state9.poseidon.0.0
Transition: -> [email protected]

Block 12:
Func: poseidon, Scope: 0
Exec Bound: 1, While Loop: false
RO Ops: 0, VM Ops: 0
Num Cons: -
Inputs:
Outputs:
Instructions:
Transition: -> [email protected]


--
Optimization:
thread 'main' panicked at src/front/zsharp/blocks_optimization.rs:3458:41:
attempt to subtract with overflow
stack backtrace:
   0:     0x5c8f5a961a52 - std::backtrace_rs::backtrace::libunwind::trace::h33b1d28e7298fac3
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/../../backtrace/src/backtrace/libunwind.rs:116:5
   1:     0x5c8f5a961a52 - std::backtrace_rs::backtrace::trace_unsynchronized::hbd53af576b1282f4
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x5c8f5a961a52 - std::sys::backtrace::_print_fmt::h35feaa8bfdb8925d
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/sys/backtrace.rs:66:9
   3:     0x5c8f5a961a52 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::ha689401f443fba58
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/sys/backtrace.rs:39:26
   4:     0x5c8f5a696ef7 - core::fmt::rt::Argument::fmt::h222e2353f129020e
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/core/src/fmt/rt.rs:177:76
   5:     0x5c8f5a696ef7 - core::fmt::write::h09af537ef9d31c38
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/core/src/fmt/mod.rs:1186:21
   6:     0x5c8f5a95aa86 - std::io::Write::write_fmt::he95fb0c4685d97a6
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/io/mod.rs:1839:15
   7:     0x5c8f5a9616a7 - std::sys::backtrace::BacktraceLock::print::h7a83d27b793c4347
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/sys/backtrace.rs:42:9
   8:     0x5c8f5a96349f - std::panicking::default_hook::{{closure}}::h954d5693366e5d11
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/panicking.rs:268:22
   9:     0x5c8f5a963037 - std::panicking::default_hook::hcd4d1d9e834fb485
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/panicking.rs:295:9
  10:     0x5c8f5a964047 - std::panicking::rust_panic_with_hook::hed093b35b993a1c7
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/panicking.rs:801:13
  11:     0x5c8f5a963bdc - std::panicking::begin_panic_handler::{{closure}}::hd39c03c25db5675d
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/panicking.rs:667:13
  12:     0x5c8f5a962239 - std::sys::backtrace::__rust_end_short_backtrace::h6d39914f0d7b34fe
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/sys/backtrace.rs:170:18
  13:     0x5c8f5a96362e - rust_begin_unwind
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/panicking.rs:665:5
  14:     0x5c8f5a692f25 - core::panicking::panic_fmt::ha518594d9318f161
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/core/src/panicking.rs:74:14
  15:     0x5c8f5a6a4bc3 - core::panicking::panic_const::panic_const_sub_overflow::h569602fec7355b91
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/core/src/panicking.rs:181:21
  16:     0x5c8f5a010973 - circ::front::zsharp::blocks_optimization::<impl circ::front::zsharp::ZGen>::resolve_spilling::h4e9b8906fd122bfe
                               at /home/matthias/scroll/prog/ceno-recursion/circ_blocks/src/front/zsharp/blocks_optimization.rs:3458:41
  17:     0x5c8f5a2d1e8b - circ::front::zsharp::blocks_optimization::<impl circ::front::zsharp::ZGen>::optimize_block::h98d2d061f29e4ff4
                               at /home/matthias/scroll/prog/ceno-recursion/circ_blocks/src/front/zsharp/blocks_optimization.rs:1950:19
  18:     0x5c8f5a021ca9 - <circ::front::zsharp::ZSharpFE as circ::front::FrontEnd>::gen::hce14e55a7bcc60ef
                               at /home/matthias/scroll/prog/ceno-recursion/circ_blocks/src/front/zsharp/mod.rs:83:13
  19:     0x5c8f59d0ee03 - zxc::get_compile_time_knowledge::h9f599504735c0328
                               at /home/matthias/scroll/prog/ceno-recursion/circ_blocks/examples/zxc.rs:602:9
  20:     0x5c8f59c65f02 - zxc::main::hf3eaa583b03cd849
                               at /home/matthias/scroll/prog/ceno-recursion/circ_blocks/examples/zxc.rs:1509:9
  21:     0x5c8f59dae5fb - core::ops::function::FnOnce::call_once::h3f4c26d82775b52d
                               at /home/matthias/.rustup/toolchains/nightly-2024-10-03-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
  22:     0x5c8f5a68441e - std::sys::backtrace::__rust_begin_short_backtrace::h3f7a671f76e568df
                               at /home/matthias/.rustup/toolchains/nightly-2024-10-03-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/backtrace.rs:154:18
  23:     0x5c8f59cfaf61 - std::rt::lang_start::{{closure}}::he2ef1b4d5da6d38a
                               at /home/matthias/.rustup/toolchains/nightly-2024-10-03-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:164:18
  24:     0x5c8f5a94c36e - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::ha1f1642b8e9bd74a
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/core/src/ops/function.rs:284:13
  25:     0x5c8f5a94c36e - std::panicking::try::do_call::hecea85fe7d6edda5
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/panicking.rs:557:40
  26:     0x5c8f5a94c36e - std::panicking::try::h4f8eb6ebee171f35
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/panicking.rs:520:19
  27:     0x5c8f5a94c36e - std::panic::catch_unwind::h77a3b376b0c0e5e5
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/panic.rs:358:14
  28:     0x5c8f5a94c36e - std::rt::lang_start_internal::{{closure}}::h24187c45e225a599
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/rt.rs:143:48
  29:     0x5c8f5a94c36e - std::panicking::try::do_call::hf548e8a6255337a0
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/panicking.rs:557:40
  30:     0x5c8f5a94c36e - std::panicking::try::h147ab63ac654d01d
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/panicking.rs:520:19
  31:     0x5c8f5a94c36e - std::panic::catch_unwind::h67c6eb5eb863d18c
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/panic.rs:358:14
  32:     0x5c8f5a94c36e - std::rt::lang_start_internal::h84c7f39b990c0649
                               at /rustc/18b1161ec9eeab8927f91405bca0ddf59a4a26c9/library/std/src/rt.rs:143:20
  33:     0x5c8f59cfaf3a - std::rt::lang_start::h7cd568c38bfc5aae
                               at /home/matthias/.rustup/toolchains/nightly-2024-10-03-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:163:17
  34:     0x5c8f59c69aee - main
  35:     0x75889989a488 - <unknown>
  36:     0x75889989a54c - __libc_start_main
  37:     0x5c8f59c5a4a5 - _start
  38:                0x0 - <unknown>

Following the stack trace, the offending operation happens on let mut sp_offset = stack[stack.len() - 1].len() - 1; in circ_blocks/src/front/zsharp/blocks_optimization.rs line 3458.

@matthiasgoergens matthiasgoergens changed the title Fails in dev mode 'More efficient & data-parallel spartan' fails in dev mode Feb 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant