ARM (Linux)

Julia unterstützt vollständig ARMv8 (AArch64) Prozessoren und unterstützt ARMv7 und ARMv6 (AArch32) mit einigen Einschränkungen. Diese Datei bietet allgemeine Richtlinien für die Kompilierung sowie Anweisungen für spezifische Geräte.

Eine Liste von known issues für ARM ist verfügbar. Wenn Sie auf Schwierigkeiten stoßen, erstellen Sie bitte ein Issue und fügen Sie die Ausgabe von cat /proc/cpuinfo bei.

32-bit (ARMv6, ARMv7)

Julia wurde erfolgreich auf mehreren Varianten der folgenden ARMv6- und ARMv7-Geräte kompiliert:

  • ARMv7 / Cortex A15 Samsung Chromebooks, die Ubuntu Linux unter Crouton ausführen;
  • Raspberry Pi
  • Odroid

Julia benötigt mindestens die armv6- und vfpv2-Befehlssätze. Es wird empfohlen, armv7-a zu verwenden. armv5 oder Soft-Float werden nicht unterstützt.

Raspberry Pi 1 / Raspberry Pi Zero

Wenn der Typ der ARM-CPU, der im Raspberry Pi verwendet wird, von LLVM nicht erkannt wird, setzen Sie das CPU-Ziel explizit, indem Sie Folgendes zu Make.user hinzufügen:

JULIA_CPU_TARGET=arm1176jzf-s

Um den Build abzuschließen, müssen Sie möglicherweise die Größe der Swap-Datei erhöhen. Dazu bearbeiten Sie /etc/dphys-swapfile und ändern die Zeile:

CONF_SWAPSIZE=100

zu:

CONF_SWAPSIZE=512

bevor Sie den Swapfile-Dienst neu starten:

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

Raspberry Pi 2

Der Typ der ARM-CPU, der im Raspberry Pi 2 verwendet wird, wird von LLVM nicht erkannt. Setzen Sie das CPU-Ziel explizit, indem Sie Folgendes zu Make.user hinzufügen:

JULIA_CPU_TARGET=cortex-a7

Je nach dem genauen Compiler und der Distribution kann es zu einem Build-Fehler aufgrund nicht unterstützter Inline-Assembly kommen. In diesem Fall fügen Sie MCPU=armv7-a zu Make.user hinzu.

AArch64 (ARMv8)

Julia wird erwartet, dass sie auf ARMv8-CPUs arbeitet und darauf aufbaut. Man sollte der allgemeinen build instructions folgen. Julia erwartet, dass etwa 8 GB RAM oder Swap aktiviert sind, um sich selbst zu bauen.

Known issues

Ab Julia v1.10 ist JITLink automatisch für diese Architektur auf allen Betriebssystemen aktiviert, wenn mit LLVM 15 oder späteren Versionen verlinkt wird. Aufgrund eines bug in LLVM memory manager können nicht triviale Arbeitslasten zu vielen Speicherabbildungen führen, die unter Linux das Limit der Speicherabbildungen (mmap) überschreiten können, das in der Datei /proc/sys/vm/max_map_count festgelegt ist, was zu einem Fehler wie

JIT session error: Cannot allocate memory

Sollte dies geschehen, bitten Sie Ihren Systemadministrator, das Limit der Speichermappings zu erhöhen, beispielsweise mit dem Befehl

sysctl -w vm.max_map_count=262144