2016-05-04 16 views
4

Also ich versuche, Intels TBB C++ - Bibliothek zu kompilieren, die parallelisms in Programmen ermöglicht. Ich benötige dies besonders, um C++ React zu verwenden, das eine Bibliothek ist, die eine reaktive Bibliothek (z. B. asynchrone Schleifen) für ein Projekt bereitstellt, das ich gerade mache.TBB Intel Threading Bausteine ​​für Raspberry Pi 3

Ich habe herausgefunden, wie man es für Raspberry Pi 2 kompiliert. Aber mein Problem ist, dass die Führer, die ich gesehen habe, nur für die Architektur ARM-7a aktualisiert haben.

Derzeit wenn ich versuche, einen Build zu machen, die TBB als Abhängigkeit verwendet, bekomme ich diesen Fehler:

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. 

Ich will nur wissen, wie kann ich Port TBB auf ARM-53 zu arbeiten, für die neuer Raspberry Pi.

Eine einfache Lösung wie das Ersetzen von _ARM_ARCH_7A_ in gcc_arm7.h wäre nett, aber wie gehen die Leute bei der Portierung von TBB für andere Architekturen vor?

Danke

+0

Ist der Pi 3 immer noch nicht der gleiche ARMv6-Benutzerbereich wie alle anderen? Wenn Sie es erfolgreich für den Pi 2 gebaut haben, sollte das gut für den 3 - für Userspace-Code funktionieren, die Unterschiede zwischen ARMv7 und 32-bit ARMv8 sind sowieso vernachlässigbar. – Notlikethat

+0

Wie würde ich den Code für Pi 3 portieren? –

Antwort

3

Wenn Sie TBB beitragen wollen (zum Beispiel in den Hafen es für eine andere Architektur), können Sie auf "submit contribution" Seite auf dem open source site gehen und Ihre Patch schicken.

Zum Anschluss TBB auf ARMv8, Sie zumindest haben mehrere Möglichkeiten:

  • Wenn ARMv8 und ARMv7 sehr ähnlich sind, können Sie versuchen, die Kontrolle über die Leitung 30 in gcc_arm7.h zu erweitern mit ARMv8 zu arbeiten;
  • Wenn ARMv8 und ARMv7 ziemlich unterschiedlich sind, können Sie gcc_arm8.h (oder gcc_arm mit support v7 und v8) erstellen und die Logik in tbb_machine.h nahe den Zeilen 246-248;
  • Theoretisch, wenn gcc auf ARMv8 atomics eingebaute unterstützt, können Sie gcc_generic.h auf ARMv8 (siehe tbb_machine.h: 249)

Es sieht so aus, dass Sie nicht brauchen, um zu verbessern Dateien zu machen, aber Ich würde empfehlen, make test auszuführen, um sicherzustellen, dass geänderte TBB auf Ihrem System ordnungsgemäß funktioniert.

+0

Das war mir schon bewusst. Ich habe versucht, spezifische Informationen darüber zu bekommen, wie ARMv7-Code mit ARM 53 vergleichbar ist (was nicht so aussieht, als wäre es genau ein ARM-v8-Prozessor, von dem, was ich sagen kann). Wissen Sie, ob gcc auf ARMv8 eingebaute Atomics unterstützt? Ich weiß, Version 6.1 wurde gerade veröffentlicht, aber ich weiß nicht, wie ich diese Informationen nachschlagen soll (ich kann es nicht wirklich in der gcc-Dokumentation finden) –

+0

Um die Wahrheit zu sagen, ich weiß fast nichts über ARM-Architektur. Ich hoffe, dass jemand aus der ARM-Community diesem Thread beitritt. Ich kann Ihnen nur empfehlen, gcc_arm7.h und/oder gcc_generic.h auf Ihrer Architektur auszuprobieren. Wenn es erfolgreich kompiliert wird (oder Sie die Probleme beheben können), führen Sie die Tests aus, um sicherzustellen, dass alles in Ordnung ist. – Alex