SQLオブジェクト
本章ではPG-Stromが独自に提供するSQLオブジェクトについて説明します。
デバイス情報関数
関数 | 戻り値 | 説明 |
---|---|---|
gpu_device_name(int = 0) |
text |
指定したGPUデバイスの名前を返します |
gpu_global_memsize(int = 0) |
bigint |
指定したGPUデバイスのデバイスメモリ容量を返します |
gpu_max_blocksize(int = 0) |
int |
指定したGPUデバイスにおけるブロックサイズの最大値を返します。現在サポート対象のGPUでは1024です。 |
gpu_warp_size(int = 0) |
int |
指定したGPUデバイスにおけるワープサイズを返します。現在サポート対象のGPUでは32です。 |
gpu_max_shared_memory_perblock(int = 0) |
int |
指定したGPUデバイスにおけるブロックあたり共有メモリの最大値を返します。 |
gpu_num_registers_perblock(int = 0) |
int |
指定したGPUデバイスにおけるブロックあたりレジスタ数を返します。 |
gpu_num_multiptocessors(int = 0) |
int |
指定したGPUデバイスにおけるSM(Streaming Multiprocessor)ユニットの数を返します。 |
gpu_num_cuda_cores(int = 0) |
int |
指定したGPUデバイスにおけるCUDAコア数を返します。 |
gpu_cc_major(int = 0) |
int |
指定したGPUデバイスのCC(Compute Capability)メジャーバージョンを返します。 |
gpu_cc_minor(int = 0) |
int |
指定したGPUデバイスのCC(Compute Capability)マイナーバージョンを返します。 |
gpu_pci_id(int = 0) |
int |
指定したGPUデバイスが接続されているPCIバスIDを返します。 |
Arrow_Fdw関連
関数 | 戻り値 | 説明 |
---|---|---|
pgstrom.arrow_fdw_truncate(regclass) |
bool |
指定されたArrow_Fdw外部テーブルの内容を全て消去します。Arrow_Fdw外部テーブルはwritable である必要があります。 |
GPUデータフレーム関数
関数 | 戻り値 | 説明 |
---|---|---|
pgstrom.arrow_fdw_export_cupy(regclass, text[], int) |
text |
指定された列のArrow_Fdw外部テーブルの内容をcuPyのデータフレーム(cupy.ndarray )としてエクスポートします。GPUバッファはセッション終了時に自動的に解放されます。 |
pgstrom.arrow_fdw_export_cupy_pinned(regclass, text[], int) |
text |
指定された列のArrow_Fdw外部テーブルの内容をcuPyのデータフレーム(cupy.ndarray )としてエクスポートします。GPUバッファはピンニングされ、セッション終了後も有効です。 |
pgstrom.arrow_fdw_put_gpu_buffer(text) |
bool |
上記の関数でエクスポートされたGPUバッファを解放します。 |
pgstrom.arrow_fdw_unpin_gpu_buffer(text) |
bool |
上記の関数でエクスポートされたGPUバッファのピンニングを解除します。 |
テストデータ生成関数
関数 | 戻り値 | 説明 |
---|---|---|
pgstrom.random_setseed(int) |
void |
乱数の系列を初期化します。 |
pgstrom.random_int(float=0.0, bigint=0, bigint=INT_MAX) |
bigint |
bigint 型のランダムデータを指定の範囲内で生成します。 |
pgstrom.random_float(float=0.0, float=0.0, float=1.0) |
float |
float 型のランダムデータを指定の範囲内で生成します。 |
pgstrom.random_date(float=0.0, date='2015-01-01', date='2025-12-31') |
date |
date 型のランダムデータを指定の範囲内で生成します。 |
pgstrom.random_time(float=0.0, time='00:00:00', time='23:59:59') |
time |
time 型のランダムデータを指定の範囲内で生成します。 |
pgstrom.random_timetz(float=0.0, time='00:00:00', time='23:59:59') |
timetz |
timetz 型のランダムデータを指定の範囲内で生成します。 |
pgstrom.random_timestamp(float=0.0, timestamp='2015-01-01', timestamp='2025-01-01') |
timestamp |
timestamp 型のランダムデータを指定の範囲内で生成します。 |
pgstrom.random_macaddr(float=0.0, macaddr='ab:cd:00:00:00', macaddr='ab:cd:ff:ff:ff:ff') |
macaddr |
macaddr 型のランダムデータを指定の範囲内で生成します。 |
pgstrom.random_inet(float=0.0, inet='192.168.0.1/16') |
inet |
inet 型のランダムデータを指定の範囲内で生成します。 |
pgstrom.random_text(float=0.0, text='test_**') |
text |
text 型のランダムデータを生成します。第二引数の'*'文字をランダムに置き換えます。 |
pgstrom.random_text_len(float=0.0, int=10) |
text |
text 型のランダムデータを指定文字列長の範囲内で生成します。 |
pgstrom.random_int4range(float=0.0, bigint=0, bigint=INT_MAX) |
int4range |
int4range 型のランダムデータを指定の範囲内で生成します。 |
pgstrom.random_int8range(float=0.0, bigint=0, bigint=LONG_MAX) |
int8range |
int8range 型のランダムデータを指定の範囲内で生成します。 |
pgstrom.random_tsrange(float=0.0, timestamp='2015-01-01', timestamp='2025-01-01') |
tsrange |
tsrange 型のランダムデータを指定の範囲内で生成します。 |
pgstrom.random_tstzrange(float=0.0, timestamptz='2015-01-01', timestamptz='2025-01-01') |
tstzrange |
tstzrange 型のランダムデータを指定の範囲内で生成します。 |
pgstrom.random_daterange(float=0.0, date='2015-01-01', date='2025-12-31') |
daterange |
daterange 型のランダムデータを指定の範囲内で生成します。 |
その他の関数
関数 | 戻り値 | 説明 |
---|---|---|
pgstrom.license_query() |
text |
現在ロードされている商用サブスクリプションを表示します。 |
システムビュー
PG-Stromは内部状態をユーザやアプリケーションに出力するためのシステムビューをいくつか提供しています。
これらのシステムビューは将来のバージョンで情報が追加される可能性があります。そのため、アプリケーションからSELECT * FROM ...
によってこれらシステムビューを参照する事は避けてください。
pgstrom.device_info
pgstrom.device_info
システムビューは、PG-Stromが認識しているGPUのデバイス属性値を出力します。
GPUはモデルごとにコア数やメモリ容量、最大スレッド数などのスペックが異なっており、PL/CUDA関数などで直接GPUのプログラミングを行う場合には、これらの情報を元にソフトウェアを最適化する必要があります。
名前 | データ型 | 説明 |
---|---|---|
device_nr | int |
GPUデバイス番号 |
aindex | int |
属性インデックス |
attribute | text |
デバイス属性名 |
value | text |
デバイス属性値 |
pgstrom.device_preserved_meminfo
pgstrom.device_preserved_meminfo
システムビューは、複数のPostgreSQLバックエンドプロセスから共有するために予め確保済みのGPUデバイスメモリ領域の情報を出力します。
現在のところ、Arrow_FdwのPython連携機能がこれを使用しています。
名前 | データ型 | 説明 |
---|---|---|
device_nr | int |
GPUデバイス番号 |
handle | bytea |
確保済みGPUデバイスメモリのIPCハンドラ |
owner | regrole |
確保済みGPUデバイスメモリの作成者 |
length | bigint |
確保済みGPUデバイスメモリのバイト単位の長さ |
ctime | timestamp with time zone |
確保済みGPUデバイスメモリの作成時刻 |