2016-05-04 6 views
4

したがって、プログラムで並列処理を可能にするインテルのTBB C++ライブラリーをコンパイルしようとしています。私は特に、C++ Reactを使うためにこれが必要です。これは、私がやっているプロジェクトに反応性ライブラリ(例えば、非同期ループ)を提供するライブラリです。TBBインテル・スレッディング・ビルディング・ブロック(ラズベリー・パイ3)

私はRaspberry Pi 2のためにコンパイルする方法を考え出しました。しかし、私の見てきたガイドは、ARM-7aアーキテクチャ用に更新されただけです。現在

、私は依存関係としてTBBを使用してビルドを作るしようとしたとき、私はこのエラーを取得:

In file included from /home/pi/tbb43_20150611oss/include/tbb/tbb_machine.h:247:0, 
      from /home/pi/tbb43_20150611oss/include/tbb/task.h:25, 
      from /home/pi/tbb43_20150611oss/include/tbb/task_group.h:24, 
      from /home/pi/cpp.react-master/include/react/engine/PulsecountEngine.h:18, 
      from /home/pi/cpp.react-master/src/engine/PulsecountEngine.cpp:7: 
/home/pi/tbb43_20150611oss/include/tbb/machine/gcc_armv7.h:31:2: error: #error compilation requires an ARMv7-a architecture. 
#error compilation requires an ARMv7-a architecture. 

は、私はちょうど私がポートTBBのためにARM-53上で動作することができる方法を知りたいです新しいラズベリーパイ。

gcc_arm7.hの_ARM_ARCH_7A_を置き換えるなどの簡単な解決策はいいですが、他のアーキテクチャのためにTBBを移植するにはどうすればいいですか?

は、あなたが(例えば、いくつかの他のアーキテクチャ用のポート、それに)TBBに貢献したい場合は、あなたがopen source site"submit contribution"ページに移動して、あなたのパッチを送信することができますあなたの

+0

Pi 3はまだ他のすべてと同じARMv6ユーザー空間を実行していませんか? Pi 2のためにうまく構築していれば、3でうまく動作するはずです - ユーザー空間コードの場合、ARMv7と32ビットARMv8の違いはほとんど無視できます。 – Notlikethat

+0

Pi3のコードを移植する方法は? –

答えて

3

ありがとうございます。 ARMv8のポートTBBへ

は、あなたが、少なくともいくつかのオプションがあります。

  • ARMv8およびARMv7は非常に類似している場合、あなたはARMv8で動作するようにgcc_arm7.hでライン30上のチェックを拡張しようとすることができます。
  • ARMv8とARMv7が全く異なる場合は、gcc_arm8.h(またはv7とv8をサポートするgcc_arm)を作成し、tbb_machine.hの246-248行付近のロジックを改善することができます。 ARMv8上のgccがサポートしている場合
  • 理論的には、組み込みのアトミック、あなたがARMv8にgcc_generic.h使用することができます(tbb_machine.h参照:249)

それがどのように見えるファイルを作る改善する必要がないことが、 make testを実行して、変更されたTBBがシステムで正しく動作することを確認することをおすすめします。

+0

私はすでにこれを知っていました。私はARMv7コードとARM53との比較に関する具体的な情報を得ようとしていました(これはARM-v8プロセッサのようなものではありません)。繰り返しますが、ARMv8のgccで組み込みアトミックがサポートされているかどうかは分かりますか?バージョン6.1がリリースされたばかりですが、この情報を調べる方法はわかりません(実際にはgccのマニュアルで見つけることはできません) –

+0

実際に言うと、私はARMアーキテクチャについてほとんど何も知りません。私はARMコミュニティの誰かがこのスレッドに参加することを願っています。だからあなたのアーキテクチャ上でgcc_arm7.hやgcc_generic.hを試してみることをお勧めします。正常にコンパイルされた場合(または問題を修正できる場合)、テストを実行してすべてがOKであることを確認します。 – Alex

関連する問題