Supported Data Types

PG-Strom support the following data types for use on GPU device.

Built-in numeric types

SQL data types Internal format Length Memo
smallint cl_short 2 bytes
integer cl_int 4 bytes
bigint cl_long 8 bytes
real cl_float 4 bytes
float cl_double 8 bytes
numeric cl_ulong variable length mapped to 64bit internal format

Note

When GPU processes values in numeric data type, it is converted to an internal 64bit format because of implementation reason. It is transparently converted to/from the internal format, on the other hands, PG-Strom cannot convert numaric datum with large number of digits, so tries to fallback operations by CPU. Therefore, it may lead slowdown if numeric data with large number of digits are supplied to GPU device. To avoid the problem, turn off the GUC option pg_strom.enable_numeric_type not to run operational expression including numeric data types on GPU devices.

Built-in date and time types

SQL data types Internal format Length Memo
date DateADT 4 bytes
time TimeADT 8 bytes
timetz TimeTzADT 12 bytes
timestamp Timestamp 8 bytes
timestamptz TimestampTz 8 bytes
interval Interval 16 bytes

Built-in variable length types

SQL data types Internal format Length Memo
bpchar varlena * variable length
varchar varlena * variable length
bytea varlena * variable length
text varlena * variable length

Built-in miscellaneous types

SQL data types Internal format Length Memo
boolean cl_bool 1 byte
money cl_long 8 bytes
uuid pg_uuid 16 bytes
macaddr macaddr 6 bytes
inet inet_struct 7 bytes or 19 bytes
cidr inet_struct 7 bytes or 19 bytes

Built-in range data types

SQL data types Internal format Length Memo
int4range __int4range 14 bytes
int8range __int8range 22 bytes
tsrange __tsrange 22 bytes
tstzrange __tstzrange 22 bytes
daterange __daterange 14 bytes

Extra Types

SQL data types Internal format Length Memo
float2 half_t 2 bytes Half precision data type
reggstore cl_uint 4 bytes Specific version of regclass for gstore_fdw. Special handling at PL/CUDA function invocation.

Device functions and operators

Type cast

destination type source type description
bool int4
int2 int4,int8,float2,float4,float8,numeric
int4 int2,int8,float2,float4,float8,numeric
int8 int2,int4,float2,float4,float8,numeric
float2 int2,int4,int8,float4,float8,numeric
float4 int2,int4,int8,float2,float8,numeric
float8 int2,int4,int8,float2,float4,numeric
numeric int2,int4,int8,float2,float4,float8
money int4,int8,numeric
inet cidr
date timestamp,timestamptz
time timetz,timestamp,timestamptz
timetz time,timestamptz
timestamp date,timestamptz
timestamptz date,timestamp

Functions and operators

Numeric functions/operators

function/operator description
TYPE = TYPE Comparison of two values
TYPE is any of int2,int4,int8
COMP is any of =,<>,<,<=,>=,>
TYPE = TYPE Comparison of two values
TYPE is any of float2,float4,float8
COMP is any of =,<>,<,<=,>=,>
numeric COMP numeric Comparison of two values
COMP is any of =,<>,<,<=,>=,>
TYPE + TYPE Arithemetic addition
TYPE is any of int2,int4,int8,float2,float4,float8,numeric
TYPE - TYPE Arithemetic substract
TYPE is any of int2,int4,int8,float2,float4,float8,numeric
TYPE * TYPE Arithemetic multiplication
TYPE is any of int2,int4,int8,float2,float4,float8,numeric
TYPE / TYPE Arithemetic division
TYPE is any of int2,int4,int8,float2,float4,float8,numeric
TYPE % TYPE Reminer operator
TYPE is any of int2,int4,int8
TYPE & TYPE Bitwise AND
TYPE is any of int2,int4,int8
TYPE | TYPE Bitwise OR
TYPE is any of int2,int4,int8
TYPE # TYPE Bitwise XOR
TYPE is any of int2,int4,int8
~ TYPE Bitwise NOT
TYPE is any if int2,int4,int8
TYPE >> int4 Right shift
TYPE is any of int2,int4,int8
TYPE << int4 Left shift
TYPE is any of int2,int4,int8
+ TYPE Unary plus
TYPE is any of int2,int4,int8,float2,float4,float8,numeric
- TYPE Unary minus
TYPE is any of int2,int4,int8,float2,float4,float8,numeric
@TYPE Absolute value
TYPE is any of int2,int4,int8,float2,float4,float8,numeric

