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