2016-05-04 4 views
4

Итак, я пытаюсь скомпилировать библиотеку Intel TBB C++, которая обеспечивает параллелизм в программах. Мне особенно нужно использовать C++ React, которая представляет собой библиотеку, которая предоставляет реактивную библиотеку (например, асинхронные циклы) для проекта, который я делаю.TBB Intel Threading Building Blocks для Raspberry Pi 3

Я выяснил, как скомпилировать его для малины 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. 

Я просто хочу знать, как я могу порт Т работать на ARM-53 для новая малина Pi.

Простое решение, такое как замена _ARM_ARCH_7A_ в gcc_arm7.h, было бы неплохо, но как люди портируют TBB для других архитектур?

Спасибо

+0

Неужели Pi 3 все еще работает с тем же ARMv6-пространством пользователей, что и все остальные? Если вы успешно создали его для Pi 2, это должно отлично работать на 3 - для кода пользовательского пространства, различия между ARMv7 и 32-битным ARMv8 в любом случае незначительны. – Notlikethat

+0

Как я могу портировать код для Pi 3? –

ответ

3

Если вы хотите внести свой вклад в TBB (например, для переноса его на какую-либо другую архитектуру), вы можете перейти на страницу "submit contribution" на open source site и отправить патч.

К порту Т на ARMv8, у вас есть по крайней мере несколько вариантов:

  • Если ARMv8 и ARMv7 очень похожи, вы можете попытаться продлить проверку по линии 30 в gcc_arm7.h работать с ARMv8;
  • Если ARMv8 и ARMv7 сильно отличаются, вы можете создать gcc_arm8.h (или gcc_arm с поддержкой v7 и v8) и улучшить логику в tbb_machine.h около строк 246-248;
  • Теоретически, если GCC на ARMv8 поддерживает встроенные Атомикс, вы можете использовать gcc_generic.h на ARMv8 (см tbb_machine.h: 249)

Похоже, что вам не нужно, чтобы улучшить сделать файлы, но Я бы рекомендовал запустить make test, чтобы убедиться, что измененный TBB работает правильно в вашей системе.

+0

Я уже знал об этом. Я пытался получить конкретную информацию о том, насколько сопоставимый ARMv7-код относится к ARM 53 (что не похоже на его тип ARM-v8 от того, что я могу сказать). Опять же, знаете ли вы, поддерживает ли gcc ARMv8 встроенную атомику? Я знаю, что версия 6.1 была только что выпущена, но я не знаю, как искать эту информацию (я не могу найти ее в документации gcc) –

+0

Честно говоря, я почти ничего не знаю об архитектуре ARM. Я надеюсь, что кто-то из сообщества ARM присоединится к этой теме. Поэтому я могу только предложить вам попробовать gcc_arm7.h и/или gcc_generic.h в вашей архитектуре. Если он успешно компилируется (или вы сможете исправить проблемы), запустите тесты, чтобы убедиться, что все в порядке. – Alex