Mathematical functions

functions/operators description
cbrt(float8) cube root
dcbrt(float8) cube root
ceil(float8) nearest integer greater than or equal to argument
ceiling(float8) nearest integer greater than or equal to argument
exp(float8) exponential
dexp(float8) exponential
floor(float8) nearest integer less than or equal to argument
ln(float8) natural logarithm
dlog1(float8) natural logarithm
log(float8) base 10 logarithm
dlog10(float8) base 10 logarithm
pi() circumference ratio
power(float8,float8) power
pow(float8,float8) power
dpow(float8,float8) power
round(float8) round to the nearest integer
dround(float8) round to the nearest integer
sign(float8) sign of the argument
sqrt(float8) square root
dsqrt(float8) square root
trunc(float8) truncate toward zero
dtrunc(float8) truncate toward zero

Trigonometric functions

functions/operators description
degrees(float8) radians to degrees
radians(float8) degrees to radians
acos(float8) inverse cosine
asin(float8) inverse sine
atan(float8) inverse tangent
atan2(float8,float8) inverse tangent of arg1 / arg2
cos(float8) cosine
cot(float8) cotangent
sin(float8) sine
tan(float8) tangent

Date and time operators

functions/operators description
date COMP date COMP is any of =,<>,<,<=,>=,>
date COMP timestamp COMP is any of =,<>,<,<=,>=,>
date COMP timestamptz COMP is any of =,<>,<,<=,>=,>
time COMP time COMP is any of =,<>,<,<=,>=,>
timetz COMP timetz COMP is any of =,<>,<,<=,>=,>
timestamp COMP timestamp COMP is any of =,<>,<,<=,>=,>
timestamp COMP date COMP is any of =,<>,<,<=,>=,>
timestamptz COMP timestamptz COMP is any of =,<>,<,<=,>=,>
timestamptz COMP date COMP is any of =,<>,<,<=,>=,>
timestamp COMP timestamptz COMP is any of =,<>,<,<=,>=,>
timestamptz COMP timestamp COMP is any of =,<>,<,<=,>=,>
interval COMP interval COMP is any of =,<>,<,<=,>=,>
date OP int4 OP is either of +,-
int4 + date
date - date
date + time
date + timetz
time + date
time - time
timestamp - timestamp
timetz OP interval OP is either of +,-
timestamptz OP interval OP is either of +,-
overlaps(TYPE,TYPE,TYPE,TYPE) TYPE is any of time,timetz,timestamp,timestamptz
extract(text FROM TYPE) TYPE is any of time,timetz,timestamp,timestamptz,interval
now()
- interval unary minus operator
interval OP interval OP is either of +,-

Text functions/operators

functions/operators description
{text,bpchar} COMP {text,bpchar} COMP is either of =,<>
{text,bpchar} COMP {text,bpchar} COMP is either of <,<=,>=,>
Only available on no-locale or UTF-8
length(TYPE) length of the string
TYPE is either of text,bpchar
TYPE LIKE text TYPE is either of text,bpchar
TYPE NOT LIKE text TYPE is either of text,bpchar
TYPE ILIKE text TYPE is either of text,bpchar
Only available on no-locale or UTF-8
TYPE NOT ILIKE text TYPE is either of text,bpchar
Only available on no-locale or UTF-8

Network functions/operators

functions/operators description
macaddr COMP macaddr COMP is any of =,<>,<,<=,>=,>
macaddr & macaddr Bitwise AND operator
macaddr | macaddr Bitwise OR operator
~ macaddr Bitwise NOT operator
trunc(macaddr) Set last 3 bytes to zero
inet COMP inet COMP is any of =,<>,<,<=,>=,>
inet INCL inet INCL is any of <<,<<=,>>,>>=,&&
~ inet
inet & inet
inet | inet
inet + int8
inet - int8
inet - inet
broadcast(inet)
family(inet)
hostmask(inet)
masklen(inet)
netmask(inet)
network(inet)
set_masklen(cidr,int)
set_masklen(inet,int)
inet_same_family(inet, inet)
inet_merge(inet,inet)

