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

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

詳細はこちら
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

1回答

4811閲覧

ARM_NEONのCompile設定が分からない。

Gammodler

総合スコア9

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2019/10/30 10:10

編集2019/10/30 11:14

ARM_NEONのCompile設定が分からない。

Petalinux-2016.2、CentOS7です。
HardWare:Microzed
CPUはarm7-cortex9
です。

ARM_NEONを活用しようとしてさっそくつかまりました。
PetalinuxというToolChainはNEONをカバーしてくれていないようです。

Compile対象のmyproc.cが存在するDirectoryにPetalinux内にあった
arm_neon.hというfileをcopyしました。

myproc.cの冒頭に

#include "arm_neon.h"

を挿入したところ次のErrorがでました:

[ALL ] In file included from myproc.c:30:0:
[ALL ] arm_neon.h:31:2: error: #error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h
[ALL ] #error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h

確かに
arm_neon.h
の30行目は以下のようになっています:

#ifndef _GCC_ARM_NEON_H #define _GCC_ARM_NEON_H 1 #ifndef __ARM_NEON__ ←30行目 #error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h #else>

環境変数__ARM_NEON__が存在しないErrorです。
前もって環境変数の準備が必要なようです。

ToolChainを提供するXilinx社も,以下のように記述しています:
”GCC で NEON イン ト リ ンシクスを コ ンパイルする”

自動ベクトル化を設定して C コードをコンパイルする複雑なオプションとは異なり、NEON 命令のコンパイルは非常に単純で、2、3 のコンパイラ オプションしか必要ありません。
・ -On (デフォルト)。最適化レベルを設定します。
・ -mcpu=cortex-a9。 Zynq-7000 AP SoC のプロセッサ タイプを cortex-a9 に設定します。
• -mfpu=neon。コンパイラに対して、Zynq-7000 AP SoC の NEON 命令を生成するように指示しま
す。

https://japan.xilinx.com/support/documentation/application_notes/j_xapp1206-boost-sw-performance-zynq7soc-w-neon.pdf

この簡単と思われる環境設定が、質問者の能力では解決に数日かかりそうです。

幼稚な質問で申し訳ありませんが、設定方をお示しいただけると助かります。

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

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

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

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

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

dodox86

2019/10/30 10:29

コードは```でくくってください。特に、#includeのように'#'が行頭にあると「見出し」になってしまい、強力に読みづらくなってしまいます。過去質問がいくつもあるので、初めてではないとお見受けします
Gammodler

2019/10/30 10:39

dodox86様 いつもお世話になっております。 済みませんでした。 Source部分は引用程度とうっかり考えてしまいました。 これで改善したか自信はないのですが。 ARM_NEONのCompile設定が分からない。 Petalinux-2016.2、CentOS7です。 HardWare:Microzed CPUはarm7-cortex9 です。 ARM_NEONを活用しようとしてさっそくつかまりました。 PetalinuxというToolChainはNEONをカバーしてくれていないようです。 Compile対象のmyproc.cが存在するDirectoryにPetalinux内にあった arm_neon.hというfileをcopyしました。 myproc.cの冒頭に #include "arm_neon.h" を挿入したところ次のErrorがでました: '''''''''''''''' [ALL ] In file included from myproc.c:30:0: [ALL ] arm_neon.h:31:2: error: #error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h [ALL ] #error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h '''''''''''''''''''''''''''''''''''''' 確かに arm_neon.h の30行目は以下のようになっています: '''''''''''''''''''''''''''''''' #ifndef _GCC_ARM_NEON_H #define _GCC_ARM_NEON_H 1 #ifndef __ARM_NEON__ ←30行目 #error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h #else '''''''''''''''''''''''''''''''''' 環境変数__ARM_NEON__が存在しないErrorです。 前もって環境変数の準備が必要なようです。 ToolChainを提供するXilinx社も GCC で NEON イン ト リ ンシクスを コ ンパイルする: 自動ベクトル化を設定して C コードをコンパイルする複雑なオプションとは異なり、NEON 命令のコンパイルは非常に単純で、2、3 のコンパイラ オプションしか必要ありません。 ''''''''''''''''''''''''''''''''''''''''''' ・ -On (デフォルト)。最適化レベルを設定します。 ・ -mcpu=cortex-a9。 Zynq-7000 AP SoC のプロセッサ タイプを cortex-a9 に設定します。 ・ -mfpu=neon。コンパイラに対して、Zynq-7000 AP SoC の NEON 命令を生成するように指示しま す。 ''''''''''''''''''''''''''''''''''''''''''''' https://japan.xilinx.com/support/documentation/application_notes/j_xapp1206-boost-sw-performance-zynq7soc-w-neon.pdf この簡単と思われる環境設定が、質問者の能力では解決に数日かかりそうです。 幼稚な質問で申し訳ありませんが、設定方をお示しいただけると助かります。
dodox86

2019/10/30 10:56

いえ、このコメント部分ではなく、質問部分を編集してください。
Gammodler

2019/10/30 12:48

次回から実行します。済みません。
guest

回答1

0

-mfloat-abi=softfp -mfpu=neon

のオプションをつけてビルドすればいいのでは

投稿2019/10/30 11:36

y_waiwai

総合スコア88038

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

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

Gammodler

2019/10/30 11:56

y_waiwai様 回答ありがとうございます。 質問者のジレンマはmyproc.cの冒頭に#include "arm_neon.h"を記述してCompileしただけでErrorが出てしまうことにあります。 Compile commandはpetalinuxでは petalinux-build -c rootfs/myproc で指令します。 この中身に含まれているはずのgccを抜き出してオプションをつければいいわけですね。ちょっとやってみます。
Gammodler

2019/10/30 12:47

y_waiwai様 tool petalinux-buildは当然ながらBinary,他にーconfig、-createなどがあります。あてずっぽうながら gcc -mfloat-abi=softfp -mfpu=neon -c myproc.c としたところ gcc: eroor: unrecognized command option '-mfloat-abi=softfp' gcc: eroor: unrecognized command option '-mfpu=neon' となりました。見当違いなようです。
y_waiwai

2019/10/30 13:23

そのリンク先にはGCCにそのオプションつけてどーこーという記述ありますね そのGCCはARMのヤツなんでしょうか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問