HPCメモ

HPC(High Performance Computing)に関連したりしなかったりすることのメモ書き

apple silicon用とintel用のコマンドラインツールの使い分け

xcode-selectで入るコマンドラインツールはユニバーサルバイナリになっているようで、ターミナルを起動した時にRosettaを使用するかどうかで挙動が変わるものがあります。(ccとか)

しかし、ターミナルでrosettaを使うかどうかの指定を切り替えるには、いちいちターミナルを終了して再起動する必要があるのでこれは避けたいところです。

先日も紹介したこちらの記事によると

qiita.com

という流れのようです。

ということは、基本はarm版にしておき(ターミナルのRosetta使用チェックは外しておく)intel版のシェルを用意して、intel版のコマンドラインツールを使いたい時はそちらのシェルを実行すれば大丈夫そうです。

引用した記事ではHomebrewからintel用のzshとarm用のzshをインストールされてますが、私は特にシェルに拘りはないので*1*2intel用にはbashを、arm用にはOS標準のzshを使うことにします。

一回、Rosetta2を使うチェックを付けた状態のターミナルを起動して brew install bashし、Rosetta2のチェックを外してターミナルを再起動します。

この状態で、例えばccであれば

so5@MBA ~ % cc --version
Apple clang version 12.0.0 (clang-1200.0.32.27)
Target: arm64-apple-darwin20.1.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
so5@MBA ~ % bash
bash-5.0$ cc --version
Apple clang version 12.0.0 (clang-1200.0.32.27)
Target: x86_64-apple-darwin20.1.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

という具合に、コマンド一発でtarget archが切り替えられるようになりました。 (ccだけなら-mオプションでクロスコンパイルすりゃ良いかもしれんけどw)

brewzshからインストールしようとするとエラーになりますが、bashの中からならターミナルのRosettaのチェックはつけないままでもインストールできます。

さて、これで一応ベンチマークを測れる準備ができたかな。

*1:昔はゴリゴリとカスタマイズした.tcshrcが無いと何もできなかったんですけどねー

*2:仕事で使うようになると、わざわざ管理者にお願いしてtcsh入れてもらうのも面倒だし、そもそも.tcshrcを持って行くのも面倒ってなって最終的には素のbashで十分になったw