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

雑文です。現在取り組んでいる 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側で処…

PostgreSQLのデータ構造はなぜ並列プロセッサ向きではないか。

今年もPostgreSQL Advent Calendar 2015に参加しています。前からちょくちょく『PG-StromってXeon Phiだとどーなんですか?』的な質問を受ける事があんですが、データ構造から見て難しいので『勘弁!』という理由を紹介してみたいと思います。PostgreSQLのレ…

Sort by Table Partition?

v9.6向け開発ネタとして思い付いたアイデア。 でも、個人的には他に優先すべき機能*1もあるので、たぶん自分ではできない。誰かヨロシク的な。タイムスタンプをキーとして複数の子テーブルにパーティション化されたテーブルがあるとする。 これは結構一般的…

NVRTCライブラリを使う

GPU

CUDA7.0RCの新機能の一つに、Runtime Compilationというのがある。従来、cuModuleLoad()などでGPU用バイナリをロードして使う際には、nvccを実行してC/C++のソースからPTXなりのバイナリを生成する必要があった。CUDA 7.0RCのRuntime Compilationは、これをO…

GpuNestedLoop

現時点でPG-Stromが対応しているワークロードは以下の4つ。 全件探索 (GpuScan) 表結合 (GpuHashJoin) 集約演算 (GpuPreAgg) ソート (GpuSort) これに、GPU内の計算処理で使うデータ型や関数が対応しているかどうかで、GPUオフロードできるかどうかが決まる…

並列Aggregateに向けて

PostgreSQL Advent Calendar 2014に参加しています。 数日前、SimonがPgSQL-Hackersに面白いパッチを投げてきた。曰く、 KaiGai, David Rowley and myself have all made mention of various ways we could optimize aggregates. Following WIP patch adds a…

AWSでPG-Strom

PG-Stromを動かそうという時に、GPU自体は安価で手に入れやすい部品なのだけども、普段使いのLinuxサーバにそうそう都合よくGPUが挿さっている人はマジョリティではないかもしれない。という事で、簡単にPG-Stromをお試しするために、AWSでのAMIイメージを作…

PG-Stromなう

最近、方々で『GPUイイよ!GPU!』と言って回っている訳ですが、今現在、PG-Stromの開発がどんなもんじゃいというのをまとめておこうと思います。振り返ってみると、2012年1月、最初にPG-Stromのプロトタイプを作ってみた時は、まさにPG-Strom管理下の外部テ…

さらばドイツ

2011年2月にドイツへ赴任し、以降2年10ヵ月間、SAP社とのアライアンス業務に携わっていたわけですが、11月末で任地での業務を終了し日本へと戻る事になりました。振り返れば、初めてフランクフルトの空港に到着した後、一歩外へ出たら氷点下の世界(注:ドイ…

Custom Executor 試作版

現状、PostgreSQLのエグゼキュータを拡張するにはいくつか方法が考えられる。 Executor(Start|Run|End)_hookを使う エグゼキュータ全体を乗っ取る。逆に言えば、一部の処理(例えば集約演算)だけを俺様実装にしたい時には、本体側のコードをコピーするなり…

単体型GPUへのDMA転送コストを考える

PostgreSQLの検索処理(特にスキャン周り)をGPUにオフロードするにあたって、できるだけCPU処理の負荷を軽減したい。というのも、PostgreSQLは基本シングルスレッドなので、GPUがバリバリ並列計算しようとしてもデバイスへのデータ供給が追い付かなければ計…

OpenCLでCPU/GPUを使い分ける?

最近、PG-Stromに興味があるという方からちょくちょく、個別に質問メールを頂く事がある。 その中で頂いたコメントに興味深い洞察が。 GPUによるアクセラレーションは確かに興味深い機能だけれども、PG-Stromの本質は突き詰めていえばパイプライン処理のお化…

SE-PostgreSQLでリモートプロセスのセキュリティラベルを使用する

PostgreSQL Advent Calendar 2012に参加しています。 何を設定する必要があるのか? 何か世のため人のためになりそうなネタは・・・という事で、SE-PostgreSQLでリモートプロセスのセキュリティラベルを使用する方法をまとめてみました。v9.1からサポートさ…

mod_selinuxのアーキテクチャを考える(後編)

前回の記事では、現在の mod_selinux モジュールの問題点を解決するために複数のタスクキューにワーカースレッドを紐付ける方法を考え、そこから一歩考察を進めて、FastCGIを使ってマルチプロセス実装にすればよりセキュアなWebアプリケーション環境を実現で…

mod_selinuxのアーキテクチャを考える(前編)

mod_selinuxはapache/httpdのプラグインで、利用者のHTTP要求の認証(BASICとかDIGESTとか)結果に基づいて、PHPスクリプトや静的コンテンツを参照するContents Handlerの実行権限を切り替える。 やっている事は単純で、ap_hook_handlerの先頭で mod_selinux …

人生に影響を与えたプレゼンテーション

10年近くも技術者をやっていると、他の人のプレゼンテーションを見る機会はちょくちょくある。(別にOSS/Linuxに限った話じゃなくて) 全く印象に残らないものから、発表後にプレゼンターを捕まえて議論が始まるもの、中には自分の考え方や活動に影響を与え…

PG-Stromにプロファイラをつけてみた

1月6日(金)に書いた『しゅとろ〜む、しゅとろ〜む』の記事は割と反響が大きかったようだ。 コメント欄に次のような質問を頂いたので、試してみることにする。 通りすがりさん wrote: すばらしい成果ですね. カラム指向的にデータを持っていること自体が性能…

PG-Strom

I've checked up an idea whether it is feasible to implement, or not, since I saw a presentation by Tim Child in Ottawa last year. Is it possible to accelerate sequential-scan of PostgreSQL? We often see sequential-scan instead of index-sca…

しゅとろ〜む、しゅとろ〜む

昨年、オタワでTim Child氏の発表を聞いて以来、実装できないものかと思って暖めていたアイデアがある。GPUの処理能力を使って、PostgreSQLの検索処理を高速化できないか?というものである。 特に複雑な計算を含むクエリの場合、Index-Scanに落ちないで、全…

Leaky Views と Security Barrier : PostgreSQL Advent Calendar #4

このエントリはPostgreSQL Advent Calendarに参加しています。12/4(日)担当也。ヨーロッパ中部時間ではまだ12/3(土)ですが。 RDBMSで行レベルのアクセス制御を実現する方法として、利用者に対して直接のアクセス権を付与せずに、特定のビューを通してだけア…

Leaky VIEW まとめ

SELinuxとは関係のない、RDBMSでのセキュリティのお話。利用者に対して、テーブルに対する直接のアクセス権を与えず、特定のビューを通してだけアクセスを許可するのは、行レベルのアクセス制御でよく使われるテクニックである。 つまり、ビューは不可視であ…

OSS開発勉強会-09

今日の勉強会で説明した内容のメモGitHubなんかを使って、何か別のOSSプロジェクト(gitで管理されている)の 派生バージョンを作り、かつ、オリジナルの更新に追従する方法。オリジナルのGitリポジトリのURLを git://github.com/kaigai/my_oss.git とし、 …

OSS開発勉強会-08 (前半)

ひそやか〜に続けている社内勉強会のメモ。 (特に今回は資料もなかったので) libcurl について このライブラリを使うと、HTTP(s)ほかプロトコルでURLにアクセスする プログラムを、非常に簡単に書く事ができる。ソースコードはこちらのリポジトリ参照 http…