Currency operators

functions/operators description
money COMP money COMP is any of =,<>,<,<=,>=,>
money OP money OP is any of +,-,/
money * TYPE TYPE is any of int2,int4,float2,float4,float8
TYPE * money TYPE is any of int2,int4,float2,float4,float8
money / TYPE TYPE is any of int2,int4,float2,float4,float8

UUID operators

functions/operators description
uuid COMP uuid COMP is any of =,<>,<,<=,>=,>

Range type functions/operators

functions/operators description
RANGE = RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
RANGE <> RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
RANGE < RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
RANGE <= RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
RANGE > RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
RANGE >= RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
RANGE @ RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
RANGE @ TYPE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
TYPE is element type of RANGE.
RANGE <@RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
TYPE <@RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
TYPE is element type of RANGE.
RANGE && RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
RANGE << RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
RANGE >> RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
RANGE &< RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
RANGE &> RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
RANGE -|- RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
RANGE + RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
RANGE * RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
RANGE - RANGE RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
lower(RANGE) RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
upper(RANGE) RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
isempty(RANGE) RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
lower_inc(RANGE) RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
upper_inc(RANGE) RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
lower_inf(RANGE) RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
upper_inf(RANGE) RANGE is any of int4range,int8range,tsrange,tstzrange,daterange
range_merge(RANGE,RANGE) RANGE is any of int4range,int8range,tsrange,tstzrange,daterange

Miscellaneous device functions

functions/operators result description
as_int8(float8) int8 Re-interpret double-precision floating point bit-pattern as 64bit integer value
as_int4(float4) int4 Re-interpret single-precision floating point bit-pattern as 32bit integer value
as_int2(float2) int2 Re-interpret half-precision floating point bit-pattern as 16bit integer value
as_float8(int8) float8 Re-interpret 64bit integer bit-pattern as double-precision floating point value
as_float4(int4) float4 Re-interpret 32bit integer bit-pattern as single-precision floating point value
as_float2(int2) float2 Re-interpret 16bit integer bit-pattern as half-precision floating point value

PG-Strom Specific SQL functions

This section introduces SQL functions which are additionally provided by PG-Strom.

Device Information

Function Result Description
gpu_device_name(int = 0) text It tells name of the specified GPU device.
gpu_global_memsize(int = 0) bigint It tells amount of the specified GPU device in bytes.
gpu_max_blocksize(int = 0) int It tells maximum block-size on the specified GPU device. 1024, in the currently supported GPU models.
gpu_warp_size(int = 0) int It tells warp-size on the specified GPU device. 32, in the currently supported GPU models.
gpu_max_shared_memory_perblock(int = 0) int It tells maximum shared memory size per block on the specified GPU device.
gpu_num_registers_perblock(int = 0) int It tells total number of registers per block on the specified GPU device.
gpu_num_multiptocessors(int = 0) int It tells number of SM(Streaming Multiprocessor) units on the specified GPU device.
gpu_num_cuda_cores(int = 0) int It tells number of CUDA cores on the specified GPU device.
gpu_cc_major(int = 0) int It tells major CC(Compute Capability) version of the specified GPU device.
gpu_cc_minor(int = 0) int It tells minor CC(Compute Capability) version of the specified GPU device.
gpu_pci_id(int = 0) int It tells PCI bus-id of the specified GPU device.

Array-based matrix support

You can use array data type of PostgreSQL to deliver matrix-data for PL/CUDA functions. A two-dimensional array of fixed-length boolean/numeric values without NULL has flat data structure (expect for the array header). It allows to identify the address of elements by indexes of the matrix uniquely. PG-Strom provides several SQL functions to handle array-based matrix.

Type cast

destination type source type description
int[] bit convert bit-string to 32bit integer array. Unaligned bits are filled up by 0.
bit int[] convert 32bit integer to bit-string

Array-based matrix functions

