GPU由于其特殊的硬件架构,在处理计算密集型、易于并行的程序上较CPU有很大的优势。
加速原理
数据库中GPU并行加速是指对象级的并行,将单个字段的对象转换为适合并行计算的模型,利用GPU超多核心的能力并行计算,其并行计算示意图如下。
注意事项
对于并发数较大的场景,单个GPU设备会存在资源受限的情况,所以建议在会话中关闭GPU加速计算功能。
使用方法
Ganos是通过检测GPU设备自动开启GPU加速计算,在实现函数上没有额外的参数设置,加速计算做到用户透明无感知;同时Ganos提供会话级控制权限,由用户决定是否启用GPU加速计算。
- 确认当前环境是否有GPU设备。
- 创建ganos_raster扩展
create extension ganos_raster cascade
。 - 执行SQL语句
select st_checkgpu()
。- 当前环境检测到GPU设备,成功返回GPU设备信息。
rasterdb=# select st_checkgpu(); st_checkgpu ------------------------------------------------------------------------------------------------------------------------------ [GPU(0) prop]multiProcessorCount=20; sharedMemPerBlock=49152; totalGlobalMem=-608239616; maxThreadsPerBlock=1024; maxThreadsPerMultiProcessor=2048; cudaThreadGetLimit=1024 . (1 row)
- 当前环境未检测到GPU设备,则返回错误信息。
rasterdb=# select st_checkgpu(); st_checkgpu ------------------------------------------------------------------------------------------------------------------------------------------ There is not gpu device on current enviroment, cuda_errorcode=35, errormsg=CUDA driver version is insufficient for CUDA runtime version. (1 row)
说明 只有带GPU设备的环境才能启用GPU加速计算。 - 当前环境检测到GPU设备,成功返回GPU设备信息。
- 创建ganos_raster扩展
- 开启和关闭会话级GPU使用状态。
-
如果是带有GPU设备的环境,Ganos默认开启GPU加速计算,如果此时想关闭GPU加速计算,直接使用原来的CPU计算模式,则在会话中进行如下操作:
执行set ganos.raster.use_cuda=offrasterdb=# set ganos.raster.use_cuda=off; SET rasterdb=# show ganos.raster.use_cuda; ganos.raster.use_cuda ----------------------- off (1 row)
-
如果要重新开启GPU加速计算,执行set ganos.raster.use_cuda=on
rasterdb=# set ganos.raster.use_cuda=on; SET rasterdb=# show ganos.raster.use_cuda; ganos.raster.use_cuda ----------------------- on (1 row)
-
- Ganos中实现GPU加速计算的模块。
说明 目前GPU加速计算仅在Ganos的Raster模块中应用实现,后续会增加Trajectory、Geometry模块的应用实现。