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 Chromebook が Crouton の下で Ubuntu Linux を実行しています;
- Raspberry Pi
- Odroid
Juliaは少なくともarmv6およびvfpv2命令セットを必要とします。armv7-aの使用が推奨されます。armv5またはソフトフロートはサポートされていません。
Raspberry Pi 1 / Raspberry Pi Zero
ARM CPUの種類がLLVMによって検出されない場合は、次の内容をMake.userに追加してCPUターゲットを明示的に設定します:
JULIA_CPU_TARGET=arm1176jzf-sビルドを完了するには、スワップファイルのサイズを増やす必要があるかもしれません。そのためには、/etc/dphys-swapfileを編集し、次の行を変更します:
CONF_SWAPSIZE=100to:
CONF_SWAPSIZE=512スワップファイルサービスを再起動する前に:
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile startRaspberry Pi 2
Raspberry Pi 2で使用されているARM CPUのタイプはLLVMによって検出されません。次の内容をMake.userに追加してCPUターゲットを明示的に設定してください:
JULIA_CPU_TARGET=cortex-a7
コンパイラとディストリビューションによっては、サポートされていないインラインアセンブリのためにビルド失敗が発生することがあります。その場合は、Make.userにMCPU=armv7-aを追加してください。
AArch64 (ARMv8)
JuliaはARMv8 CPU上で動作し、構築されることが期待されています。一般的な build instructions に従うべきです。Juliaは自らを構築するために約8GBのRAMまたはスワップが有効であることを期待しています。
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