functions/operators result description
array_matrix_validation(anyarray) bool It checks whether the supplied array satisfies the requirement of array-based matrix.
array_matrix_height(anyarray) int It tells height of the array-based matrix.
array_matrix_width(anyarray) int It tells width of the array-based matrix.
array_vector_rawsize(regtype,int) bigint It tells expected size if N-items vector is created with the specified type.
array_matrix_rawsize(regtype,int,int) bigint It tells expected size if HxW matrix is created with the specified type.
array_cube_rawsize(regtype,int,int,int) bigint It tells expected size if HxWxD cube is created with the specified type.
type_len(regtype) bigint It tells unit length of the specified type.
composite_type_rawsize(LEN,...) bigint It tells expected size of the composite type if constructed with the specified data-length order. We expect to use the function with type_len()
LEN is either of int,bigint
matrix_unnest(anyarray) record It is a function to return set, to fetch rows from top of the supplied array-based matrix. PostgreSQL has no type information of the record, so needs to give type information using ROW() clause.
rbind(MATRIX,MATRIX) MATRIX It combines two array-based matrix vertically.
MATRIX is array type of any of bool,int2,int4,int8,float4,float8
rbind(TYPE,MATRIX) MATRIX It adds a scalar value on head of the array-based matrix. If multiple columns exist, the scalar value shall be set on all the column of the head row.
MATRIX is array type of any of bool,int2,int4,int8,float4,float8.
TYPE is element of MATRIX
rbind(MATRIX,TYPE) MATRIX It adds a scalar value on bottom of the array-based matrix. If multiple columns exist, the scalar value shall be set on all the column of the bottom row.MATRIX is array type of any of bool,int2,int4,int8,float4,float8
TYPE is element type of MATRIX
cbind(MATRIX,MATRIX) MATRIX It combines two array-based matrix horizontally.
MATRIX is array type of any of bool,int2,int4,int8,float4,float8
cbind(TYPE,MATRIX) MATRIX It adds a scalar value on left of the array-based matrix. If multiple rows exist, the scalar value shall be set on all the rows of the left column.
MATRIX is array type of any of bool,int2,int4,int8,float4,float8
TYPE is element type of MATRIX
cbind(MATRIX,TYPE) MATRIX It adds a scalar value on right of the array-based matrix. If multiple rows exist, the scalar value shall be set on all the rows of the right column.
MATRIX is array type of any of bool,int2,int4,int8,float4,float8.
TYPE is element type of MATRIX
transpose(MATRIX) MATRIX It transposes the array-based matrix.
MATRIX is array type of any of bool,int2,int4,int8,float4,float8

Aggregate functions

functions/operators result description
array_matrix(TYPE,...) TYPE[] An aggregate function with varidic arguments. It produces M-cols x N-rows array-based matrix if N-rows were supplied with M-columns.
TYPE is any of bool,int2,int4,int8,float4,float8
array_matrix(bit) bit[] An aggregate function to produce int4[] array-based matrix. It considers bit-string as a set of 32bits integer values.
rbind(MATRIX) MATRIX An aggregate function to combine the supplied array-based matrix vertically.
MATRIX is array type of any of bool,int2,int4,int8,float4,float8
cbind(MATRIX) MATRIX An aggregate function to combine the supplied array-based matrix horizontally.MATRIX is array type of any of bool,int2,int4,int8,float4,float8

Miscellaneous functions

