ARM (Linux)

Julia полностью поддерживает процессоры ARMv8 (AArch64) и поддерживает ARMv7 и ARMv6 (AArch32) с некоторыми оговорками. Этот файл предоставляет общие рекомендации по компиляции, а также инструкции для конкретных устройств.

Список known issues для ARM доступен. Если у вас возникнут трудности, пожалуйста, создайте проблему, включая вывод команды cat /proc/cpuinfo.

32-bit (ARMv6, ARMv7)

Julia была успешно скомпилирована на нескольких вариантах следующих устройств ARMv6 и ARMv7:

  • ARMv7 / Cortex A15 Samsung Chromebooks, работающие под управлением Ubuntu Linux с использованием Crouton;
  • Raspberry Pi.
  • Odroid.

Julia требует как минимум наборы инструкций armv6 и vfpv2. Рекомендуется использовать armv7-a. armv5 или программная точка с плавающей запятой не поддерживаются.

Raspberry Pi 1 / Raspberry Pi Zero

Если тип ARM ЦПУ, используемого в Raspberry Pi, не обнаружен LLVM, явно установите целевой ЦПУ, добавив следующее в Make.user:

JULIA_CPU_TARGET=arm1176jzf-s

Чтобы завершить сборку, вам может потребоваться увеличить размер файла подкачки. Для этого отредактируйте /etc/dphys-swapfile, изменив строку:

CONF_SWAPSIZE=100

to:

CONF_SWAPSIZE=512

прежде чем перезапустить службу swapfile:

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

Raspberry Pi 2

Тип процессора ARM, используемого в Raspberry Pi 2, не определяется LLVM. Явно установите целевой процессор, добавив следующее в Make.user:

JULIA_CPU_TARGET=cortex-a7

В зависимости от конкретного компилятора и дистрибутива может произойти сбой сборки из-за неподдерживаемой встроенной ассемблерной программы. В этом случае добавьте MCPU=armv7-a в Make.user.

AArch64 (ARMv8)

Джулия ожидает работы и сборки на процессорах ARMv8. Необходимо следовать общему build instructions. Джулия ожидает наличие около 8 ГБ оперативной памяти или включенного свопа для своей сборки.

Known issues

Начиная с Julia v1.10, JITLink автоматически включен на этой архитектуре для всех операционных систем при связывании с LLVM 15 или более поздними версиями. Из-за bug in LLVM memory manager нетривиальные рабочие нагрузки могут генерировать слишком много отображений памяти, которые в Linux могут превышать лимит отображений памяти (mmap), установленный в файле /proc/sys/vm/max_map_count, что приводит к ошибке, подобной

JIT session error: Cannot allocate memory

Если это произойдет, попросите вашего системного администратора увеличить лимит отображений памяти, например, с помощью команды

sysctl -w vm.max_map_count=262144