Документация Engee

ARM (Linux)

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

Доступен список известных проблем для ARM. Если у вас возникнут трудности, создайте заявку и приведите вывод из файла cat /proc/cpuinfo.

32-разрядные (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

на:

CONF_SWAPSIZE=512

перед перезапуском службы файла подкачки:

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)

Ожидается, что работа и сборка Julia будет осуществляться на процессорах ARMv8. Необходимо следовать общим инструкциям по сборке. Для сборки Julia требуется около 8 ГБ оперативной памяти или файл подкачки.

Известные проблемы

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

JIT session error: Cannot allocate memory

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

sysctl -w vm.max_map_count=262144