Function Result Description
pgstrom_ccache_enabled(regclass) text Enables in-memory columnar cache on the specified table.
pgstrom_ccache_disabled(regclass) text Disables in-memory columnar cache on the specified table.
pgstrom_ccache_prewarm(regclass) int Build in-memory columnar cache on the specified table synchronously, until cache usage is less than the threshold.
Function Result Description
gstore_fdw_format(reggstore) text It tells internal format of the specified gstore_fdw foreign table.
gstore_fdw_nitems(reggstore) bigint It tells number of rows of the specified gstore_fdw foreign table.
gstore_fdw_nattrs(reggstore) bigint It tells number of columns of the specified gstore_fdw foreign table.
gstore_fdw_rawsize(reggstore) bigint It tells raw size of the specified gstore_fdw foreign table in bytes.
Function Result Description
gstore_export_ipchandle(reggstore) bytea It tells IPC-handle of the GPU device memory region of the specified gstore_fdw foreign table.
lo_import_gpu(int, bytea, bigint, bigint, oid=0) oid It maps GPU device memory region acquired by external application, then import its contents into a largeobject.
lo_export_gpu(oid, int, bytea, bigint, bigint) bigint It maps GPU device memory region acquired by external application, then export contents of the specified largeobject into the region.
Function Result Description
plcuda_kernel_max_blocksz int It tells maximum block size of the GPU kernel of PL/CUDA function when it is called as its helper.
plcuda_kernel_static_shmsz() int It tells size of the statically acquired shared memory per block by the GPU kernel of PL/CUDA function when it is called as its helper.
plcuda_kernel_dynamic_shmsz() int It tells size of the dynamic shared memory per block, which GPU kernel of the PL/CUDA function can allocate, when it is called as its helper.
plcuda_kernel_const_memsz() int It tells size of the constant memory acquired by the GPU kernel of PL/CUDA function, when it is called as its helper.
plcuda_kernel_local_memsz() int It tells size of the local memory per thread acquired by the GPU kernel of PL/CUDA function, when it is called as its helper.
Function Result Description
pgstrom.license_validation() text It validates commercial subscription.
pgstrom.license_query() text It shows the active commercial subscription.

System View

PG-Strom provides several system view to export its internal state for users or applications. The future version may add extra fields here. So, it is not recommended to reference these information schemas using SELECT * FROM ....

pgstrom.device_info

pgstrom.device_into system view exports device attributes of the GPUs recognized by PG-Strom. GPU has different specification for each model, like number of cores, capacity of global memory, maximum number of threads and etc, user's software should be optimized according to the information if you try raw GPU programming with PL/CUDA functions.

Name Data Type Description
device_nr int GPU device number
aindex int Attribute index
attribute text Attribute name
value text Value of the attribute

pgstrom.device_preserved_meminfo

pgstrom.device_preserved_meminfo system view exports information of the preserved device memory; which can be shared multiple PostgreSQL backend. Right now, only gstore_fdw uses this feature.

Name Data Type Description
device_nr int GPU device number
handle bytea IPC handle of the preserved device memory
owner regrole Owner of the preserved device memory
length bigint Length of the preserved device memory in bytes
ctime timestamp with time zone Timestamp when the preserved device memory is created

pgstrom.ccache_info

pgstrom.ccache_info system view exports attribute of the columnar-cache chunks (128MB unit for each).

Name Data Type Description
database_id oid Database Id
table_id regclass Table Id
block_nr int Head block-number of the chunk
nitems bigint Number of rows in the chunk
length bigint Raw size of the cached chunk
ctime timestamp with time zone Timestamp of the chunk creation
atime timestamp with time zone Timestamp of the least access to the chunk

pgstrom.ccache_builder_info

pgstrom.ccache_builder_info system view exports information of asynchronous builder process of columnar cache.

Name Data Type Description
builder_id int Asynchronous builder Id of columnar cache
state text State of the builder process (shutdown, startup, loading or sleep)
database_id oid Database Id where builder process is assigned on
table_id regclass Table Id where the builder process is scanning on, if state is loading.
block_nr int Block number where the builder process is scanning on, if state is loading.

GUC Parameters

This session introduces PG-Strom's configuration parameters.

Enables/disables a particular feature

Parameter Type Default Description
pg_strom.enabled bool on Enables/disables entire PG-Strom features at once
pg_strom.enable_gpuscan bool on Enables/disables GpuScan
pg_strom.enable_gpuhashjoin bool on Enables/disables GpuJoin by HashJoin
pg_strom.enable_gpunestloop bool on Enables/disables GpuJoin by NestLoop
pg_strom.enable_gpupreagg bool on Enables/disables GpuPreAgg
pg_strom.pullup_outer_scan bool on Enables/disables to pull up full-table scan if it is just below GpuPreAgg/GpuJoin, to reduce data transfer between CPU/RAM and GPU.
pg_strom.pullup_outer_join bool on Enables/disables to pull up tables-join if GpuJoin is just below GpuPreAgg, to reduce data transfer between CPU/RAM and GPU.
pg_strom.enable_numeric_type bool on Enables/disables support of numeric data type in arithmetic expression on GPU device
pg_strom.cpu_fallback bool off Controls whether it actually run CPU fallback operations, if GPU program returned "CPU ReCheck Error"
pg_strom.nvme_strom_enabled bool on Enables/disables the feature of SSD-to-GPU Direct SQL Execution
pg_strom.nvme_strom_threshold int 自動 Controls the table-size threshold to invoke the feature of SSD-to-GPU Direct SQL Execution

