The Hacker's Machine Learning Engine

Overview

Juice

This is the workspace project for

Please conduct the individual README.md files for more information.

Juice Examples

CLI for running juice examples. More examples and benchmark tests can be found at the juice examples directory.

Install CLI

DISCLAIMER: Currently both CUDA and cuDNN are required for the examples to build.

Compile and call the build.

# install rust, if you need to
curl -sSf https://static.rust-lang.org/rustup.sh | sh
# download the code
git clone [email protected]:spearow/juice.git && cd juice/juice-examples
# build the binary
cargo build --release
# and you should see the CLI help page
../target/release/juice-examples --help
# which means, you can run the examples from the juice-examples README

Dependencies

Cap'n'Proto

cpanp is a data interchange format that is used to store and load networks with weights for Juice.

capnproto and capnproto-libs plus their development packages are the ones needed from your package manager.

Cuda

Getting the cuda libraries up poses to be the first road-block many users face.

To get things working one needs to set the following environment variables:

# examplary paths, unlikely to work for your local setup!
export CUDNN_INCLUDE_DIR=/opt/cuda/include
export CUDNN_LIB_DIR=/opt/cuda/targets/x86_64-linux/lib/
export CUBLAS_INCLUDE_DIR=/opt/cuda/include
export CUBLAS_LIB_DIR=/opt/cuda/targets/x86_64-linux/lib/

depending on your local installation setup.

