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

时间:2016-05-04 00:13:49

标签: build arm raspberry-pi tbb raspberry-pi3

所以我正在尝试编译英特尔的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移植到ARM-53上以用于新的Raspberry Pi。

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

谢谢

2 个答案:

答案 0 :(得分:3)

如果您想为TBB做出贡献(例如将其移植到其他架构中),您可以转到"submit contribution"上的open source site页面并发送补丁。

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

  • 如果ARMv8和ARMv7非常相似,您可以尝试扩展gcc_arm7.h中第30行的检查以使用ARMv8;
  • 如果ARMv8和ARMv7完全不同,您可以创建gcc_arm8.h(或支持v7和v8的gcc_arm)并改进第246-248行附近的tbb_machine.h中的逻辑;
  • 理论上,如果ARMv8上的gcc支持内置原子,则可以在ARMv8上使用gcc_generic.h(参见tbb_machine.h:249)

看起来您不需要改进make文件,但我建议运行make test以确保修改后的TBB在您的系统上正常运行。

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

答案 1 :(得分:0)

最新更新于2018年8月,

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

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

享受;)