やったこと=RAPIDS のビルド
データ処理、機械学習のフレームワークRAPIDSを Arch Linux でビルドした。ただし、ビルドまでにエライ手間がかかったので、皆さんへの共有も兼ねて
0. 基本構成その0 ・・・ Cupyのビルド方法についてはこちらの記事で紹介してます。
- 基本構成その1 ・・・ こちら。RMM, cuDFというRAPIDS の基本コンポーネントの一部のビルド手順。
- 基本構成その2 ・・・ こちら。CUMLというRAPIDS の基本コンポーネントの一部のビルド手順。ついでに、cuSignal という信号制御ライブラリやcuxfilter という描画データ変換ライブラリも
- 基本構成その3 ・・・ いまここ。グラフを扱うCUGraphのビルド手順。
cuGraph って何?
NVIDIAから提供されている、グラフ分析用ライブラリ。上述のgithubやドキュメントのとおり、RAPIDS経由で提供されている.
#事前想定
- NVIDIA GeForce RTX/GTX を持っている人
- CUDA含めた開発環境が揃っている。
- Arch Linux の使い手。EndeavourOSなど派生ディストリビューションでもOKだが、Manjaro のように独自リポジトリを持ち、カーネル、ドライバなどのリリースのペースが異なるものは関知しません。
- yay とか PKGBUILD とかが何やってるかが、ある程度わかること。
#ビルド方法
GitHubリンクに、PKGBUILDとかビルド順とか。で済ませたいですが、補足説明を。あと参考までにビルドの依存関係をつけます。
0 事前に、pacman で spdlog をインストールしてください。外部でspdlogを持つ強い根拠はないです。別記事のとおりRAPIDSの他コンポーネントのビルド設定と合わせただけです。
sudo pacman -S spdlog
その後、 /etc/makepkg.cfg のコンパイルフラグに、「-DSPDLOG_FMT_EXTERNAL」というフラグをつけて、SPDLOGはOSにインストールしたほうを呼び出す設定にしてください。
CFLAGS="-march=skylake-avx512 -mtune=native -DSPDLOG_FMT_EXTERNAL -O3 -pipe -fno-plt -fexceptions \
-Wp,-D_FORTIFY_SOURCE=2,-D_GLIBCXX_ASSERTIONS \
-Wformat -Werror=format-security \
-fstack-clash-protection -fcf-protection"
1. cuGraph
GITにあるファイルをローカルに置いて、ビルドすればOK。ただし、現行バージョン(21.10)の制限は、
- 他のコンポーネント(CUML,CUDF)はGCC11でビルドできるが、CUGraphはGCC11ではビルドできない。GCC10を使う必要がある。cugraph でなくそこから呼び出している外部のライブラリがGCC11でビルド不可のため。
というのがある。あとは、test中のコマンドなどで動作を確認してほしいが、CPU vs GPU の動作比較となるため、networkXのインストールも必要になる。
sudo pacman -S python-networkx
##Cupy に cuGraph を組み込み
なんのことはなく、cuGraphをインストール後に、Cupyを再ビルドすれば、cuGraph も自動的に組み込まれる
基本的には以前の投稿と同じ(cuSparseLtは無くてもよい)。
ただし、パッチとして、
- cugraph ヘッダファイルの位置の訂正
- cugraph の 21.10 から一部ライブラリが、Legacyに移っている(参考)ためその対応をしている。
#記録
- (2021.10.13 23:00 JST)...初版
#おことわり
この記事は、筆者以外の方の環境でも同様に成功することを保証するものではありません。ビルドや動作確認の失敗、(ないとは思いますが)環境が破壊されても責任は一切負いかねます(基本的には自己責任でお願いします。)。
#今回紹介したリンク
https://github.com/gdaisukesuzuki/PKGBUILD_rapidsai2110