4

所以我正在尝试编译英特尔的 TBB C++ 库,它可以在程序中实现并行性。我特别需要这个来使用 C++ React,它是一个为我正在做的项目提供反应库(例如异步循环)的库。

我已经想出了如何为 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 移植到新的 Raspberry Pi 的 ARM-53 上。

一个简单的解决方案,例如在 gcc_arm7.h 中替换 _ARM_ARCH_7A_ 会很好,但是人们如何为其他架构移植 TBB?

谢谢

4

2 回答 2

3

如果您想为 TBB 做出贡献(例如,将其移植到其他架构中),您可以转到开源站点上的“提交贡献”页面并发送您的补丁。

要在 ARMv8 上移植 TBB,您至少有几个选项:

  • 如果 ARMv8 和 ARMv7 非常相似,您可以尝试扩展 gcc_arm7.h 中第 30 行的检查以使用 ARMv8;
  • 如果 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 文件,但我建议您运行make test以确保修改后的 TBB 在您的系统上正常工作。

[更新] TBB 自2018 U5版本起已移植到 ARMv8 。

于 2016-05-04T09:54:43.817 回答
0

2018 年 8 月最新更新,

查看我的 git:https ://github.com/abhiTronix/TBB_Raspberry_pi

Raspberry Pi 的最新二进制文件(2018 - 更新 4)专门用于 Raspberry Pi (.deb) 文件 ,为运行 Raspbian Stretch 的 Raspberry Pi 2/3 Model B/B+ 编译。

享受 ;)

于 2018-08-27T06:01:53.343 回答