编译原理之美
宫文学
北京原点代码 CEO
45685 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 45 讲
开篇词 (1讲)
编译原理 · 期中考试周 (1讲)
编译原理之美
15
15
1.0x
00:00/00:00
登录|注册

31 | 内存计算:对海量数据做计算,到底可以有多快?

内存计算是近十几年来,在数据库和大数据领域的一个热点。随着内存越来越便宜,CPU 的架构越来越先进,整个数据库都可以放在内存中,并通过 SIMD 和并行计算技术,来提升数据处理的性能。
我问你一个问题:做 1.6 亿条数据的汇总计算,需要花费多少时间呢?几秒?几十秒?还是几分钟?如果你经常使用数据库,肯定会知道,我们不会在数据库的一张表中保存上亿条的数据,因为处理速度会很慢。
但今天,我会带你采用内存计算技术,提高海量数据处理工作的性能。与此同时,我还会介绍 SIMD 指令、高速缓存和局部性、动态优化等知识点。这些知识点与编译器后端技术息息相关,掌握这些内容,会对你从事基础软件研发工作,有很大的帮助。

了解 SIMD

本节课所采用的 CPU,支持一类叫做 SIMD(Single Instruction Multiple Data)的指令,它的字面意思是:单条指令能处理多个数据。相应的,你可以把每次只处理一个数据的指令,叫做 SISD(Single Instruction Single Data)。
SISD 使用普通的寄存器进行操作,比如加法:
addl $10, %eax
这行代码是把一个 32 位的整型数字,加到 %eax 寄存器上(在 x86-64 架构下,这个寄存器一共有 64 位,但这个指令只用它的低 32 位,高 32 位是闲置的)。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《编译原理之美》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • 沉淀的梦想
    为什么nums1和nums2的内存位置有重叠就不能进行矢量化了呢?

    作者回复: 这个地方我确实没有细讲。 假设,我们做8个32位整数的计算。让nums2 = nums1 + 1。但是,nums2[0]的地址跟nums1[4]的地址相同,也就是nums2是从nums1的一半开始的。nums1和nums2一共占了12个整数位置。 假设nums1中各个元素的值都是1。然后做矢量计算。做完以后,结果是怎样的呢?从nums1开始,是4个1,8个2,一共12个数字。对吧。 但如果你用标量的循环去做,是怎样的呢? for(int i = 1; i < 8; i++) nums2[i] = nums1[i] + 1; 会是4个1,4个2,4个3。 它等价于nums1[i+4] = nums1[i] + 1。

    2
    3
  • pebble
    支持 AVX-512 指令(也就是它的一个寄存器有 512 位)。每次能处理 8 个 64 位整数,或 16 个 32 位整数,或者 32 个双精度数、64 个单精度数。你想想,一条指令顶 64 条指令,几十倍的性能提升,是不是很厉害! 这句里,最后的32个双精度跟64个单精度数量不对啊,双精度是64位的,512字节应该是8个,单精度也就是16个了

    作者回复: 回复。我这个地方确实写得不准确,要再补充点内容。我引用的是Intel的官网的内容。它的意思不是只用一个寄存器处理。而是因为使用了两个 512 位融合乘加 (FMA) 单元,每次可以同时处理32 次双精度和 64 次单精度浮点运算,以及八个 64 位和十六个 32 位整数。FMA单元的指令比较特殊,它可以完成乘法运算的时候同时完成加法运算。 我把正文调一下。参考: https://www.intel.cn/content/www/cn/zh/architecture-and-technology/avx-512-overview.html

    2
  • dll
    gcc -mavx2 simd2.c -o simd2 这部分代码是不是在m1上没法执行
    1
  • 吃饭
    python里的pandas处理数据那么快是不是用的就是这个
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部