システム管理

MPSデーモンの利用

PostgreSQLのようにマルチプロセス環境でGPUを使用する場合、GPU側コンテキストスイッチの低減やデバイス管理に必要なリソースの低減を目的として、MPS(Multi-Process Service)を使用する事が一般的なソリューションです。

https://docs.nvidia.com/deploy/mps/index.html

一方、現在のMPSサービスにはいくつかの制限事項があり、これとPG-Stromの利用する一部機能が被っているため、MPSサービスとPG-Stromを併用する事はできません。PG-Stromを利用する際にはMPSサービスを停止してください。

Note

具体的には、GpuPreAggのGPUカーネル関数が内部のハッシュ表を動的に拡大する際に使用するcudaDeviceSynchronize()デバイスランタイム関数が、制限事項であるDynamic Parallelism機能を使用しているため、上記の制限に抵触します。

ナレッジベース

PG-Stromプロジェクトのwikiサイトには、ノートと呼ばれる詳細な技術情報が公開されています。

https://github.com/heterodb/pg-strom/wiki