fff-rs / juice

The Hacker's Machine Learning Engine
1.1k stars 77 forks source link

CUDNN Bidirectional Fails #106

Open lissahyacinth opened 4 years ago

lissahyacinth commented 4 years ago

Summary

RNN Forward fails with CUDNN RNN when using Bidirectional as a direction mode as compared to Unidirectional.

Code Snippet

    net_cfg.add_layer(LayerConfig::new(
        // Layer name is only used internally - can be changed to anything
        "LSTMInitial",
        RnnConfig {
            hidden_size: 5,
            num_layers: 1,
            dropout_seed: 123,
            dropout_probability: 0.5,
            rnn_type: RnnNetworkMode::LSTM,
            input_mode: RnnInputMode::LinearInput,
            direction_mode: DirectionMode::BiDirectional,
        },
    ));

Command & Error

C:/Users/Lissa/.cargo/bin/cargo.exe +stable run --color=always --no-default-features --features cuda,native train --file=NetworkOut.juice
warning: Running bindgen(cublas-sys), make sure to have all required host libs installed!
warning: Running bindgen(cudnn-sys), make sure to have all required host libs installed!
   Compiling example-rnn-regression v0.0.1 (D:\BitBucket\juice\juice-examples\mackey-glass-rnn-regression)
    Finished dev [unoptimized + debuginfo] target(s) in 44.77s
     Running `target\debug\example-rnn-regression.exe train --file=NetworkOut.juice`
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Plugin(Plugin("Unable to perform RNN Forward"))', D:\BitBucket\juice\juice\src\layers\common\rnn.rs:206:9
Stacktrace

```bash stack backtrace: 0: 0x7ff7fc53888f - backtrace::backtrace::trace_unsynchronized at C:\Users\VssAdministrator\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.46\src\backtrace\mod.rs:66 1: 0x7ff7fc53888f - std::sys_common::backtrace::_print_fmt at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libstd\sys_common\backtrace.rs:78 2: 0x7ff7fc53888f - std::sys_common::backtrace::_print::{{impl}}::fmt at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libstd\sys_common\backtrace.rs:59 3: 0x7ff7fc54e2bb - core::fmt::write at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libcore\fmt\mod.rs:1069 4: 0x7ff7fc5361cc - std::io::Write::write_fmt at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libstd\io\mod.rs:1504 5: 0x7ff7fc53b70c - std::sys_common::backtrace::_print at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libstd\sys_common\backtrace.rs:62 6: 0x7ff7fc53b70c - std::sys_common::backtrace::print at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libstd\sys_common\backtrace.rs:49 7: 0x7ff7fc53b70c - std::panicking::default_hook::{{closure}} at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libstd\panicking.rs:198 8: 0x7ff7fc53b34f - std::panicking::default_hook at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libstd\panicking.rs:218 9: 0x7ff7fc53bef7 - std::panicking::rust_panic_with_hook at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libstd\panicking.rs:511 10: 0x7ff7fc53ba7f - std::panicking::begin_panic_handler at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libstd\panicking.rs:419 11: 0x7ff7fc54c250 - core::panicking::panic_fmt at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libcore\panicking.rs:111 12: 0x7ff7fc54c073 - core::option::expect_none_failed at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libcore\option.rs:1268 13: 0x7ff7fbfc94c0 - core::result::Result<(), coaster::error::Error>::unwrap<(),coaster::error::Error> at C:\Users\Lissa\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\src\libcore\result.rs:1005 14: 0x7ff7fc13a933 - juice::layers::common::rnn::{{impl}}::compute_output> at D:\BitBucket\juice\juice\src\layers\common\rnn.rs:206 15: 0x7ff7fc13ce61 - juice::layer::ILayer::forward>,coaster::backend::Backend> at D:\BitBucket\juice\juice\src\layer.rs:1096 16: 0x7ff7fc014163 - juice::layer::Layer>::forward> at D:\BitBucket\juice\juice\src\layer.rs:558 17: 0x7ff7fc065569 - juice::layers::container::sequential::{{impl}}::forward> at D:\BitBucket\juice\juice\src\layers\container\sequential.rs:301 18: 0x7ff7fc014163 - juice::layer::Layer>::forward> at D:\BitBucket\juice\juice\src\layer.rs:558 19: 0x7ff7fc06d074 - juice::solver::Solver, coaster::backend::Backend>::train_minibatch,coaster::backend::Backend at C:\Users\Lissa\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\src\libstd\rt.rs:67 23: 0x7ff7fc53c10a - std::rt::lang_start_internal::{{closure}} at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libstd\rt.rs:52 24: 0x7ff7fc53c10a - std::panicking::try::do_call at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libstd\panicking.rs:331 25: 0x7ff7fc53c10a - std::panicking::try at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libstd\panicking.rs:274 26: 0x7ff7fc53c10a - std::panic::catch_unwind at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libstd\panic.rs:394 27: 0x7ff7fc53c10a - std::rt::lang_start_internal at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4\/src\libstd\rt.rs:51 28: 0x7ff7fc0613b3 - std::rt::lang_start<()> at C:\Users\Lissa\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\src\libstd\rt.rs:67 29: 0x7ff7fc06af90 - main 30: 0x7ff7fd234b34 - invoke_main at d:\agent\_work\4\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78 31: 0x7ff7fd234b34 - __scrt_common_main_seh at d:\agent\_work\4\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288 32: 0x7ffc19376fd4 - BaseThreadInitThunk 33: 0x7ffc1b29cec1 - RtlUserThreadStart error: process didn't exit successfully: `target\debug\example-rnn-regression.exe train --file=NetworkOut.juice` (exit code: 101) ```

drahnr commented 3 years ago

Should also be covered by #139