Raspberry Pi 3 的 TBB 英特尔线程构建模块

TBB Intel Threading Building Blocks for Raspberry Pi 3

所以我正在尝试编译英特尔的 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?

谢谢

如果您想为 TBB 做出贡献(例如将其移植到其他架构),您可以前往 "submit contribution" page on the open source site 并发送您的补丁。

要在 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 在您的系统上正常工作。

[更新] 自 2018 U5.

版本以来,TBB 已移植到 ARMv8

2018 年 8 月最新更新,

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

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

尽情享受 ;)