Optimizer Configuration

Parameter Type Default Description
pg_strom.chunk_size int 65534kB Size of the data blocks processed by a single GPU kernel invocation. It was configurable, but makes less sense, so fixed to about 64MB in the current version.
pg_strom.gpu_setup_cost real 4000 Cost value for initialization of GPU device
pg_strom.gpu_dma_cost real 10 Cost value for DMA transfer over PCIe bus per data-chunk (64MB)
pg_strom.gpu_operator_cost real 0.00015 Cost value to process an expression formula on GPU. If larger value than cpu_operator_cost is configured, no chance to choose PG-Strom towards any size of tables

Executor Configuration

Parameter Type Default Description
pg_strom.global_max_async_tasks int 160 Number of asynchronous taks PG-Strom can throw into GPU's execution queue in the whole system.
pg_strom.local_max_async_tasks int 8 Number of asynchronous taks PG-Strom can throw into GPU's execution queue per process. If CPU parallel is used in combination, this limitation shall be applied for each background worker. So, more than pg_strom.local_max_async_tasks asynchronous tasks are executed in parallel on the entire batch job.
pg_strom.max_number_of_gpucontext int auto Specifies the number of internal data structure GpuContext to abstract GPU device. Usually, no need to expand the initial value.

Columnar Cache Configuration

Parameter Type Default Description
pg_strom.ccache_base_dir string '/dev/shm' Specifies the directory path to store columnar cache data files. Usually, no need to change from /dev/shm where tmpfs is mounted at.
pg_strom.ccache_databases string '' Specified the target databases for asynchronous columnar cache build, in comma separated list. It does not affect to the manual cache build by pgstrom_ccache_prewarm().
pg_strom.ccache_num_builders int 2 Specified the number of worker processes for asynchronous columnar cache build. It needs to be larger than or equeal to the number of databases in pg_strom.ccache_databases.
pg_strom.ccache_log_output bool false Controls whether columnar cache builder prints log messages, or not
pg_strom.ccache_total_size int auto Upper limit of the columnar cache in kB. Default is the smaller in 75% of volume size or 66% of system physical memory.

gstore_fdw Configuration

Parameter Type Default Description
pg_strom.gstore_max_relations int 100 Upper limit of the number of foreign tables with gstore_fdw. It needs restart to update the parameter.

Configuration of GPU code generation and build

Parameter Type Default Description
pg_strom.program_cache_size int 256MB Amount of the shared memory size to cache GPU programs already built. It needs restart to update the parameter.
pg_strom.num_program_builders int 2 Number of background workers to build GPU programs asynchronously. It needs restart to update the parameter.
pg_strom.debug_jit_compile_options bool off Controls to include debug option (line-numbers and symbol information) on JIT compile of GPU programs. It is valuable for complicated bug analysis using GPU core dump, however, should not be enabled on daily use because of performance degradation.
pg_strom.debug_kernel_source bool off If enables, EXPLAIN VERBOSE command also prints out file paths of GPU programs written out.

GPU Device Configuration

Parameter Type Default Description
pg_strom.cuda_visible_devices string '' List of GPU device numbers in comma separated, if you want to recognize particular GPUs on PostgreSQL startup. It is equivalent to the environment variable CUDAVISIBLE_DEVICES
pg_strom.gpu_memory_segment_size int 512MB Specifies the amount of device memory to be allocated per CUDA API call. Larger configuration will reduce the overhead of API calls, but not efficient usage of device memory.
pg_strom.max_num_preserved_gpu_memory int 2048 Upper limit of the number of preserved GPU device memory segment. Usually, don't need to change from the default value.