ARM (Linux)

JuliaはARMv8(AArch64)プロセッサを完全にサポートしており、ARMv7およびARMv6(AArch32)もいくつかの注意点とともにサポートしています。このファイルは、特定のデバイスに関する指示に加えて、コンパイルの一般的なガイドラインを提供します。

ARM用のknown issuesのリストが利用可能です。問題が発生した場合は、cat /proc/cpuinfoの出力を含む問題を作成してください。

32-bit (ARMv6, ARMv7)

Juliaは、以下のARMv6およびARMv7デバイスのいくつかのバリアントで正常にコンパイルされています:

  • ARMv7 / Cortex A15 サムスン Chromebook が Crouton の下で Ubuntu Linux を実行しています;
  • Raspberry Pi
  • Odroid

Juliaは少なくともarmv6およびvfpv2命令セットを必要とします。armv7-aの使用が推奨されます。armv5またはソフトフロートはサポートされていません。

Raspberry Pi 1 / Raspberry Pi Zero

もしRaspberry Piで使用されているARM CPUのタイプが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のため、非自明なワークロードは、Linux上でメモリマッピングの制限(mmap)を超える可能性があるため、/proc/sys/vm/max_map_countファイルに設定されているメモリマッピングの制限を超えることがあり、次のようなエラーが発生します。

JIT session error: Cannot allocate memory

このようなことが起こった場合は、システム管理者にメモリマッピングの制限を増やすよう依頼してください。例えば、次のコマンドを使用します。

sysctl -w vm.max_map_count=262144