LoginSignup
14
9

M1 MacでVivadoが動いた!

Last updated at Posted at 2023-11-19

概要

  • ARM版MacでVivado/Vitisを動かすことができました!
  • 実行環境: M2 MacBook Air (24GB)
  • 必要なディスク空き容量: 約400GB

手順

1. Lima、XQuartz、Rosettaのインストール

$ brew install lima
$ brew install xquartz
$ softwareupdate --install-rosetta

2. Apptainerのコンテナを作成

$ limactl start template://apptainer --name=default --cpus=4 --memory=8 --disk=400 --vm-type=vz --rosetta --mount-writable --set=.ssh.forwardX11=true
  • --vm-type=vzは、MacOSのVirtualizationを使用する仮想化環境を指定します。
  • --rosettaは、Rosettaを有効にし、x86_64のバイナリを実行可能にします。
  • --cpus=8--memory=16などを指定して、リソースを調整します。
  • メモリやSwapが足りないと前触れなくクラッシュするので注意して下さい。
  • 以下のSIFイメージのビルドを行う場合は、--disk=400以上を指定して下さい。
  • 詳細な設定はLimaの公式ドキュメントを参照して下さい。
  • 追記:--cpusを多くしすぎると、稀にsegfaultが発生するようです。
  •  ↑単にVMのメモリ不足が原因でした。Swapを追加して解決しました。

3. Vivado/VitisのSIFイメージのビルド

# Limaにログイン
$ lima

# Swapを追加(1GBでも良いので必須)
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=8192
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
$ echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab

# SIFイメージのビルド準備
$ git clone https://github.com/jin0g/singularity-xilinx-vivado-vitis
$ cd singularity-xilinx-vivado-vitis
$ mv /PATH/TO/FPGAs_AdaptiveSoCs_Unified_2023.2_1013_2256.tar.gz ./

# SIFイメージをビルド
$ sudo apptainer build ./xilinx_2023.2.sif ./xilinx.def
  • 事前に、Vivadoの統合インストーラー(SFD)を公式サイトからダウンロードします。
  • Swapは必須です。メモリが十分にあってもSwapがないとハングアウトします。
  • この手順をスキップして、事前にビルドしたxilinx.sifをコピーしても良いです。
  • ビルドスクリプトの詳細はこちらを参照してください。
  • 追記: この後に一度、VMを再起動する必要があるかもしれません。コメント参照。

4. Vivadoの起動

$ lima apptainer exec ./xilinx_2023.2.sif vivado
  • XQuartzが起動し、VivadoのGUIが表示されれば成功です。
  • パス等を適切に通すことで、$ lima vivadoのように簡単に起動できます。

ベンチマーク

  • 折角なので、仮想環境でVivadoのパフォーマンスはどうか調べます。
  • 当然ですがMacネイティブでVivadoは動かないので、IntelのCPUと比較します。
  • シングルコア性能がM2と同じくらいの、i9-12900Kを比較対象にしました。
  • こちらのをVitis HLSで合成し、VivadoでBitstreamを合成しました。
  • 追記: ベンチマークのスクリプトはこちらです。
Platform Mem Container Build Vitis HLS Vivado
Intel i9-12900K 128GB 6h 14.6s 260.4s
Apple M2 24GB 2h 18.5s 375.1s

感想

  • さすがに処理速度はネイディブより30%ほど遅いですね。QEMUよりは爆速です。
  • HLSの合成や、小規模な回路の合成なら、ARM Macでも実用的だと感じました。
  • Vitisも動くと思うのですが、必要ライブラリなど確認していません。人柱募集します。
  • 追記: LimaのVMの動作が不安定で、ハングアップすることが稀に良くあります。
  •  ↑単にVMのメモリ不足が原因でした。Swapを追加して解決しました。

TIPS

  • 以下のようなスクリプトをMacに用意すると、利便性が向上すると思います。
  • このスクリプトに実行権限を付与して、パスを通してください。
  • ファイル名を実行したいコマンドにしてください(例えばvivadoなど)
#!/bin/sh
lima apptainer exec --bind $HOME ~/containers/xilinx_2023.2.sif $(basename "$0") $@
14
9
10

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
9