2016-01-01から1年間の記事一覧

Beyond the 1GB limitation of varlena

This article is a part of the PostgreSQL Advent Calendar 2016.According to the request by Joe Conway (@josepheconway), I wrote this article in English.I like to share the discussion we had at the PostgreSQL developer unconference on the da…

PGconf.SV 2016 and PL/CUDA

I've participated PGconf Silicon Valley 2016 held at the South San Francisco Conference Center. I could have a presentation here. Its title is PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics. Its slides are below: https://ww…

PL/CUDAでk-means法を実装する

前回のエントリでは、CBI学会で発表を行った、PL/CUDAによる類似化合物の検索について説明した。今回は、コレとはまた別のワークロードに対する応用という事で、クラスタリング処理のIn-Database実装に挑戦してみた。 トライしてみたのは k-means法 によるク…

PL/CUDAによるIn-database Analytics ~創薬におけるワークロードを例として~

やや場違い感が否めないが、今週、CBI学会(計算情報化学生物学会)の2016年大会でポスター発表を行ってきた。発表タイトルは『Efficient Similarity Search Using Multiple Reference Molecules on PG-Strom architecture』というもので、要は、創薬分野…

同期DMAと非同期DMA

おっとっと、やらかしてしまった(但し、良い方に)。PG-Strom + NVMe-Stromでのパフォーマンス計測の際に、SSDからロードしたデータ以外に、例えばテーブル定義情報や定数パラメータといったSQLの実行に必要な情報は一般的なRAM-to-GPU DMAで転送していたの…

(EN) GpuScan + SSD-to-GPU Direct DMA

An article for none-Japanese readers....What I'm recently working on is a feature to load data blocks from NVMe-SSD to GPU using peer-to-peer DMA. It allows to bypass the CPU/RAM under a series of data loading process, thus, also allows to…

GpuScan + SSD-to-GPU Direct DMA

前回の動いた!SSD-to-GPU Direct DMA - KaiGaiの俺メモの記事では、Intel SSD 750とNVIDIA Quadro K1200を使って、Raw-I/OでのSSD-to-GPU Direct DMAが動くところまでを紹介した。この時点で測定できたSSD-to-GPU Direct DMAのスループットは概ね1400MB/s程…

動いた!SSD-to-GPU Direct DMA

ここしばらく、NVMe-SSDからGPUへとPeer-to-Peer DMAを行うためのLinux kernelドライバを書いている。これは昨年末のPGconf.JPのLTでアイデアを先に発表したもので、従来は、例えばテーブルスキャンに際して90%の行がフィルタリングされる場合であっても、デ…

オレオレ Demand Paging

現在の PG-Strom のアーキテクチャは、PostgreSQLの各バックグラウンドプロセスが個別にCUDAコンテキストを作成し、GPUデバイスメモリを作るという構成になっている。 これは、設計の単純化、特にエラーパスのシンプル化により、全体的なソフトウェアの品質…

PL/CUDAとmatrix型

PG-Stromには↓のような利点があるが、 SQLから自動的にGPU用バイナリ命令列を生成するため、GPUプログラミングを意識する必要がない、 PostgreSQLの行指向データを用いるため、既存DBからデータの移行を必要としない。 その裏返しとして、同時に↓のような特…

エルザ・ジャパン様の対応が神レベルだった件

雑文です。現在取り組んでいる SSD-to-GPU ダイレクト機能の実装には、PostgreSQL/PG-Strom側の機能拡張だけれなく、NVMe SSDからGPU RAMへのDMAを実行する Linux kernel ドライバの開発が必要になる。Linux kernelにはDMAを実行するためのインフラが既に多…

GTCで喋りました

という訳で、GTCで喋ってきました。 20160407_GTC2016_PgSQL_In_Place from Kohei KaiGai www.slideshare.net今までの発表とは少し趣を変えて、PG-Stromそのものの説明よりも、現実世界のワークロードを実行するときにどういった使い方があり得るか、どうい…

GTCに来ています

今年もサンノゼで開催されている GPU Technology Conference 2016 に参加しています。# なお、当方の発表『In-Place Computing on PostgreSQL: SQL as a Shortcut of GPGPU』は木曜日の予定 キーノートでは、NVIDIA社CEOのJen-Hsum Huang氏より"ディープラー…

SSD-to-GPU Peer-to-Peer DMAとバッファ管理(その2)

前回の続き。PCI-E接続のSSDからのP2P DMAでCPU/RAMを介さずにGPU RAMへデータを転送するという要素技術自体は目新しいものではない。かつてFusion-io(現: SunDisk)もやっていたし、NVMe規格に準拠したものであれば標準のドライバに少し手を加えてP2P DMA…

SSD-to-GPU Peer-to-Peer DMAとバッファ管理(その1)

昨年の暮れ、JPUGカンファレンスのLTで『SQL+GPU+SSD=∞』と題したスピーチを行った。 SQL+GPU+SSD=∞ (Japanese) from Kohei KaiGai www.slideshare.netこれはかいつまんで言えば、ストレージからデータをCPU+RAMへとロードするより前に一旦GPUへとデータを転…

Dynamic ParallelismでGpuJoinはどう変わるか

NVIDIA GPUのKepler/Maxwell世代で*1対応となったDynamic Parallelismという機能がある。GPUデバイス上で動作するプログラム(Kernel関数と呼ぶ)を起動する際には、そのKernel関数を実行するために同時に何個のスレッドを起動するかを指定する。 例えば、10…

俺様スキャンの並列実行

PostgreSQL v9.6からはパラレルスキャンが導入される事になっている。この機能をざっくり説明すると 共有メモリ上に『次に読むブロックの番号』という状態を作っておく。 Gatherノードが複数のワーカープロセスを起動する。 各ワーカーで実行されるSeqScanが…

TargetListの計算をGPUで行う。

正月休みの宿題だった機能を実装できた。(注:ちゃんと動くとは言っていない)PG-Stromを使って数式の評価をGPUにオフロードする場合、WHERE句やJOIN..ON句のオフロードには対応していたものの、TargetListに複雑な演算式を含む場合、これは完全にCPU側で処…