🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Rust

Rustは、MoFoが支援するプログラミング言語。高速性を維持しつつも、メモリ管理を安全に行うことが可能な言語です。同じコンパイル言語であるC言語やC++では困難だったマルチスレッドを実装しやすく、並行性という点においても優れています。

Q&A

解決済

2回答

1489閲覧

rust-ndarrayをM1macbookでbuildできない

BoKuToTuZenU

総合スコア51

Rust

Rustは、MoFoが支援するプログラミング言語。高速性を維持しつつも、メモリ管理を安全に行うことが可能な言語です。同じコンパイル言語であるC言語やC++では困難だったマルチスレッドを実装しやすく、並行性という点においても優れています。

0グッド

0クリップ

投稿2021/01/08 11:01

前提・実現したいこと

rustのarm64用配布され始めたので、rustをarm64の方に変更して使用していました。
intel用では動作していたものが動かなくなったので、質問いたします。

発生している問題・エラーメッセージ

error: failed to run custom build command for `openblas-src v0.9.0` Caused by: process didn't exit successfully: `/Users/~~/Code/rust_machine_learn/target/debug/build/openblas-src-27bd595c66c91fee/build-script-build` (exit code: 101) --- stdout Running: `"make" "libs" "netlib" "shared" "BINARY=64" "YES_CBLAS=1" "YES_LAPACKE=1" "-j8"` --- stderr Makefile:139: *** OpenBLAS: Detecting CPU failed. Please set TARGET explicitly, e.g. make TARGET=your_cpu_target. Please read README for the detail.. Stop. thread 'main' panicked at 'Failed: `"make" "libs" "netlib" "shared" "BINARY=64" "YES_CBLAS=1" "YES_LAPACKE=1" "-j8"` (exit code: 2)', /Users/~~/.cargo/registry/src/github.com-1ecc6299db9ec823/openblas-src-0.9.0/build.rs:72:17 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

このようなエラーメッセージを受け取りました。

該当のソースコード

Cargo.toml

1[dependencies] 2ndarray = "0.13.0" 3ndarray-rand = "0.12.0" 4ndarray-linalg = { version = "0.12.1", features = ["openblas"] } 5num-traits = "0.2.14" 6approx = "0.3.0"

試したこと

openBLASをarm64用の物をインストールいたしましたが同じようなエラーを受け取りました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

少なくとも ndarray-linalg は現在 x86_64 以外のプラットフォームをサポート出来ていません
aarch64-unknown-linux-gnu support #199

投稿2021/01/09 05:21

termoshtt

総合スコア136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

error: failed to run custom build command for `openblas-src v0.9.0` ... Makefile:139: *** OpenBLAS: Detecting CPU failed. Please set TARGET explicitly, e.g. make TARGET=your_cpu_target. Please read README for the detail.. Stop.

openblas-src v0.9.0が使用しているOpenBLASのソースコードが古いのが原因かもしれません。 https://github.com/blas-lapack-rs/openblas-src/tree/0.9.0 を見た感じでは、2019年8月にリリースされたOpenBLAS v0.3.7のソースコードを使用しているようです。

そのバージョンのOpenBLASの対応CPUリストでは、ARM64のサポートがexperimentalになっています。

一方、最新(v0.3.13)のOpenBLASでは、ARM64系の「Apple Vortex」がまだ仮とはいえ、サポートされています(preliminary support based on ARMV8)

私はよく知らないのですが、VortexはiPadで使用されているA14チップのマイクロアーキテクチャーのようです。これに対応しているならM1チップでも動くのかなと思います。

OpenBLASのリリースページを見ると、v0.3.11からApple Vortexの仮サポートが入ったようです。ですからopenblas-srcがそれ以降のバージョンのOpenBLASを使うようにアップデートされないと、M1 MacのApple siliconネイティブでコンパイルするのは難しそうに思えます。

openBLASをarm64用の物をインストールいたしましたが同じようなエラーを受け取りました。

ndarray-linalgやopenblas-srcのドキュメントを見てみましたが、残念ながらインストール済みのOpenBLASを使うようなオプションは見当たりませんでした。(もしかしたらOpenBLASのAPIをRustでwrapするために、特定のバージョンのOpenBLASが必要なのかもしれません)

投稿2021/01/08 12:29

編集2021/01/08 12:32
tatsuya6502

総合スコア2046

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問