GPU由於其特殊的硬體架構,在處理計算密集型、易於並行的程式上較CPU有很大的優勢。
加速原理
資料庫中GPU並行加速是指對象級的並行,將單個欄位的對象轉換為適合并行計算的模型,利用GPU超多核心的能力並行計算。
注意事項
對於並發數較大的情境,單個GPU裝置會存在資源受限的情況,所以建議在會話中關閉GPU加速計算功能。
使用方法
GanosBase是通過檢測GPU裝置自動開啟GPU加速計算,在實現函數上沒有額外的參數設定,加速計算做到使用者透明無感知。同時GanosBase提供會話級控制許可權,由使用者決定是否啟用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 environment, cuda_errorcode=35, errormsg=CUDA driver version is insufficient for CUDA runtime version. (1 row)
說明只有帶GPU裝置的環境才能啟用GPU加速計算。
開啟和關閉會話級GPU使用狀態。
如果是帶有GPU裝置的環境,GanosBase預設開啟GPU加速計算,如果此時想關閉GPU加速計算,直接使用原來的CPU計算模式,則在會話中執行
set ganos.raster.use_cuda=off:rasterdb=# 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)
GanosBase中實現GPU加速計算的模組。
說明目前GPU加速計算僅在GanosBase的Raster模組中應用實現,後續會增加Trajectory、Geometry模組的應用實現。