The version 1.0, released at xx-Jun-2016, is the first release of PG-Strom which enables to off-load PostgreSQL's query processing workloads to GPUs transparently. 2016-06-xxにリリースされたv1.0は、PostgreSQLクエリ処理を透過的にGPUへオフロードする事で高速化する拡張モジュールPG-Stromの最初のリリースとなります。
Its main target is early adopters who are interested in new technology, and it fits the evaluation and validation for GPU opportunity in database area. 新しい技術に関心の高いアーリーアダプタ層を主たるターゲットとしており、データベース領域におけるGPUの適用可能性の評価・検証に適します。
Because of evolution of semiconductor technology, it became commodity to mount a few hundred to a few thousands processing cores per chip and ultra wide band RAM more than a few hundred gigabytes per second; that is supercomputer grade performance in the past, but personal individuals can get nowadays. PG-Strom is designed to break limitations of existing system's performance with less tuning by hand and inexpensive cost, by applying these GPU's capabilities to the query processing area, without modification of existing operations and environment of PostgreSQL; it means no modification for existing applications and schema definitions on database. 半導体技術の進化に伴い、GPUはワンチップに数百~数千並列コアと数百GB/sの広帯域RAMの搭載が一般的になり、かつてはスーパーコンピューター水準の性能とされていた処理能力が、個人の手にも届く水準となってきました。 PG-StromはこのようなGPUの計算能力をクエリ処理の分野に適用する事で、既存のPostgreSQL運用環境に手を加えることなく(つまり、既存のアプリケーションやデータ構造を修正なく使い続けるという条件下で)、チューニングレスかつ安価に性能上の限界を突破する事を意図して設計されています。
The code technology of PG-Strom is: (1) a code generator that construct GPU binary to process the supplied SQL workloads, and (2) asynchronous execution engine that processes per data chunk that contains about the tens of thousands to the hundreds of thousands rows. PostgreSQL v9.5 newly supports a feature of CustomScan/Join interface; which enables PG-Strom to implement these features as a pure extension, with no patch and modification to the PostgreSQL side. PG-Stromの中核となる技術は、①入力されたSQLワークロードを処理するGPU用バイナリを生成するコードジェネレータ、②数万~数十万行程度のデータチャンク単位で非同期処理を行う実行エンジンの2つです。 PostgreSQL v9.5で新たに対応した CustomScan Interface に対応する事で、PostgreSQL側にはパッチ等を適用することなく、純粋な拡張モジュールとしてこれらの機能を実装する事が可能となりました。
PG-Stromのバージョン番号は pg_strom-x.y という2つの数字の組による形式で表現されます。xをメジャーバージョン、yをマイナーバージョンと呼びます。
メジャーバージョンの変更を伴うバージョンアップでは、新機能の追加や強化(場合によっては従来バージョンとの非互換を伴う)、動作環境への要件(例えば前提となるPostgreSQLやCUDAバージョンの変更)事があります。 従来のバージョンで動作していたSQLクエリやPL/CUDA関数が、必ずしも新バージョンではそのまま利用できるとは限りません。
マイナーバージョンの変更を伴うバージョンアップでは、バグ修正のみが行われます。データベースに保存されたデータのフォーマットや、SQL関数のシグネチャ、SQL構文などへの変更はありません。 したがって、PG-Stromモジュールを更新してPostgreSQLを再起動するだけでバージョンアップが完了する事を目指しています。
The PG-Strom Development Team has the support policy below. PG-Strom各バージョンのリリースに際して、PG-Strom Development Teamは次のような保守ポリシーを持っています。
On the minor version up, our supported version will switch to the newer version soon. For example, when the v1.0 is updated to the v1.1, the older v1.0 will become unsupported. On the bug report to the community, please ensure your problem is reproducible on the latest version. マイナーバージョンアップに際しては、最新版のみがサポート対象へと切り替わります。例えば、v1.0からv1.1へのバージョンアップが行われた段階で、古いv1.0はサポートの対象から外れます。コミュニティにバグ報告を行う際には、最新版において再現する問題である事を確認してください。
On major version up, we will support the older version for three months since the day of new version's release, then, the older version will become end of line status. We don't guarantee the compatibility with the older version on major version up, we position the 3 months window as time for transitional period. メジャーバージョンアップに際しては、新しいバージョンのリリース後、3ヵ月間は旧バージョンもサポートの対象となります。しかし、それ以降は旧バージョンはEOLとなります。 メジャーバージョンアップに際しては必ずしも旧バージョンとの互換を担保していないため、我々はこれを移行期間として位置付けています。