[請益] GPU-based SQL 資料庫

作者: hn12404988 (Willy)   2016-08-04 16:16:32
想請教有沒有人有使用GPU加速SQL速度的經驗
雖然我還沒實作,但以下是我的猜測
(Centos 7, C++, CUDA in C++, MariaDB, CPU八核心)
﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍
程式的執行是由int main開始
接著併發一千個cuda thread, parse 「mysqlcppconn」 lib給每個thread
(mysqlcppconn 是一個mysql寫給C++ lib, mariadb也可用)
每個thread單獨連接mariadb,mariadb不設thread pool,也就是one thread per connection
cuda thread 執行完query, 返回結果給int main
﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍
根據我的猜測,以下這幾點是不是正確的呢?
1. mariadb的query 執行一樣是CPU,不管是直接c++呼叫,還是從一千個cuda thread
2. 根據1, 只是一千個query在CPU一直task switch
另外,上網查GPU-based的SQL, 好像SQLite目前有支援GPU執行
https://www.cs.virginia.edu/~skadron/Papers/bakkum_sqlite_gpgpu10.pdf
http://wscg.zcu.cz/wscg2014/Short%5CK17-full.pdf
我還沒時間仔細看,但直接看結論,似乎SQLite可以真正作到
把「SQLite」包在每個cuda thread,真的是同時執行一千個sql query
而不是還要透過CPU一層
希望可以聽到有經驗的人的分享,謝謝
作者: locklose (允)   2016-08-04 17:36:00
DB可以用udf把資料丟到cuda排序
作者: Litfal (Litfal)   2016-08-04 20:36:00
等你測試@@因為我覺得用in memory DB解決I/O bound或簡化改用NOSQL。資料庫bound不太容易在CPU吧
作者: nick5130 (沒看過新手喔)   2016-08-04 20:40:00
小弟拙見 參考看看 就我所知,cuda thread計算能力不比CPU 純粹是靠數量多撐起來的效能,那差別可能像國小跟大學生的程度,因為我並不清楚sql query真正在處理什麼但是可以預見的應該是很多條件判斷式,這對cuda thread來說是很難的事,速度會很慢 我猜應該是這個原因所以做的人很少,基本上gpgpu做的運算都是非常簡單的運算才會快得起來的我會認為如果同時有大量sql squery的需求才做這種研究要想透過GPU加速,你可能要先試試看單個cuda thread的
作者: arrenwu (鍵盤的戰鬼)   2016-08-04 20:44:00
我印象中GPGPU能執行的任務有滿大的限制
作者: nick5130 (沒看過新手喔)   2016-08-04 20:45:00
response time有多久,可以接受再繼續做會好一點GPGPU另外一個瓶頸在PCI-E的頻寬,除非資料量夠大也夠平行化,不然最簡單算上資料從記憶體複製到GPU,在用cudathread處理,這時間應該會是一個考量的點一點拙見 參考看看 如果有錯誤的地方還請指正
作者: Litfal (Litfal)   2016-08-04 20:50:00
我跟樓上想法差不多,補充一下,運算都簡單的話代表資料庫不複雜,那瓶頸改用NOSQL就能改善很多;複雜的話,GPGPU並不會比CPU更適合。所以我很好奇到底哪種情境會適合SQL。
作者: locklose (允)   2016-08-05 14:30:00
全文檢索?我覺得建metadata可能幫助比較大
作者: Litfal (Litfal)   2016-08-05 14:34:00
但是你想想,上千萬筆同時被query又沒索引,bound一定是在Disk而不會是運算單元阿。
作者: locklose (允)   2016-08-05 14:42:00
我是覺得可以參考SAP HANA full text search
作者: nick5130 (沒看過新手喔)   2016-08-05 21:36:00
提一點想法 你提到很簡單的query,但就是資料量很多多是多少?比GPU的記憶體還多嗎?如果是的話,會卡PCI-E一般GPU最多好像就12GB 應該很容易超過?那假設沒超過好了,我依舊認為雖然你認為簡單的操作,對CUDA thread來說應該是很難的事那如果以上都不考慮,先從簡單的等分資料就可以開始做吧

Links booklink

Contact Us: admin [ a t ] ucptt.com