我不知道是否MonetDB使用SIMD(单指令多数据),如果不是我可以如何实现它的过滤或聚合。是MonetDB使用SIMD指令
0
A
回答
0
对SIMD指令有一些实践经验我可以告诉你:这比你想象的要困难。编译器自动向量化的聚合是可行的,但是我怀疑GCC是否会这样做(它需要每个SIMD通道保留一个聚合并最终减少它)。我可以想象ICC会这样做。
过滤非常困难(甚至是手动)。问题是应用一个谓词是不够的 - 你必须压缩结果(即抛出不合格的值),并且还没有SIMD指令来做这件事(在AVX-2中)。有很多真正聪明的数据库人员在考虑如何手动完成这个工作,即使用内在函数。不幸的是,由此产生的代码不会进入MonetDB代码库,因为它们会导致可移植性问题。
在一个更一般的说明:你能简要解释你想解决什么问题吗?这看起来有点像纯粹的学术价值的(模糊定义的)班级任务。
1
我不知道MonetDB,但在大多数情况下,它会 - 只是因为现代编译器能够检测到可能被矢量化的特定构造。
但是,您的问题非常针对monetDB社区。阅读MonetDB源代码(它可以在monetDB主页上在线获得),找出想要优化的内容,并与维护该软件的人交谈。
一般来说,从你相对天真的提问方式来看,我会怀疑你能够为这样一个成熟的项目做出很多优化。
+0
谢谢,这意味着我需要为特定的平台/处理器架构进行编译,对吧? – GBrian 2015-03-31 20:52:55
相关问题
- 1. 调度SIMD指令+ SIMDPP + qmake
- 2. 从SIMD指令捕获SIGFPE
- 3. 平滑样条与SIMD指令
- 4. 为什么SIMD指令不在内核中使用?
- 5. 如何在CodeBlocks C中使用SIMD指令?
- 6. 使用SIMD指令可以进行3x3矩阵求逆吗?
- 7. 同时使用多个SIMD指令集的好处
- 8. 使用SIMD指令将代码转换为代码
- 9. GPGPU编程是否只允许执行SIMD指令?
- 10. 在Visual Studio 2015中检测要与C++宏一起使用的SIMD指令集
- 11. Monetdb-MonetDB是否是内存中的数据库?
- 12. 了解OpenMP 4.0将生成哪些SIMD指令?
- 13. 使用simd指令时,32位图像处理是否比24位图像处理更快?
- 14. 使用OMP SIMD没有为
- 15. 使用指令
- 16. 使用指令
- 17. 使用指令
- 18. 使用指令
- 19. 使用SIMD命令的程序段分段错误
- 20. 在Blade指令中使用Blade指令
- 21. C#使用指令 - 是否有开销?
- 22. 使用指令是干什么的?
- 23. 这是什么C#“使用”指令?
- 24. 什么是__ext_vector_type__和simd?
- 25. 使用角指令
- 26. AngularJS - 使用指令
- 27. MonetDB是时间戳保证是唯一
- 28. 是否可以指定使用指令的作用域?
- 29. 如何在MonetDB中使用JSON
- 30. 如何检查我是否配置了monetdb来使用BWD?
感谢@Holger,我试图改进价格搜索引擎,其中一部分目前是使用多个表和TSQL实现的,所以我在非规范化数据之后尝试使用柱状方法,并且它像魅力一样工作。后来我开始阅读AMD BOLT,OpenCL,CUDA和SIMD,并想知道像MonetDB这样的惊人之作(比方说)AMD BOLT ......好吧,我不能想象! :)正如MarcusMüller所说,我对改进MonetDB很不满意,但是我正在继续学习更多。你会推荐我开始玩SIMD吗? – GBrian 2015-04-01 06:38:22
我认为主要的问题是维护。 MonetDB确实是由一群人组成的(其中大部分是兼职)。有了这样的团队,你可以做的事情非常有限,而且仍然具有相当稳定的系统。 - 然而,像SIMD这样的东西是为了将性能的最后一点挤出CPU。你确定你已经用尽了所有其他选项,你需要最后的30%? – Holger 2015-04-01 14:32:03
是的,完全同意。在这方面做出这么多努力没有意义,但这个问题对我有很大的帮助,可以更好地理解。谢谢 – GBrian 2015-04-02 08:42:33