[VTJ-JP] CUDA 12.2 Update 1 + heterodb-extra 5.2 + PostgreSQL 16 won't start
Closed this issue · 9 comments
Install the new heterodb-extra.
[cloud-user@kujira src]$ sudo make install
Makefile:39: warning: ignoring prerequisites on suffix rule definition
mkdir -p /usr/include /usr/bin /usr/lib64
install -m 0755 heterodb_extra.so /usr/lib64/heterodb_extra.so.5.2
ln -sf heterodb_extra.so.5.2 /usr/lib64/heterodb_extra.so
install -m 0755 ssd2gpu_test /usr/bin
systemct status postgresql-16
░░ The job identifier is 2392.
Dec 18 04:49:38 kujira.vtj postgres[29662]: 2023-12-18 04:49:38.360 UTC [29662] LOG: HeteroDB Extra module loaded [api_version=20231105,cufile=on,nvme_strom=off,githash=HEAD]
Dec 18 04:49:38 kujira.vtj postgres[29662]: 2023-12-18 04:49:38.360 UTC [29662] LOG: HeteroDB License: { "version" : 2, "serial_nr" : "VTJ-TRIAL-KUJIRA", "issued_at" : "2023-01->
Dec 18 04:49:38 kujira.vtj postgres[29662]: 2023-12-18 04:49:38.360 UTC [29662] LOG: PG-Strom version 5.0.1 built for PostgreSQL 16 (githash: 972441dbafed6679af86af40bc8613be2d7>
Dec 18 04:49:38 kujira.vtj postgres[29663]: (gpu_devattrs.h:121) failed on cuDeviceGetAttribute(HANDLE_TYPE_FABRIC_SUPPORTED): CUDA_ERROR_INVALID_VALUE
Dec 18 04:49:39 kujira.vtj postgres[29662]: 2023-12-18 04:49:39.027 UTC [29662] FATAL: GPU device attribute collector exited with 1
Dec 18 04:49:39 kujira.vtj postgres[29662]: 2023-12-18 04:49:39.027 UTC [29662] LOG: database system is shut down
Dec 18 04:49:39 kujira.vtj systemd[1]: postgresql-16.service: Main process exited, code=exited, status=1/FAILURE
Installed software:
- RHEL 9.2
- CUDA 12.2 Update 1
- MLNX_OFED_LINUX-23.10-1.1.9.0
- PostgreSQL 16.1
手元環境では確認していないのですが、1e93779f23030ea53c49c4609f7c7e645e25938a
ではどうでしょうかね?
CUDA12.3環境でビルドしたバイナリを、CUDA12.2の環境で動かす、といったケースを想定です。
インストールとPostgreSQL16のサービス起動はしますが、PG-StromのGPUサービスが起動しませんでした。nvidia-smi
を実行してもプロセスが表示されていません。
testdb=# CREATE EXTENSION pg_strom;
CREATE EXTENSION
testdb=# IMPORT FOREIGN SCHEMA apacheloggen
FROM SERVER arrow_fdw
INTO PUBLIC OPTIONS (dir '/opt/nvme/apacheloggen');
IMPORT FOREIGN SCHEMA
testdb=# SELECT count(*) FROM apacheloggen;
ERROR: failed on connect('.pg_strom.33313.gpu0.sock'): No such file or directory
ログに次のメッセージが大量に出ています。
ERROR: failed on cuLinkAddFile('/usr/pgsql-16/share/pg_strom/xpu_common.fatbin'): CUDA_ERROR_NO_BINARY_FOR_GPU
LOG: background worker "PG-Strom GPU Service" (PID 34601) exited with exit code 1
うーん。これはやはりビルドした環境のCUDA + NVIDIA Driverバージョンに縛られてしまうのか…。
当面は実行環境と同じCUDA + NVIDIA Driverでビルドするようにしてください。対策は考えます。
いや、この問題はPG-Stromを動かしたい環境でビルドした結果がその様になってしまうというはなしです。
rpmパッケージではなくて、各環境でmake installをしています。ビルド前に前のビルドは消すようにしているので問題ないと思います。
sudo make uninstall PG_CONFIG=/usr/pgsql-16/bin/pg_config
make clean PG_CONFIG=/usr/pgsql-16/bin/pg_config
その環境で make した時に nvcc に渡っているオプションって出せますか?
↓こういうの
/usr/local/cuda/bin/nvcc -I /usr/local/pgsql-15/include/server --fatbin --maxrregcount=128 --gpu-architecture=compute_60 --gpu-code=sm_60,sm_61,sm_70,sm_75,sm_80,sm_86 --threads 6 --source-in-ptx -DHAVE_FLOAT2 --relocatable-device-code=true -lineinfo -o cuda_gpupreagg.fatbin cuda_gpupreagg.cu
添付しました。
--gpu-architecture=compute_60 --gpu-code=sm_60,sm_61,sm_70,sm_75,sm_80,sm_86
はきちんと付いてますね...。(;´・ω・)
ちょっとこちらも、RPMで入れたPostgreSQL 16相手で試してみます。
こちらでは再現せず、です。
ちょっと当該マシンで調べさせてもらえますか?