This chapter introduces the overview of PG-Strom, and developer's community.

What is PG-Strom?

PG-Strom is an extension module of PostgreSQL designed for version 9.6 or later. By utilization of GPU (Graphic Processor Unit) device which has thousands cores per chip, it enables to accelerate SQL workloads for data analytics or batch processing to big data set.

Its core features are GPU code generator that automatically generates GPU program according to the SQL commands and asynchronous parallel execution engine to run SQL workloads on GPU device. The latest version supports SCAN (evaluation of WHERE-clause), JOIN and GROUP BY workloads. In the case when GPU-processing has advantage, PG-Strom replaces the vanilla implementation of PostgreSQL and transparentlly works from users and applications.

Unlike some DWH systems, PG-Strom shares the storage system of PostgreSQL which saves data in row-format. It is not always best choice for summary or analytics workloads, however, it is also an advantage as well. Users don't need to export and transform the data from transactional database for processing.

PG-Strom v2.0 enhanced the capability of reading from storage. SSD-to-GPU Direct SQL mechanism allows to load from storage (NVME-SSD) to GPU directly, and supply data to GPU that runs SQL workloads.

On the other hands, the feature of PL/CUDA and gstore_fdw allows to run highly computing density problems, like advanced statistical analytics or machine learning, on the database management system, and to return only results to users.

PG-Strom is an open source software distributed under the GPL(GNU Public License) v2. See LICENSE for the license details.

PG-Strom Development Team reserves the copyright of the software. PG-Strom Development Team is an international, unincorporated association of individuals and companies who have contributed to the PG-Strom project, but not a legal entity.


We have a community mailing-list at: PG-Strom community ML It is a right place to post questions, requests, troubles and etc, related to PG-Strom project.

Please pay attention it is a public list for world wide. So, it is your own responsibility not to disclose confidential information.

The primary language of the mailing-list is English. On the other hands, we know major portion of PG-Strom users are Japanese because of its development history, so we admit to have a discussion on the list in Japanese language. In this case, please don't forget to attach (JP) prefix on the subject like, for non-Japanese speakers to skip messages.

Bug or troubles report

If you got troubles like incorrect results, system crash / lockup, or something strange behavior, please open a new issue with bug tag at the PG-Strom Issue Tracker.

Please ensure the items below on bug reports.

  • Whether you can reproduce the same problem on the latest revision?
    • Hopefully, we recommend to test on the latest OS, CUDA, PostgreSQL and related software.
  • Whether you can reproduce the same problem if PG-Strom is disabled?
    • GUC option pg_strom.enabled can turn on/off PG-Strom.
  • Is there any known issues on the issue tracker of GitHub?
    • Please don't forget to search closed issues

The information below are helpful for bug-reports.

  • Output of EXPLAIN VERBOSE for the queries in trouble.
  • Data structure of the tables involved with \d+ <table name> on psql command.
  • Log messages (verbose messages are more helpful)
  • Status of GUC options you modified from the default configurations.
  • Hardware configuration - GPU model and host RAM size especially.

If you are not certain whether the strange behavior on your site is bug or not, please report it to the mailing-list prior to the open a new issue ticket. Developers may be able to suggest you next action - like a request for extra information.

New features proposition

If you have any ideas of new features, please open a new issue with feature tag at the PG-Strom Issue Tracker, then have a discussion with other developers.

A preferable design proposal will contain the items below.

  • What is your problem to solve / improve?
  • How much serious is it on your workloads / user case?
  • Way to implement your idea?
  • Expected downside, if any.

Once we could make a consensus about its necessity, coordinator will attach accepted tag and the issue ticket is used to track rest of the development. Elsewhere, the issue ticket got rejected tag and closed.

Once a proposal got rejected, we may have different decision in the future. If comprehensive circumstance would be changed, you don't need to hesitate revised proposition again.

On the development stage, please attach patch file on the issue ticket. We don't use pull request.

Support Policy

The PG-Strom development team will support the latest release which are distributed from the HeteroDB Software Distribution Center only. So, people who met troubles needs to ensure the problems can be reproduced with the latest release.

Please note that it is volunteer based community support policy, so our support is best effort and no SLA definition.

If you need commercial support, contact to HeteroDB,Inc (contact@heterodbcom).

Versioning Policy

PG-Strom's version number is consists of two portion; major and minor version. <major>.<minor>

Its minor version shall be incremented for each release; including bug fixes and new features. Its major version shall be incremented in the following situation.

  • Some of supported PostgreSQL version gets deprecated.
  • Some of supported GPU devices gets deprecated.
  • New version adds epoch making features.