Reply To: ubuntuでの起動

HARK FORUM ubuntuでの起動 Reply To: ubuntuでの起動

#697

お問い合わせ頂きありがとうございます。

buffer overrun!!のメッセージですが、マイクアレイ(TAMAGO)の録音データを実時間で処理できずバッファが溢れた事を意味しています。つまり対処方法としては処理を軽くするか演算速度を向上させる必要があります。例として次のような対処が考えられます。

1.定位処理に使用するLocalizeMUSICノードで行う計算は比較的重い処理ですので設定を出来るだけ軽くする(精度とはトレードオフとなります)という解決方法が考えられます。LocalizeMUSICの設定例としては次の通りです。

アルゴリズムをGSVDに変更する。
デメリット:ノイズ相関行列入力が無い場合の影響はSEVD/GEVD/GSVDいずれを使用しても影響はありませんので最も処理が軽いGSVDを選択してください。ノイズ相関行列入力がある場合はGEVDに比べるとGSVDの方が精度は若干悪くなります。

PERIOD(検出周期)を増やす。
デメリット:定位の追従が遅くなります。WINDOWより大きくすると短い定位を取りこぼす可能性があります。

2.公式としてはFAQ(*1)に記載していますようにIntel互換プロセッサ環境をサポート対象としており、パッケージもそのような環境向けに提供しております。
(*1) https://wp.hark.jp/faq/#What_are_the_supported_architectures_by_HARK

一方でラズパイは組み込み向けARMプロセッサを搭載していますので、一般的なPCよりも性能が低いためユーザご自身の手でコンパイラオプションを指定し、各ARMプロセッサに対して明示的に最適化して頂く必要がございます。主要なARM系組み込みボードのCFLAGS/CXXFLAGSの設定例は以下の通りです。OSのビルド設定により適合しない事がありますのでご了承ください。例:-mfloat-abiでhardが使用できない場合、softやsoftfpなどに設定する必要があります。

Raspberry Pi 1 (Broadcom BCM2835) :
-mcpu=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp
または
-march=armv6zk -mtune=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp

Raspberry Pi 2 (Broadcom BCM2836) :
-mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4
または
-march=armv7-a -mtune=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4

Raspberry Pi 3 (Broadcom BCM2837) :
-mcpu=cortex-a53 -mfloat-abi=hard -mfpu=neon-fp-armv8 -mneon-for-64bits
または
-march=armv8-a+crc -mtune=cortex-a53 -mfloat-abi=hard -mfpu=neon-fp-armv8 -mneon-for-64bits
*)OSが32bit環境の場合、最後のオプションは外してください

BeagleBone Black (TI Sitara AM3358/9) : -mcpu=cortex-a8 -mfloat-abi=hard -mfpu=neon
Altera Cyclone V5 (5CSEMA4U23C6N A9) : -mcpu=cortex-a9 -mfloat-abi=hard -mfpu=neon

また、高速化の為に下記のオプションが併用されることがあります。
-fomit-frame-pointer (実行結果に影響はありませんが、有効にするとデバッグがほぼ不可能になります)
-ftree-vectorize

以下のオプションは高速化に寄与しますが、規格通りの結果が保証されなくなるため安全ではありません。使用しない事をお勧めします。
-funsafe-math-optimizations
-ffast-math
-fno-protect-parens
-fstack-arrays

3.ラズパイ等が使用するストレージはSDカードであるため、書き出し速度が遅くボトルネックとなる事があります。ファイルへの書き出し(分離音や定位結果)をされている場合は、tmpfs等のRAMディスク領域に書き出し先を変えると改善する可能性があります。

4.TMAGOを接続しているUSBポートにHub等を接続している場合、Hubを経由せず直接接続すると改善する場合があります。TAMAGOへの電力供給の問題である場合は逆にSelf-poweredのHubを経由する事で改善する事があります。また、複数のUSBポートがある場合は他のUSBポートに挿すと改善する事があります。

5.ラズパイの場合は手元に無いので不明ですが、ARMプロセッサの場合でもIntelのSpeedStepのように省電力機能でプロセッサに制限が掛かっている場合があります。低いクロックからの復帰が遅いプロセッサの場合、クロックを固定する事で改善する事があります。

上記の対策を一通り試みた上で改善できない場合には残念ながら性能不足の可能性が御座います。

以上、宜しくお願い致します。