タグ

postgresqlとcudaに関するmanabouのブックマーク (3)

  • PG-Strom v5.0 - KaiGaiの俺メモ

    ずいぶんご無沙汰のブログ記事となりました。 今回は、設計を一新して速く、頑強になった PG-Strom v5.0 をご紹介します。 なぜ再設計が必要だったのか? 前バージョンの PG-Strom v3.x シリーズの基的な設計は、2018年のPG-Strom v2.0の頃から大きく変わっていません。 当時の最新GPUモデルは Volta 世代(TESLA V100)で、CUDAのバージョンは9.2ですから、かなりの大昔という事はお分かり頂けると思います。 この頃、PG-Stromの開発において最優先すべき課題は、先ず実用となるバージョンをリリースする事でした。(※ HeteroDB社の創業は2017年7月です) クエリの処理速度を高速化する事は当然なのですが、それ以上に、まだPG-Stromの内部インフラも十分に枯れていない中で、クラッシュせずに走り切る事や、バグがあったとしても容易に原

    PG-Strom v5.0 - KaiGaiの俺メモ
  • gstore_fdw: GPUメモリをSQLで読み書き、そして…。 - KaiGaiの俺メモ

    昨年、PGconf.ASIAで発表したPL/CUDAによる創薬ワークロードの高速化実験のテーマであるが、 kaigai.hatenablog.com 実測したベンチマークを見ると、奇妙な傾向が見てとれる。 このワークロードにおける計算量は「Qの行数×Dの行数」であるので、Dの行数が同じ1000万行であるならば、Qの行数が1000のケース(22.6s)に比べ、Qの行数が10のケース(13.4s)の実行時間はもっと顕著に短時間でなければならない。 計算量が1/100なのに、実行時間は半分弱にしかなっていない。 実はこれは、化合物同志の類似度を計算するための時間だけでなく、PL/CUDA関数に与える引数をセットアップするための時間に12秒程度を要しており、アムダールの法則を引用するまでもなく、類似度の計算を高速化するだけでは処理速度はこれ以上伸びないのである。 PL/CUDA関数の引数として行列

    gstore_fdw: GPUメモリをSQLで読み書き、そして…。 - KaiGaiの俺メモ
  • カスタムロジックをWHERE句で使う - KaiGaiの俺メモ

    しばらくSSD-to-GPUダイレクトSQL実行の開発にどっぷり時間を突っ込んでいたので、久々にPL/CUDAネタ。 この辺のネタや、 kaigai.hatenablog.com この辺のネタで kaigai.hatenablog.com 紹介したように、PG-Stromはユーザ定義関数をCUDA Cで記述するための機能(PL/CUDA)を持っており、これを使えば、データベースから読み出したデータをGPUに流し込み、GPU上でカスタムのロジックを実行した後、結果をまたSQLの世界へ戻すという事ができる。 この仕組みはPostgreSQLの手続き言語ハンドラの機能を用いて実装されており、ユーザ定義のPL/CUDA関数が呼び出される毎に、手続き言語ハンドラが以下の処理を行う。 ユーザ記述のCUDA Cコードブロックをテンプレートに埋め込んで、ビルド可能なソースコードを作成。 NVRTC(NVI

    カスタムロジックをWHERE句で使う - KaiGaiの俺メモ
  • 1