ARM (Linux)

Julia는 ARMv8 (AArch64) 프로세서를 완전히 지원하며, ARMv7 및 ARMv6 (AArch32)도 일부 주의사항과 함께 지원합니다. 이 파일은 특정 장치에 대한 지침 외에도 컴파일에 대한 일반적인 지침을 제공합니다.

known issues에 대한 ARM용 목록이 제공됩니다. 문제가 발생하면 cat /proc/cpuinfo의 출력을 포함하여 이슈를 생성해 주시기 바랍니다.

32-bit (ARMv6, ARMv7)

Julia는 다음 ARMv6 및 ARMv7 장치의 여러 변형에서 성공적으로 컴파일되었습니다:

  • ARMv7 / Cortex A15 삼성 크롬북에서 Crouton을 사용하여 우분투 리눅스 실행;
  • Raspberry Pi
  • Odroid

Julia는 최소한 armv6vfpv2 명령어 세트를 요구합니다. armv7-a를 사용하는 것이 권장됩니다. armv5 또는 소프트 플로트는 지원되지 않습니다.

Raspberry Pi 1 / Raspberry Pi Zero

ARM CPU가 Raspberry Pi에서 사용되는 유형이 LLVM에 의해 감지되지 않는 경우, Make.user에 다음을 추가하여 CPU 대상을 명시적으로 설정하십시오:

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

Raspberry Pi 2에서 사용되는 ARM CPU 유형은 LLVM에서 감지되지 않습니다. 다음을 Make.user에 추가하여 CPU 대상을 명시적으로 설정하십시오:

JULIA_CPU_TARGET=cortex-a7

정확한 컴파일러와 배포판에 따라 지원되지 않는 인라인 어셈블리로 인해 빌드 실패가 발생할 수 있습니다. 그런 경우 Make.userMCPU=armv7-a를 추가하세요.

AArch64 (ARMv8)

줄리아는 ARMv8 CPU에서 작업하고 빌드할 것으로 예상됩니다. 일반적으로 build instructions를 따라야 합니다. 줄리아는 스스로 빌드하기 위해 약 8GB의 RAM 또는 스왑이 활성화되어 있기를 기대합니다.

Known issues

Julia v1.10부터 JITLink는 LLVM 15 이상 버전과 연결할 때 모든 운영 체제에서 이 아키텍처에 대해 자동으로 활성화됩니다. bug in LLVM memory manager로 인해 비트리비얼 워크로드는 리눅스에서 메모리 매핑의 한도(mmap)를 초과할 수 있는 너무 많은 메모리 매핑을 생성할 수 있으며, 이로 인해 다음과 같은 오류가 발생할 수 있습니다.

JIT session error: Cannot allocate memory

이런 일이 발생하면 시스템 관리자에게 메모리 매핑의 한도를 늘려달라고 요청하세요. 예를 들어 다음 명령어를 사용하여 조정할 수 있습니다.

sysctl -w vm.max_map_count=262144