[请益] 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