The currently supported cuda version is cuda-10 (details in #114 and #115 )

Note that you need a capable nvidia device in order to run the cuda backend.

OpenCL

You need the apropriate loader and device libraries. Since the OpenCL backend is still WIP, this will be detailed at a later point of time.

BLAS

Blas is a linear algebra used by the native backend.

openblas or blas is required to be present. Choose explicitly via BLAS_VARIANT.

By default an attempt is made to resolve the library via pkg-config.

Overriding via

# examplary paths, unlikely to work for your local setup!
export BLAS_LIB_DIR=/opt/blas/lib64/
export BLAS_INCLUDE_DIR=/opt/blas/include/

is also supported.

Linkage for the blas library variant is determined by setting BLAS_STATIC to 1 or unsetting BLAS_STATIC.

Comments
  • Add RNN Layer

    Add RNN Layer

    Versions

    Using Rust Stable (stable-x86_64-pc-windows-gnu). CUDA is v10.2 CUDNN is v7.6.5

    Tests

    Testing this with cargo run --release --verbose mackey-glass lstm-dense RCudnn to support it is at; https://github.com/lissahyacinth/rust-cudnn

    Status

    This is currently unfinished, with remaining tasks

    • [x] Resolve Heap Error
    • [ ] Add match arms Ok/Error for RNN_Forward
    • [ ] Add Compute Input Gradient
    • [ ] Add Compute Parameters Gradient
    • [ ] Verify against Mackey-Glass or MNIST dataset
    • [ ] PR Rust-Cudnn and use Crates version for testing

    ~~# Memory Error~~ ~~error: process didn't exit successfully: target\release\juice-examples.exe mackey-glass lstm-dense (exit code: 0xc0000374, STATUS_HEAP_CORRUPTION)~~

    ~~This memory error is due to a part of RNN_FORWARD failing, likely to do with the initialisation of the weights. Leaving this on draft PR while I resolve it.~~

    enhancement 
    opened by lissahyacinth 26
  • Error when executing

    Error when executing "example-rnn-regression" juice example on aarch64 target

    Describe the bug

    Hello everyone,

    I'm new to github this is my first post :) My objective is to use juice library on a Nvidia Jetson Nano board. For that I managed to cross compile (after many struggling) the juice repository using the rust library "cross" (https://github.com/rust-embedded/cross) and docker container : Dockerfile.jetson-balena.txt

    The jetson nano has the following setup : Linux droopi-desktop 4.9.201-tegra #1 SMP PREEMPT Fri Feb 19 08:40:32 PST 2021 aarch64 aarch64 aarch64 GNU/Linux

    I built the docker image with : image In juice repo i created a Cross.toml file containing: image

    I started cross compilation with:

    image

    The example "mnist-image-multiclass-classification" works fine on the jetson but the issue is that example "example-rnn-regression" fails at execution and I want to be shure that everything works fine in the library before going further. The error message is : example-rnn-regression.log.txt

    Any idea why it happens? Is it even possible to have every juice feature working on arm64 target?

    Thank you very much,

    Etienne

    bug 
    opened by Etienne-56 16
  • Can't build dummy example with native feature only (on macOS)

    Can't build dummy example with native feature only (on macOS)

    Error Description

    I'd like to explore juice with the native backend since on my laptop (macbook air 2013, osx/macOS High Sierra 10.13.4) does not have an nvidia GPU.

    As such, I want to disable cuda and opencl features and only enable native, at least for now.

    Unfortunately every attempts I've made were not sufficient to completely disable cuda. I always get this error:

     = note: ld: library not found for -lcuda
              clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    Here's a gist containing the whole thing: https://gist.github.com/nbigaouette/154e396199f481638da2253e8d22f53f

    It seems that coaster is still compiled with --cfg 'feature="cuda"':

    Running `rustc --crate-name coaster /Users/nicolas/libraries/coaster.git/src/lib.rs --crate-type lib --emit=dep-info,link -C debuginfo=2 --cfg 'feature="cuda"' --cfg 'feature="default"' --cfg 'feature="native"' --cfg 'feature="opencl"' -C metadata=67128269456ec24d -C extra-filename=-67128269456ec24d --out-dir /Users/nicolas/juice-hello-world/target/debug/deps -C incremental=/Users/nicolas/juice-hello-world/target/debug/incremental -L dependency=/Users/nicolas/juice-hello-world/target/debug/deps --extern bitflags=/Users/nicolas/juice-hello-world/target/debug/deps/libbitflags-2442dd2387c2da9c.rlib --extern byteorder=/Users/nicolas/juice-hello-world/target/debug/deps/libbyteorder-3250be07bda40946.rlib --extern enum_primitive=/Users/nicolas/juice-hello-world/target/debug/deps/libenum_primitive-38d0147966973709.rlib --extern lazy_static=/Users/nicolas/juice-hello-world/target/debug/deps/liblazy_static-e4ec31522d2c88da.rlib --extern libc=/Users/nicolas/juice-hello-world/target/debug/deps/liblibc-c148fa7e306e3201.rlib --extern num=/Users/nicolas/juice-hello-world/target/debug/deps/libnum-f172fe852397062e.rlib --extern regex=/Users/nicolas/juice-hello-world/target/debug/deps/libregex-8fb663e54381219f.rlib`
    

    How come coaster is compiled with the cuda feature, even though I tried many things to disable it?

    What should have happend

    Successful linking, without cuda (nor opencl).

    Describe in which context it happened

    src/main.rs:

    extern crate juice;
    
    fn main() {
        println!("Hello, world!");
    }
    

    Cargo.toml:

    [package]
    name = "juice-hello-world"
    version = "0.1.0"
    authors = ["Nicolas Bigaouette <[email protected]>"]
    
    [dependencies]
    juice = { version = "0.2.3", default-features = false }
    
    [features]
    default = ["native"] # include only the ones you want to use, in this case "native"
    native  = ["juice/native"]
    cuda    = ["juice/cuda"]
    opencl  = ["juice/opencl"]
    
    cargo run -v --no-default-features --features native
    

    Environment

    OS:

    uname -a: Darwin MBAIRNB.local 17.5.0 Darwin Kernel Version 17.5.0: Mon Mar 5 22:24:32 PST 2018; root:xnu-4570.51.1~1/RELEASE_X86_64 x86_64

    GPU Devices:

    None

    Native related issues:

    > pkg-config --libs --cflags blas
    Package blas was not found in the pkg-config search path.
    Perhaps you should add the directory containing `blas.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'blas' found
    
    > pkg-config --libs --cflags openblas
    Package openblas was not found in the pkg-config search path.
    Perhaps you should add the directory containing `openblas.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'openblas' found
    
    > export PKG_CONFIG_PATH=/usr/local/opt/openblas/lib/pkgconfig
    > pkg-config --libs --cflags openblas
    -I/usr/local/Cellar/openblas/0.3.2_1/include -L/usr/local/Cellar/openblas/0.3.2_1/lib -lopenblas
    
    bug day-1 
    opened by nbigaouette 15
  • Trouble building with cuda

    Trouble building with cuda

    Hi guys,

    Sorry this is more of a support request than an issue, but hopefully the fix will be searchable for other people. When building coaster-nn with cuda feature enabled I get these errors

    juice/coaster-nn on  master [!] is 📦 v0.4.2 via 🦀 v1.45.1 
    ❯ cargo build --release --no-default-features --features cuda
    warning: Running bindgen(cudnn-sys), make sure to have all required host libs installed!
    warning: Running bindgen(cublas-sys), make sure to have all required host libs installed!
       Compiling coaster-nn v0.4.2 (/home/matiu/projects/downloads/juice/coaster-nn)
    error[E0599]: no associated item named `CUDNN_RNN_PADDED_IO_ENABLED` found for type `u32` in the current scope
       --> coaster-nn/src/frameworks/cuda/mod.rs:765:66
        |
    765 |             RnnPaddingMode::Enabled => Ok(cudnnRNNPaddingMode_t::CUDNN_RNN_PADDED_IO_ENABLED),
        |                                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated item not found in `u32`
    
    error[E0599]: no associated item named `CUDNN_RNN_PADDED_IO_DISABLED` found for type `u32` in the current scope
       --> coaster-nn/src/frameworks/cuda/mod.rs:766:67
        |
    766 |             RnnPaddingMode::Disabled => Ok(cudnnRNNPaddingMode_t::CUDNN_RNN_PADDED_IO_DISABLED)
        |                                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated item not found in `u32`
    
    error[E0599]: no associated item named `CUDNN_RNN_PADDED_IO_ENABLED` found for type `u32` in the current scope
       --> coaster-nn/src/frameworks/cuda/mod.rs:772:36
        |
    772 |             cudnnRNNPaddingMode_t::CUDNN_RNN_PADDED_IO_ENABLED => RnnPaddingMode::Enabled,
        |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated item not found in `u32`
    
    error[E0599]: no associated item named `CUDNN_RNN_PADDED_IO_DISABLED` found for type `u32` in the current scope
       --> coaster-nn/src/frameworks/cuda/mod.rs:773:36
        |
    773 |             cudnnRNNPaddingMode_t::CUDNN_RNN_PADDED_IO_DISABLED => RnnPaddingMode::Disabled,
        |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated item not found in `u32`
    
    error: aborting due to 4 previous errors
    
    For more information about this error, try `rustc --explain E0599`.
    error: could not compile `coaster-nn`.
    
    To learn more, run the command again with --verbose.
    

    I'm on ubuntu, and I have installed libcudnn8-dev_8.0.2.39-1+cuda11.0_amd64.deb and I exported the paths to the libraries:

    ❯ set | rg -i 'cud'
    CUBLAS_INCLUDE_DIR=/usr/local/cuda-11.0/include
    CUBLAS_LIB_DIR=/usr/local/cuda-11.0/lib64
    CUDNN_INCLUDE_DIR=/usr/include/x86_64-linux-gnu
    CUDNN_LIB_DIR=/usr/lib/x86_64-linux-gnu
    

    Any help appreciated.

    help wanted dependency 
    opened by matiu2 13
  • cblas linker error

    cblas linker error

    Here's my Cargo.toml:

    [dependencies]
    coaster = "0.1"
    juice = { version = "0.2", default-features = false } 
    
    [features] 
    default = ["native"]
    native = ["juice/native"]
    

    And then

    $ cargo build
    
    ...
    error: linking with `cc` failed: exit status: 1
    ...
      = note: /usr/bin/ld: /home/mikhail/Documents/evolution/target/debug/deps/libcoaster_blas-450fb0dd29f3d07a.rlib(coaster_blas-450fb0dd29f3d07a.coaster_blas.72d24db0-cgu.4.rcgu.o): in function `<f32 as rust_blas::vector::ops::Dot>::dot':
              /home/mikhail/.cargo/registry/src/github.com-1ecc6299db9ec823/rust-blas-0.1.3/src/vector/ops.rs:272: undefined reference to `cblas_sdot'
              /usr/bin/ld: /home/mikhail/Documents/evolution/target/debug/deps/libcoaster_blas-450fb0dd29f3d07a.rlib(coaster_blas-450fb0dd29f3d07a.coaster_blas.72d24db0-cgu.4.rcgu.o): in function `<f32 as rust_blas::vector::ops::Axpy>::axpy':
              /home/mikhail/.cargo/registry/src/github.com-1ecc6299db9ec823/rust-blas-0.1.3/src/vector/ops.rs:62: undefined reference to `cblas_saxpy'
              /usr/bin/ld: /home/mikhail/Documents/evolution/target/debug/deps/libcoaster_blas-450fb0dd29f3d07a.rlib(coaster_blas-450fb0dd29f3d07a.coaster_blas.72d24db0-cgu.4.rcgu.o): in function `<f32 as rust_blas::vector::ops::Copy>::copy':
              /home/mikhail/.cargo/registry/src/github.com-1ecc6299db9ec823/rust-blas-0.1.3/src/vector/ops.rs:28: undefined reference to `cblas_scopy'
              /usr/bin/ld: /home/mikhail/Documents/evolution/target/debug/deps/libcoaster_blas-450fb0dd29f3d07a.rlib(coaster_blas-450fb0dd29f3d07a.coaster_blas.72d24db0-cgu.4.rcgu.o): in function `<f32 as rust_blas::vector::ops::Scal>::scal':
              /home/mikhail/.cargo/registry/src/github.com-1ecc6299db9ec823/rust-blas-0.1.3/src/vector/ops.rs:137: undefined reference to `cblas_sscal'
              /usr/bin/ld: /home/mikhail/Documents/evolution/target/debug/deps/librust_blas-370727a962638f7d.rlib(rust_blas-370727a962638f7d.rust_blas.9e9a8cb2-cgu.4.rcgu.o): in function `<f32 as rust_blas::matrix::ops::Gemm>::gemm':
              /home/mikhail/.cargo/registry/src/github.com-1ecc6299db9ec823/rust-blas-0.1.3/src/matrix/ops.rs:41: undefined reference to `cblas_sgemm'
              collect2: error: ld returned 1 exit status
    
    $ pacman -Q | grep blas
    openblas 0.3.18-1
    

    It's interesting that juice examples compile and run just fine...

    bug 
    opened by hweom 12
  • Tests need to be caught up with foreign libraries

    Tests need to be caught up with foreign libraries

    Error Description

    If you run cargo test, the linker fails on a GEMM incompatibility.

    Log

       Compiling juice v0.2.3 (file:///home/ashley/juice-project/juice)
    
    ...
    
    error: linking with `cc` failed: exit code: 1
      |
      = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/ashley/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.138pesuvab4dy035.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.13tprap6axy2fph1.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.15kq92zzbmxot4k9.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.166zrsdca5x7z59.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.16u6js6g0l3k1ic6.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.17erb31xn70viq4b.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1a5i2tq60667vtjt.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1bgyo06bo88z8qp4.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1bi4oluhv54j40n2.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1ckp3bwk0jmrbky4.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1dqvxks6k2bzkxe.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1e698527iprj2v8f.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1im38lueib99jsk0.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1jnlhyxj59jycbjv.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1kduva7sc7em934m.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1mvmz58owquyropc.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1oca2t5yfnhtmb3x.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1paja2l0ryv4yk0i.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1q8ffos2d96smbjs.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1rv8n017ha9022uu.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1uc1wq3igno2rmnk.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1vut2eft6nlujjxr.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1xqv5lpflf7ggpga.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1y16o1qfye96o7m0.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1ybf7kcc158ckkia.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1zeawhkbeobww1zn.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.1zwd8n7bcl3vhvvh.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.23tqyymcb18u96mb.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.26cpq4kc17wqvpva.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.26tob62dhs231n08.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.285ux0t7vjsmmzc2.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.28m6b5dkfoixx5aa.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2bxg79lqe593hwex.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2bxldd3oqtodepuq.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2dh9yuzgscovothb.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2e57dzkbp006h2t3.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2f5f9atofyy5pq8l.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2jqywn86b2gsqohu.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2lsgp9slid4tupbj.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2lvxknekg89q3svy.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2lyh15q6cjwzy18c.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2oiwwqohid6mabhc.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2pomqs9zh4w20z8u.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2pykstueqbrp51f3.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2qhkzqx5zqexj20y.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2rg23b7kvq7w2bbp.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2ugsdtbc94v2yp3y.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2w6xsa2hbi53xhak.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2xs38k3nu4oe9uo6.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2yx7qu1uqvipxq6i.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.2zntujdszbgl5ksg.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3171x0bwu82dptu7.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.35dif2yfqvun9jag.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3650q94xlknug1bk.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.36ad6ygiiror6p73.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.37zg35bowvhgupmi.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.387bw5wmrzmzi9tu.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.38xaqdmnspeyek9w.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3ajif99nvwbmf7kz.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3ayaeypdcro9d6yk.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3co9pkem1sh3wbyp.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3cx7oljifvb206q7.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3f6klegmryfg2ey3.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3fer4d615r0xojzm.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3g94tobrpgum5dk6.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3hdlzcrvcuascs9d.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3ik0x0hz6l66cx38.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3kk13x0u4ktko1go.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3lhxbh187rsembyc.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3oqznv5oym7l3m4e.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3q8w2waizwhassn2.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3qi9i0urruv1q39q.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3rngp6bm2u2q5z0y.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3s1u7f9q2y4goodv.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.3vck0z67htzlxjio.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.436dotimmrgzkwfa.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.43v6g0y2xsxoggnt.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.45nf4z58qqykpcpi.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.45pc7c65foh9i35f.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.48721dc4k5qxei0u.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.49a7n47po4ttqjl7.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.49lx1q7cxvpykyv0.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4an0ix21w40jttvg.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4aolhbwzc3tsey6r.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4arb8s2lq5ac6gll.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4brwxiorhmgsb6oc.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4cxyqmsl2ros1gyv.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4dtnki5bgt8bvvrg.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4ei91acrh34fj49y.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4ezmh1vbs95c5ack.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4fkf91p9w8d8vryo.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4fucuw134ffl3tmu.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4g47d2sx6m33abop.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4g4m3v5x9045spb3.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4hvwaj80f504uofg.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4jkk7yhkl6pyymtf.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4kqxsu08wxuaoo3w.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4ncs6fhfb9hjffqf.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4rzh6npf1tuwcxx9.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4sw9hz7i7fiueihz.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4v9zhvfjjkov3sig.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4vy3qcrl28uuur63.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4xq48u46a1pwiqn7.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4xuhwz5yy6q4gvgg.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4yh8x2b62dcih00t.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4ypvbwho0bu5tnww.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.4zw1r5f78rc8egdz.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.50ihq5hb18xtkrzj.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.50l5bvs77o484wu8.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.51s1w397y42gpez1.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.51te231hjxr8ccdh.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.53uxuw1muw1jbx4l.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.56dly8q07ws8ucdq.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.571ojudrijgdq9je.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.57k06xfugllsc526.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.57qy3vyd9bhiuaon.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.5a41h599e6s0ty1z.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.5beqqbexwb143v6a.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.5e4vamswl6pruawz.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.5fi52boevgmznqzp.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.63mmpc50mjcb0lb.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.6s9l8e4gs325mgl.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.7p53qlves2rwxx0.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.8xzrsc1ux72v29j.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.98g0d9x8aw3akpe.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.9elsx31vb4it187.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.9fcb3syd3ne5k0n.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.c6lbtaiefvx3wya.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.e19kx9t7xhzajfl.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.hi61vfphyi9zbiu.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.j9fgs0cpeo356mj.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.mb501chi8fnqgmm.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.mz7vgmcf23rofcc.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.pqmjx25qpxkduz7.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.pwoyhldid8s7l5p.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.spyjbt69vcsrx9q.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.vqw3ycco7okst5v.rcgu.o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.xu4obdcw6cpdlyb.rcgu.o" "-o" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a" "/home/ashley/juice-project/juice/target/debug/deps/layer_specs-81d58b45e5827e6a.crate.allocator.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" "-L" "/home/ashley/juice-project/juice/target/debug/deps" "-L" "/home/ashley/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/ashley/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libtest-875324f9ac1d0205.rlib" "/home/ashley/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libterm-6b3c7f8021762801.rlib" "/home/ashley/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgetopts-9f4fb616c2996f41.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libjuice-950f7099a92a2cd5.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libcoaster_nn-5e105294e85782df.rlib" "/home/ashley/juice-project/juice/target/debug/deps/liblog-1083263758d30afa.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libcoaster_blas-a25e46d70aff0e69.rlib" "/home/ashley/juice-project/juice/target/debug/deps/librblas-2d59f7a42168cee3.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libcoaster-2f875589b04c4d43.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libbyteorder-ff5b5cbeccce4929.rlib" "/home/ashley/juice-project/juice/target/debug/deps/liblazy_static-fdfa0f33bf56f53f.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libenum_primitive-595dd4954e3534a3.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libnum_traits-e0eb695af8b7c2ff.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libbitflags-8d0d8717bd480c28.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libcapnp-c00c1b02e9834c5a.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libbyteorder-fb0fa61a79237c85.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libnum-aaa2cb67f7041715.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libnum_rational-3c7384c34e9c9d79.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libnum_bigint-3a3250060807be15.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libnum_complex-4e206c3815a55980.rlib" "/home/ashley/juice-project/juice/target/debug/deps/librustc_serialize-675d1820859dd87d.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libnum_iter-763386b6c6b39277.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libnum_integer-8cae946474f6f824.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libnum_traits-45a33a723367009b.rlib" "/home/ashley/juice-project/juice/target/debug/deps/librand-7cbcb3e7a58227e0.rlib" "/home/ashley/juice-project/juice/target/debug/deps/liblog-0449cd80c8988189.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libcfg_if-666f16f36d451673.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libtimeit-b90de33dd74fe5e9.rlib" "/home/ashley/juice-project/juice/target/debug/deps/libtime-9c3e1eb2336f6661.rlib" "/home/ashley/juice-project/juice/target/debug/deps/liblibc-2a28dfa3bdaef380.rlib" "-Wl,--start-group" "/home/ashley/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-2da986ecbb2c5327.rlib" "/home/ashley/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-57f46841c9a9f4ee.rlib" "/home/ashley/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_jemalloc-23263fe5893322f6.rlib" "/home/ashley/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-6ed5262c9a0a3e5a.rlib" "/home/ashley/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_system-99c162b689d43349.rlib" "/home/ashley/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-cd415b85dd267875.rlib" "/home/ashley/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-3876ac10aa96a1e3.rlib" "/home/ashley/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_unicode-598b0e9aca382e9a.rlib" "/home/ashley/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-4eabb2b1c31071b8.rlib" "-Wl,--end-group" "/home/ashley/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-d7a656735ceeae9e.rlib" "-Wl,-Bdynamic" "-l" "blas" "-l" "OpenCL" "-l" "OpenCL" "-l" "cuda" "-l" "util" "-l" "util" "-l" "dl" "-l" "rt" "-l" "pthread" "-l" "pthread" "-l" "gcc_s" "-l" "c" "-l" "m" "-l" "rt" "-l" "pthread" "-l" "util" "-l" "util"
      = note: /home/ashley/juice-project/juice/target/debug/deps/librblas-2d59f7a42168cee3.rlib(rblas-2d59f7a42168cee3.rblas1.rcgu.o): In function `<f32 as rblas::matrix::ops::Gemm>::gemm':
              /home/ashley/.cargo/registry/src/github.com-1ecc6299db9ec823/rblas-0.0.13/src/matrix/ops.rs:34: undefined reference to `cblas_sgemm'
              collect2: error: ld returned 1 exit status
              
    
    error: aborting due to previous error
    
    error: Could not compile `juice`.
    
    To learn more, run the command again with --verbose.
    

    What should have happened

    Linking should have finished correctly.

    Describe in which context it happened

    Test

    Environment

    OS: Linux 4.16.11-1-ARCH #1 SMP PREEMPT Tue May 22 21:40:27 UTC 2018 x86_64 GNU/Linux

    help wanted dependency 
    opened by lake-effect 12
  • cuda blas tests fail

    cuda blas tests fail

    # nvidia-smi -L
    GPU 0: GeForce GTX 1050 Ti (UUID: GPU-2df526e1-845f-4e39-77d7-fc2f8ce4e459)
    

    yields a few other test errors

    # RUST_BACKTRACE=full cargo t -- --test-threads=1
    test cuda_f32::it_computes_correct_dot ... FAILED
    test cuda_f32::it_computes_correct_gemm ... FAILED
    test cuda_f32::it_computes_correct_nrm2 ... error: test failed, to rerun pass '-p coaster-blas --test blas_specs'
    
    Caused by:
      process didn't exit successfully: `/tmp/juice/target/debug/deps/blas_specs-6f352c52b7827de8 --test-threads=1` (signal: 11, SIGSEGV: invalid memory reference)
    
    bug 
    opened by drahnr 10
  • Juice fails to build with Native on Mac

    Juice fails to build with Native on Mac

    Error Description

    describe which command you ran

    Using compiled version of Juice (Commit 4dbf539 (21-Aug-17)) with

    cargo build --features=native --no-default-features Built successfully.

    Attempted to build a default test Rust program using Juice as a dependency in the TOML, with juice = {path = "../../BitBucket/juice/"} Which directs to the BitBucket version of Juice.

    This seems related to openblas vs blas, as mentioned in Environment/Native Related Issues.

    Program is:

    extern crate juice;
    
    fn main() {
    	println!("hello world");
    }
    

    TOML is:

    (...)
    [dependencies]
    nn = "0.1.6"
    coaster = "0.1.0"
    coaster-nn = "0.4.0"
    juice = {path =  "../../BitBucket/juice/"}
    
    [features]
    default = ["native"]
    native  = ["juice/native"]
    

    What should have happened

    Successful build, with warning of unused crate.

    What happened

    error: linking with `cc` failed: exit code: 1
      |
      = note: "cc" "-m64" "-L" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/deep_learning-2179b3ff6a25a3b2.0.o" "-o" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/deep_learning-2179b3ff6a25a3b2" "-Wl,-dead_strip" "-nodefaultlibs" "-L" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps" "-L" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libjuice-76a0d0d4778ee247.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libcoaster_blas-e48d12b535504280.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libcapnp-cea9b1e207536b0f.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libbyteorder-4b33a51270316e1c.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libcoaster_nn-34b634248642aaf2.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libtimeit-88ca41b63903fa24.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libtime-b42059b58d782f84.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/liblog-653d9a3a0b7e9d0b.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libcoaster-84e7e6b8b2bcc1c3.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libbyteorder-7ac464879d42bb20.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libenum_primitive-8a3da1a6ee21c137.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libbitflags-e23c19204c484d23.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/liblazy_static-35b44458f059304c.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/librblas-b3994b8d1991b435.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libnum-9324c52ca75791ea.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libnum_rational-139c9a80f9301bf4.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libnum_bigint-8814a701f9d040e1.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/librand-0668ab5ce5d1cfb3.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libnum_complex-97d44be024c0a5d9.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/librustc_serialize-a7771718d4ee73a5.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libnum_iter-3ba3b370d4563109.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libnum_integer-82c2fec7ed3ae431.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libnum_traits-b6a66e4d76196aca.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/liblibc-750342d372c7156a.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libstd-438eba4cd7d88a45.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libpanic_unwind-00160610bfa2c7b4.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libunwind-88eece318c5ccb15.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librand-646fe8114e6965a2.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcollections-7d6da376f6405c93.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liballoc-ab03bba0be78edaa.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liballoc_jemalloc-3d46a711e5badb84.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liblibc-31c7158cd96c571c.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libstd_unicode-a732f07ce6fa7392.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcore-ee2a935baf6741f5.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcompiler_builtins-53f5ee584666574a.rlib" "-l" "openblas" "-l" "System" "-l" "resolv" "-l" "pthread" "-l" "c" "-l" "m"
      = note: ld: library not found for -lopenblas
              clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    Also tried using the default version of Juice with juice = { version = "0.2.2", default-features = false } in the TOML, which results in a separate failure to build with a warning about the CUDA library, as follows:

    error: linking with `cc` failed: exit code: 1
      |
      = note: "cc" "-m64" "-L" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/deep_learning-2179b3ff6a25a3b2.0.o" "-o" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/deep_learning-2179b3ff6a25a3b2" "-Wl,-dead_strip" "-nodefaultlibs" "-L" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps" "-L" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libjuice-1bc8b54a3308a0b6.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libcoaster_blas-f0128de324e54c02.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libcapnp-cea9b1e207536b0f.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libbyteorder-4b33a51270316e1c.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libcoaster_nn-03d5f8a863bd35c1.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libtimeit-88ca41b63903fa24.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libtime-b42059b58d782f84.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/liblog-653d9a3a0b7e9d0b.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libcoaster-fbdf93f1b7e0c6c1.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libbyteorder-7ac464879d42bb20.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libenum_primitive-8a3da1a6ee21c137.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libbitflags-e23c19204c484d23.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/liblazy_static-35b44458f059304c.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/librblas-55b5430647968442.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libnum-9324c52ca75791ea.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libnum_rational-139c9a80f9301bf4.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libnum_bigint-8814a701f9d040e1.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/librand-0668ab5ce5d1cfb3.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libnum_complex-97d44be024c0a5d9.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/librustc_serialize-a7771718d4ee73a5.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libnum_iter-3ba3b370d4563109.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libnum_integer-82c2fec7ed3ae431.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/libnum_traits-b6a66e4d76196aca.rlib" "/Users/lissa.hyacinth/Rust/DeepLearning/target/debug/deps/liblibc-750342d372c7156a.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libstd-438eba4cd7d88a45.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libpanic_unwind-00160610bfa2c7b4.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libunwind-88eece318c5ccb15.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librand-646fe8114e6965a2.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcollections-7d6da376f6405c93.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liballoc-ab03bba0be78edaa.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liballoc_jemalloc-3d46a711e5badb84.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liblibc-31c7158cd96c571c.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libstd_unicode-a732f07ce6fa7392.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcore-ee2a935baf6741f5.rlib" "/Users/lissa.hyacinth/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcompiler_builtins-53f5ee584666574a.rlib" "-framework" "OpenCL" "-l" "cuda" "-l" "blas" "-l" "System" "-l" "resolv" "-l" "pthread" "-l" "c" "-l" "m"
      = note: ld: library not found for -lcuda
              clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    CUDA is not installed, as local machine only supports native and openCL, so the error is expected, but Native should force use of native packages and not use the cuda library.

    Describe in which context it happened

    custom app, demo compilation, test run

    Test run.

    Environment

    OS:

    uname -a Darwin C02T5172GVC8.local 16.6.0 Darwin Kernel Version 16.6.0: Fri Apr 14 16:21:16 PDT 2017; root:xnu-3789.60.24~6/RELEASE_X86_64 x86_64

    Mac OS Sierra 10.12.5

    Native related issues:

    pkg-config --libs --cflags blas

    Package blas was not found in the pkg-config search path.
    Perhaps you should add the directory containing `blas.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'blas' found
    

    This seems related to the issue - I've already run export PKG_CONFIG_PATH=/usr/local/opt/openblas/lib/pkgconfig But openblas only has openblas.pc at that location, and won't have blas.pc.

    And using openblas in the command returns: pkg-config --libs --cflags openblas -I/usr/local/Cellar/openblas/0.2.20/include -L/usr/local/Cellar/openblas/0.2.20/lib -lopenblas

    OpenCL related issues:

    clinfo clinfo.txt

    bug 
    opened by lissahyacinth 10
  • Merge crates repos into workspace

    Merge crates repos into workspace

    This PR merges the history of those crates into a single repository using a cargo workspace:

    • juice (current crate)
    • coaster
    • coaster-blas
    • coaster-nn

    Here are the steps done for a single import (coaster-blas):

    git remote add github-coaster-blas https://github.com/spearow/coaster-blas.git
    git fetch github-coaster-blas
    git checkout github-coaster-blas/master
    git checkout -b github-coaster-blas-master
    for f in *; do git mv ${f} coaster-blas/; done
    git mv .clog.toml coaster-blas/
    git mv .gitignore coaster-blas/
    git mv .github coaster-blas/
    git commit -m "Move _all_ of coaster-blas to a subdirectory"
    git checkout merge-crates-repos-into-workspace
    git merge --no-ff --allow-unrelated-histories github-coaster-blas-master
    

    Note that it completely imports the history of the different repositories.

    TODO:

    • [x] Merge the .gitignores
    • [x] Merge the .githubs
    • [ ] Merge the .clog.tomls
    • [x] Merge the rustfmt.tomls
    • [x] Move / Copy licenses to top level
    • [x] Move / Copy README to top level
    • [ ] Make sure tests pass (I have trouble linking without cuda, see issue #38)
    • [ ] Verify tags of imported crates; they probably need to be re-created?
    • [ ] Fix CI runs

    Closes #39.

    opened by nbigaouette 9
  • Use a workspace for all projects

    Use a workspace for all projects

    Development currently is a chore having to do lots and lots of crate overwrites manually.

    The workspace feature of the cargo manifest could help mitigate this: https://doc.rust-lang.org/cargo/reference/manifest.html#the-workspace-section

    opened by drahnr 9
  • juice does not compile on recent OS X

    juice does not compile on recent OS X

    macOS High Sierra version 10.3.6

    Ran cargo build --release in juice-examples dir as per instructions. Last few lines of error look like

              ld: library not found for -lcudnn
              clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    I thought that juice could compile and run without a GPU; is that wrong?

    opened by bpr 8
  • Unhelpful panic message on (presumably?) invalid inputs to `forward`

    Unhelpful panic message on (presumably?) invalid inputs to `forward`

    I'm a beginner to Juice who is still trying to figure out basic usage, and not finding the book or juice-examples very revelatory. To try to figure things out by experiment, I wrote this (presumably invalid) code:

    let backend = Rc::new(juice::util::native_backend());
    let linear_1: LayerConfig = LayerConfig::new("linear1", LinearConfig { output_size: 30 });
    let mut linear_network_with_one_layer = Layer::from_config(backend, &linear_1);
    let input = SharedTensor::<f32>::new(&[1, 1, 50]);
    let input_lock = Arc::new(RwLock::new(input));
    linear_network_with_one_layer.forward(&[input_lock]);
    

    I was expecting to get an error message like "Error: expected input of size $foo but got input of size $bar". Instead, I got this panic message, which gives me very little help in figuring out what the error is.

    As a beginner to Juice, I'm not certain whether this qualifies as a "bug in Juice", but the API docs do not suggest that Layer::forward is supposed to be able to panic.

    thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 0', /n/HOME/.cargo/registry/src/github.com-1ecc6299db9ec823/juice-0.3.0/src/layer.rs:535:34
    stack backtrace:
       0: rust_begin_unwind
                 at /rustc/b7bc90fea3b441234a84b49fdafeb75815eebbab/library/std/src/panicking.rs:575:5
       1: core::panicking::panic_fmt
                 at /rustc/b7bc90fea3b441234a84b49fdafeb75815eebbab/library/core/src/panicking.rs:65:14
       2: core::panicking::panic_bounds_check
                 at /rustc/b7bc90fea3b441234a84b49fdafeb75815eebbab/library/core/src/panicking.rs:150:5
       3: <usize as core::slice::index::SliceIndex<[T]>>::index
                 at /rustc/b7bc90fea3b441234a84b49fdafeb75815eebbab/library/core/src/slice/index.rs:259:10
       4: core::slice::index::<impl core::ops::index::Index<I> for [T]>::index
                 at /rustc/b7bc90fea3b441234a84b49fdafeb75815eebbab/library/core/src/slice/index.rs:18:9
       5: <alloc::vec::Vec<T,A> as core::ops::index::Index<I>>::index
                 at /rustc/b7bc90fea3b441234a84b49fdafeb75815eebbab/library/alloc/src/vec/mod.rs:2736:9
       6: juice::layer::Layer<B>::forward
                 at /n/HOME/.cargo/registry/src/github.com-1ecc6299db9ec823/juice-0.3.0/src/layer.rs:535:34
    
    bug 
    opened by elidupree 0
  • The Juice book is out of date

    The Juice book is out of date

    In this page, the following code

    let linear_1: LayerConfig = LayerConfig::new("linear1", LinearConfig { output_size: 500 })
    let linear_network_with_one_layer: Layer = Layer::from_config(backend, &linear_1);
    

    does not compile on the current version of Juice (0.3.0), both because of the missing semicolon and because Layer now has a generic parameter.

    I would guess that there are other discrepancies, but I can't comment on the code in the later chapters because I haven't yet figured out basic usage of Juice (I wouldn't expect to be able to get the later code to compile without first figuring out a bunch of things that the book does not explain to me, whether it's correct or not).

    bug 
    opened by elidupree 0
  • Unclear how to correctly compute dot product

    Unclear how to correctly compute dot product

    I am very new to Rust in general and to the juice/coaster crates in particular. Undoubtedly the following issue is due to my poor understanding, which is why I am not marking this as a bug.

    Leaning heavily on the usage example provided here, I am trying to compute the dot product of two tensors (a 2x2 matrix and a 2x1 vector to be precise).

    This is my output:

    Data:
    x = [1.0, 2.0]
    w = [[1.0, 1.0],
         [3.0, -1.0]]
    Expected result:
    w*x = [3.0, 1.0]
    Actual result:
    w*x = [3.0, 0.0]
    

    Here is the code:

    use coaster::backend::Backend;
    use coaster::IFramework;
    use coaster::frameworks::cuda::{Cuda, get_cuda_backend};
    use coaster::frameworks::native::{Cpu, Native};
    use coaster::frameworks::native::flatbox::FlatBox;
    use coaster::tensor::SharedTensor;
    use coaster_blas::plugin::Dot;
    
    
    fn write_to_memory<T: Copy>(mem: &mut FlatBox, data: &[T]) {
        let mem_buffer: &mut[T] = mem.as_mut_slice::<T>();
        for (index, datum) in data.iter().enumerate() {
            mem_buffer[index] = *datum;
        }
    }
    
    
    pub fn main() {
        let backend: Backend<Cuda> = get_cuda_backend();
        let native: Native = Native::new();
        let cpu: Cpu = native.new_device(native.hardwares()).unwrap();
    
        let mut x: SharedTensor<f32> = SharedTensor::<f32>::new(&(2, 1));
        let mut w: SharedTensor<f32> = SharedTensor::<f32>::new(&(2, 2));
        let mut wx: SharedTensor<f32> = SharedTensor::<f32>::new(&(2, 1));
    
        let x_values: &Vec<f32> = &vec![1f32, 2.0];
        let w_values: &Vec<f32> = &vec![1f32,  1.0,
                                         3.0, -1.0];
    
        println!("Data:");
        println!("x = {:?}", x_values);
        println!("w = [{:?},\n     {:?}]", &w_values[..2], &w_values[2..]);
        println!("Expected result:");
        println!("w*x = [3.0, 1.0]");
    
        write_to_memory(x.write_only(&cpu).unwrap(), x_values);
        write_to_memory(w.write_only(&cpu).unwrap(), w_values);
    
        backend.dot(&w, &x, &mut wx).unwrap();
        println!("Actual result:");
        println!("w*x = {:?}", wx.read(&cpu).unwrap().as_slice::<f32>());
    }
    

    What am I doing wrong?

    question documentation 
    opened by daniil-berg 1
  • New layer architecture

    New layer architecture

    New layer architecture prototype

    • 🧭 Architecture

    Relates to #155 .

    Changes proposed by this PR:

    1. Static network graph is separated from invocation context. a) Static graph captures layers, connections between them and shapes of the units of data. b) Invocation context specifies the batch size and stores all data associated with an invocation (data, gradients).
    2. Batch size is now explicit in the context instead of being implicitly extracted by layers from incoming data.
    3. Separation into Layer and ILayer is now gone, everything is now handled in layer implementations (with "leaf" layers focusing on data manipulations while container layers focusing on network composition).

    Notes to reviewer:

    This is still a very early prototype not intended for merging:

    1. Solver architecture not changed and just crudely hacked to support new network architecture.
    2. Shared weights not supported.
    3. Serialization not supported.
    4. Mnist example compiles and runs but doesn't converge (there is a bug somewhere, i'm sure).

    A good order for exploring this PR is starting at comments in net/mod.rs, net/layer.rs, net/descriptor.rs and net/context.rs.

    opened by hweom 16
  • Juice for Deep Reinforcement Learning

    Juice for Deep Reinforcement Learning

    Hello,

    I'm investigating a potential use of Juice framework for deep reinforcement learning (I'm also learning the RL and deep learning as I go, so apologies for potentially newbie questions). RL requires simultaneous learning and using the net for predictions. I've found several issues which I'm not sure are design decisions or implementation shortcuts:

    1. It looks like if I configure the net for minibatch training, I can't then use it to make predictions on just one input. I get this exception when I try to.
    2. Solver has a network() method, comment for which says that "This is the recommended method to get a usable trained network." However, you can't call forward() on it, since it requires a mut ref.

    I can probably work around 1 (like artificially creating a batch by replicating a single input vector) and 2 (by using mut_network()), but it doesn't look right.

    Is this something that can (should?) be fixed in the implementation? I'm happy to provide PRs (but will likely require technical guidance).

    Thank you!

    question documentation 
    opened by hweom 17
A Rust machine learning framework.

Linfa linfa (Italian) / sap (English): The vital circulating fluid of a plant. linfa aims to provide a comprehensive toolkit to build Machine Learning

Rust-ML 2.2k Jan 2, 2023
Machine Learning library for Rust

rusty-machine This library is no longer actively maintained. The crate is currently on version 0.5.4. Read the API Documentation to learn more. And he

James Lucas 1.2k Dec 31, 2022
Machine learning crate for Rust

rustlearn A machine learning package for Rust. For full usage details, see the API documentation. Introduction This crate contains reasonably effectiv

Maciej Kula 547 Dec 28, 2022
Xaynet represents an agnostic Federated Machine Learning framework to build privacy-preserving AI applications.

xaynet Xaynet: Train on the Edge with Federated Learning Want a framework that supports federated learning on the edge, in desktop browsers, integrate

XayNet 196 Dec 22, 2022
Machine learning in Rust.

Rustml Rustml is a library for doing machine learning in Rust. The documentation of the project with a descprition of the modules can be found here. F

null 60 Dec 15, 2022
Rust based Cross-GPU Machine Learning

HAL : Hyper Adaptive Learning Rust based Cross-GPU Machine Learning. Why Rust? This project is for those that miss strongly typed compiled languages.

Jason Ramapuram 83 Dec 20, 2022
Machine Learning Library for Rust

autograph Machine Learning Library for Rust undergoing maintenance Features Portable accelerated compute Run SPIR-V shaders on GPU's that support Vulk

null 223 Jan 1, 2023
Fwumious Wabbit, fast on-line machine learning toolkit written in Rust

Fwumious Wabbit is a very fast machine learning tool built with Rust inspired by and partially compatible with Vowpal Wabbit (much love! read more abo

Outbrain 115 Dec 9, 2022
Tangram is an automated machine learning framework designed for programmers.

Tangram Tangram is an automated machine learning framework designed for programmers. Run tangram train to train a model from a CSV file on the command

Tangram 1.4k Dec 30, 2022
A Machine Learning Framework for High Performance written in Rust

polarlight polarlight is a machine learning framework for high performance written in Rust. Key Features TBA Quick Start TBA How To Contribute Contrib

Chris Ohk 25 Aug 23, 2022
Example of Rust API for Machine Learning

rust-machine-learning-api-example Example of Rust API for Machine Learning API example that uses resnet224 to infer images received in base64 and retu

vaaaaanquish 16 Oct 3, 2022
convolutions-rs is a crate that provides a fast, well-tested convolutions library for machine learning

convolutions-rs convolutions-rs is a crate that provides a fast, well-tested convolutions library for machine learning written entirely in Rust with m

null 10 Jun 28, 2022
High-level non-blocking Deno bindings to the rust-bert machine learning crate.

bertml High-level non-blocking Deno bindings to the rust-bert machine learning crate. Guide Introduction The ModelManager class manages the FFI bindin

Carter Snook 14 Dec 15, 2022
Machine learning Neural Network in Rust

vinyana vinyana - stands for mind in pali language. Goal To implement a simple Neural Network Library in order to understand the maths behind it. This

Alexandru Olaru 3 Dec 26, 2022
[WIP] An experimental Java-like language and it's virtual machine, for learning Java and JVM.

Sky VM An experimental Java-like language and it's virtual machine, for learning Java and JVM. Dependencies Rust (rust-lang/rust) 2021 Edition, dual-l

Kk Shinkai 2 Jan 3, 2022
Tangram - makes it easy for programmers to train, deploy, and monitor machine learning models.

Tangram is the all-in-one machine learning toolkit for programmers. Train a model from a CSV file on the command line. Make predictions from Elixir, G

Tangram 1.3k May 3, 2022
Source Code for 'Practical Machine Learning with Rust' by Joydeep Bhattacharjee

Apress Source Code This repository accompanies Practical Machine Learning with Rust by Joydeep Bhattacharjee (Apress, 2020). Download the files as a z

Apress 57 Dec 7, 2022
An example of using TensorFlow rust bindings to serve trained machine learning models via Actix Web

Serving TensorFlow with Actix-Web This repository gives an example of training a machine learning model using TensorFlow2.0 Keras in python, exporting

Kyle Kosic 39 Dec 12, 2022
🏆 A ranked list of awesome machine learning Rust libraries.

best-of-ml-rust ?? A ranked list of awesome machine learning Rust libraries. This curated list contains 180 awesome open-source projects with a total

₸ornike 110 Dec 28, 2022