[v5.1] 実行環境に合わせたfatbinの生成
Closed this issue · 2 comments
kaigai commented
#695 の派生問題。
最新のCUDA(12.3U1)でビルドしたバイナリが、CUDA12.2の環境ではバイナリ非互換で怒られる。
⇒GPUコードのビルド済み配布って難しくない?
- CUDAのバージョン
- NVIDIAドライバのバージョン
- PostgreSQLのバージョン
- OSの種類(RHEL、Ubuntu)
で別々に作らねばならないのは大変。
⇒PostgreSQL(PG-Strom)のインストール時や起動時にデバイスコードをビルドできるようにする。
/usr/local/pgsql-15/share/pg_strom
の配下に、cuda_common.<CUDA_VERSION>_<DRIVER_VERSION>_<CHECKSUM>.fatbin
みたいなファイルを放り込んで、存在しなければビルドする。
kaigai commented
a151fd3c5b86a378ea3dde0a724b1d7345d3f170
にて対応。
PostgreSQLの初回起動時に $PGDATA/.pgstrom_fatbin
ディレクトリ配下の fatbin ファイルを探る。
もしCUDAバージョンが違ったりすれば、再度ビルドを行って、実行環境に適合するものを作る。
これで、CUDAバージョンミスマッチによる不具合は回避できるはずだが…。
$ ls -l /opt/pgdata16/.pgstrom_fatbin/
total 5008
-rw-r--r--. 1 kaigai users 5120792 Mar 1 18:03 pgstrom-gpucode-V012020-979aca880b0e4a6f5095384688ee8516.fatbin
-rw-------. 1 kaigai users 2880 Mar 1 18:03 pgstrom-gpucode-V012020-979aca880b0e4a6f5095384688ee8516.fatbin.log
ytooyama commented
この変更はpg_strom-PG15-5.0-4.el8.x86_64
には含まれていますか?
$ rpm -q pg_strom-PG15
pg_strom-PG15-5.0-4.el8.x86_64
CUDA 12.4環境でrpm版をテストしたら、「このPG-StromモジュールバイナリがビルドされたCUDAバージョン(12.2)は、このプラットフォーム上のCUDAランタイムバージョン(12.4)よりも新しいものです。予期せぬ動作を引き起こす可能性があるため、CUDAツールキットのアップグレードを推奨します。」と言われました。
LOG: PG-Strom binary built for CUDA 12.2 (CUDA runtime 12.4, nvidia kmod: 550.54.14, nvidia-fs kmod: 2.19.6)
WARNING: The CUDA version where this PG-Strom module binary was built for (12.2) is newer than the CUDA runtime version on this platform (12.4). It may lead unexpected behavior, and upgrade of CUDA toolkit is recommended.