Problem
First, i install openblas and lapack by brew
brew install openblas
brew install lapack
when i use openblas-src with features ["cblas", "system"], i set RUSTFLAGS in project/.cargo/config.toml
case 1
- set env in ~/.bash_profile
export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/opt/openblas/lib"
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/opt/openblas/lib"
export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/opt/lapack/lib"
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/opt/lapack/lib"
run cargo test
i get error of libBLAS (with env of library openblas)
dyld: Library not loaded: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
Referenced from: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
Reason: Incompatible library version: vecLib requires version 1.0.0 or later, but libBLAS.dylib provides version 0.0.0
or error of libvDSP (with env of library of lapack)
dyld: Symbol not found: _cblas_dgemm
Referenced from: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
Expected in: /usr/local/opt/lapack/lib/libBLAS.dylib
in /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
case 2
- comment out env of both
openblas and lapack in ~/.bash_profile
# export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/opt/openblas/lib"
# export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/opt/openblas/lib"
# export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/opt/lapack/lib"
# export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/opt/lapack/lib"
run cargo test
i got error compile error
= note: ld: warning: directory not found for option '-L /usr/local/opt/openblas/lib'
ld: warning: directory not found for option '-L /usr/local/opt/lapack/lib'
ld: library not found for -llapacke
clang: error: linker command failed with exit code 1 (use -v to see invocation)
warning: preprocessing_contrib (lib test) generated 6 warnings (6 duplicates)
error: could not compile preprocessing_contrib due to previous error; 6 warnings emitted
Caused by:
process didn't exit successfully: rustc --crate-name preprocessing_contrib --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C split-debuginfo=unpacked -C debuginfo=2 --test -C metadata=afa4a0be7d6ff698 -C extra-filename=-afa4a0be7d6ff698 --out-dir /Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps -C incremental=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/incremental -L dependency=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps --extern blas_src=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/libblas_src-9d74ad231a46e048.rlib --extern linfa=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/liblinfa-cb3ffd43d6b8eaa2.rlib --extern linfa_preprocessing=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/liblinfa_preprocessing-0a776c26ed2cfa7f.rlib --extern ndarray=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/libndarray-556145df8dd460d1.rlib --extern openblas_src=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/libopenblas_src-fc8092715b5adcea.rlib '-L /usr/local/opt/openblas/lib' '-L /usr/local/opt/lapack/lib' -L /usr/local/opt/openblas/lib (exit status: 1)
case 3
- clear
RUSTFLAGS in project/.cargo/config.toml
run cargo test
i got compile error
= note: ld: library not found for -llapacke
clang: error: linker command failed with exit code 1 (use -v to see invocation)
warning: preprocessing_contrib (lib test) generated 6 warnings (6 duplicates)
error: could not compile preprocessing_contrib due to previous error; 6 warnings emitted
Caused by:
process didn't exit successfully: `rustc --crate-name preprocessing_contrib --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C split-debuginfo=unpacked -C debuginfo=2 --test -C metadata=afa4a0be7d6ff698 -C extra-filename=-afa4a0be7d6ff698 --out-dir /Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps -C incremental=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/incremental -L dependency=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps --extern blas_src=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/libblas_src-9d74ad231a46e048.rlib --extern linfa=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/liblinfa-cb3ffd43d6b8eaa2.rlib --extern linfa_preprocessing=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/liblinfa_preprocessing-0a776c26ed2cfa7f.rlib --extern ndarray=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/libndarray-556145df8dd460d1.rlib --extern openblas_src=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/libopenblas_src-fc8092715b5adcea.rlib
more information
stable-x86_64-apple-darwin (default)
rustc 1.55.0 (c8dfcfe04 2021-09-06)
cargo 1.55.0 (32da73ab1 2021-08-23)
[target.x86_64-apple-darwin]
rustflags = ["-L /usr/local/opt/openblas/lib", "-L /usr/local/opt/lapack/lib"] # custom flags for `rustc`
project file Cargo.toml
[package]
name = "preprocessing_contrib"
version = "0.1.0"
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
ndarray = { version = "0.14",default-features = false, features = ["blas"] }
ndarray-linalg = { version = "0.13", optional = true }
blas-src = { version = "0.8", features = ["openblas"] }
openblas-src = { version = "0.10", features = ["cblas", "system"] }
linfa = {version = "0.4.0", features = ["openblas-system"]}
linfa-preprocessing = {version = "0.4.0"}
mod encoders{
use linfa::dataset::{AsTargets, DatasetBase, Float, WithLapack, WithoutLapack};
use linfa::traits::Transformer;
use linfa_preprocessing::norm_scaling::NormScaler;
use ndarray::{Array2, ArrayBase, Data, Ix2};
pub struct Binarizer<T>{
threshold: T,
}
impl<T: Float> Binarizer<T> {
fn new(threshold: T) -> Self{
Self{
threshold
}
}
}
impl <T: Float> Default for Binarizer<T> {
fn default() -> Self {
Self{
threshold: T::from_f64(0.0).unwrap()
}
}
}
impl<F: Float> Transformer<Array2<F>, Array2<F>> for Binarizer<F> {
fn transform(&self, x: Array2<F>) -> Array2<F> {
todo!()
}
}
impl<F: Float, D: Data<Elem = F>, T: AsTargets>
Transformer<DatasetBase<ArrayBase<D, Ix2>, T>, DatasetBase<Array2<F>, T>> for Binarizer<F>{
fn transform(&self, x: DatasetBase<ArrayBase<D, Ix2>, T>) -> DatasetBase<Array2<F>, T> {
todo!()
}
}
}
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
}
How can I solve this problem ?
How to use crate openblas-src link system's openblas dynamic library in rust ?
Steps
No response
Possible Solution(s)
No response
Notes
No response
Version
stable-x86_64-apple-darwin (default)
rustc 1.55.0 (c8dfcfe04 2021-09-06)
cargo 1.55.0 (32da73ab1 2021-08-23)
Problem
First, i install
openblasandlapackby brewcase 1
run
cargo testi get
error of libBLAS(with env of library openblas)or
error of libvDSP(with env of library of lapack)case 2
openblasandlapackin ~/.bash_profilerun
cargo testi got error compile error
warning:
preprocessing_contrib(lib test) generated 6 warnings (6 duplicates)error: could not compile
preprocessing_contribdue to previous error; 6 warnings emittedCaused by:
process didn't exit successfully:
rustc --crate-name preprocessing_contrib --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C split-debuginfo=unpacked -C debuginfo=2 --test -C metadata=afa4a0be7d6ff698 -C extra-filename=-afa4a0be7d6ff698 --out-dir /Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps -C incremental=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/incremental -L dependency=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps --extern blas_src=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/libblas_src-9d74ad231a46e048.rlib --extern linfa=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/liblinfa-cb3ffd43d6b8eaa2.rlib --extern linfa_preprocessing=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/liblinfa_preprocessing-0a776c26ed2cfa7f.rlib --extern ndarray=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/libndarray-556145df8dd460d1.rlib --extern openblas_src=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/libopenblas_src-fc8092715b5adcea.rlib '-L /usr/local/opt/openblas/lib' '-L /usr/local/opt/lapack/lib' -L /usr/local/opt/openblas/lib(exit status: 1)case 3
RUSTFLAGSin project/.cargo/config.tomlrun
cargo testi got compile error
warning:
preprocessing_contrib(lib test) generated 6 warnings (6 duplicates)error: could not compile
preprocessing_contribdue to previous error; 6 warnings emittedCaused by:
process didn't exit successfully: `rustc --crate-name preprocessing_contrib --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C split-debuginfo=unpacked -C debuginfo=2 --test -C metadata=afa4a0be7d6ff698 -C extra-filename=-afa4a0be7d6ff698 --out-dir /Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps -C incremental=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/incremental -L dependency=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps --extern blas_src=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/libblas_src-9d74ad231a46e048.rlib --extern linfa=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/liblinfa-cb3ffd43d6b8eaa2.rlib --extern linfa_preprocessing=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/liblinfa_preprocessing-0a776c26ed2cfa7f.rlib --extern ndarray=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/libndarray-556145df8dd460d1.rlib --extern openblas_src=/Users/frankguo/workspace/rust/preprocessing_contrib/target/debug/deps/libopenblas_src-fc8092715b5adcea.rlib
more information
project file Cargo.toml
lib.rsHow can I solve this problem ?
How to use crate
openblas-srclink system'sopenblas dynamic libraryin rust ?Steps
No response
Possible Solution(s)
No response
Notes
No response
Version