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;
Для 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