4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

富岳にdonkeycarパッケージをインストールする

Last updated at Posted at 2021-05-25

表題の手順をgithub上に公開しました。

GitHub: Donkeycar on Fugaku
https://github.com/coolerking/donkeycar_on_fugaku

去年あたりからニュース画像でもおなじみになってきたスーパーコンピュータ富岳ですが、OSSを使った計算を行う場合は多少厄介になります。

すでにインストール済みのものであればよいのですが、未インストールであり、さらに依存関係のあるOSパッケージ管理ツール管理化のパッケージを使用する場合、一般ユーザの許可されている権限でなんとかしないといけないので、いろいろややこしくなります。

自分が思いつく方法は、以下の2種類になります。

  • ホームディレクトリ上でソースからコンパイル
  • spack を使ってコンパイル&インストール

ホームディレクトリ上にソースコードを展開して、手動でビルドするときに、--prefix オプションでホームディレクトリ上のサブディレクトリ(ex. ~/local/aarch64fx )にしてmake installしたときにこのディレクトリに書き込まれるようにする方法です。

自分は Slackware 時代からのLinuxユーザなので、この手の手順にはなれていますが、依存関係のあるパッケージをたどっていくと..やがて LLVM まで到達してしまい、この方法であっているのか?..と。

で、富岳ポータルサイト(登録ユーザのみが参照可能)のコンテンツを調べ直したところ、Spackを使うことを推奨しているようです。

Spackは、スーパーコンピュータ上でOSSをインストールするためのツールで、Pythonで動作します(富岳にも最初からインストールされている)。なので、http://github.com/spack/spack.git をチェックアウトするだけで動作します。

Spackはpyenvやvirtualenv、condaなどのように"環境"を作ることができるので、デフォルトの環境ではなく、用途に合わせて個々の"環境"を作ることができます(削除もコマンド1発)。この"環境"の中にインストールすればOKです。最初の環境であるルート環境に入るには、用意されたセットアップシェルを実行します。

# インストール
git clone https://github.com/spack/spack.git ~/spack
cd ~/spack
git checkout releases/<使いたいバージョン>

# ルート環境に入る
. ~/spack/share/setup-env.sh

これでspackコマンドが使用可能になります。

独自の"環境"を作る場合も、spackコマンドを使用します。

# 環境 hogehoge を作成する
spack env create hogehoge
# 環境 hogehoge に入る
spack env activate hogehoge
# インストール可能なOSSパッケージをリスト
spack list
# インストール済みパッケージのリスト
spack find
# openblasパッケージをインストール
spack install openblas
# 環境 hogehoge から抜ける(ルート環境にもどる)
spack env deactivate
# 環境 hogehoge を削除する(確認なし)
spack env remove hogehoge

spack install で指定する引数によっては、OSSバージョン、使用するコンパイラおよびバージョン、リンクオプションなどを指定可能です。

# 富岳ではterminfoをリンクする場合-ltinfoを使う
spack install mesa ldlibs="-ltinfo"

spack install されると、~/spack/var/spack/environments/<Spack環境名>/.spack-env/view 以下の binlibinclude へインストールされます。これらへのパスなどの環境変数は spack env activate 時にセットされます。

ただし、pip からフォークされる cmake などのオプションにまで到達しない場合があるので、個別にセットする必要があるケースもあります(Pythonパッケージを pip でインストールする際には内部で cmake することがあります)。このあたりはトライ&エラーでみつけていくしかありません。

Pythonパッケージの一部もspackからインストールできます。もちろんpipも可能ですが、一般ユーザではグローバルインストールはできないので、--user オプションを付けないと動きません。

富岳は会話型とジョブ型の2種類の実行方法がありますが、spack install が会話型だと制限時間内に終わらないことがあるため、それなりのボリュームのパッケージはジョブ型で実行( pjsubコマンドでシェルを実行)する必要があります。

あと、TensorFlow2.2.0/PyTorch1.7.0はあらかじめインストールされたパスが公開されているので、これらへパスを変更することで使用可能になります。Spackでもインストールできそうですが、富岳管理者が提供しているので、コンパイラ最適化オプションをきちんとつけて作成している(..とおもいます)はずなので、こちらをつかうほうがよいでしょう。

なのでvirtualenvなどのPython環境と、Spack環境を併用するのがよいと、私は判断しました。最初に紹介したGitHub上のスクリプトも、それを前提に作成しています。

細かい使い方は Spackのドキュメント を参照してみてください。チュートリアルもありますし、Youtubeに英語ですが 概要紹介のセッション動画 も投稿されています(字幕翻訳させれば内容はわかるとおもいます)。

ご参考まで。

4
0
1

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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?