1、背景

        高性能计算(High performance computing, 缩写HPC) 指通常使用很多处理器(作为单个机器的一部分)或者某一集群中组织的几台计算机(作为单个计 算资源操作)的计算系统和环境。有许多类型的HPC 系统,其范围从标准计算机的大型集群,到高度专用的硬件。大多数基于集群的HPC系统使用高性能网络互连,比如那些来自 InfiniBand 或 Myrinet 的网络互连。基本的网络拓扑和组织可以使用一个简单的总线拓扑,在性能很高的环境中,网状网络系统在主机之间提供较短的潜伏期,所以可改善总体网络性能和传输速率。

        性能:百度baike解释是机械、器材、物品等所具有的性质和功能。

        高性能:这里指的是IT系统具有的功能具备特有性能指标。

        性能指标:计算机功能的强弱或性能的好坏。可以参考性能指标_百度百科

        计算:根据已知数通过数学方法求得未知数。(在计算机世界,计算就是指运行数据的逻辑运算)

        那么,高性能计算对应的就是低性能计算。如果一个IT系统的物理硬件已经确定(物理性能指标已经确定),那么影响这个系统运行性能的就是在这个物理硬件上运行的软件性能。

        软件性能衡量方法:衡量软件性能的指标  衡量软件性能的指标 - 百度文库    软件程序性能衡量指标 

        那么,这里讨论的“高性能加速计算技术”就是一种软件技术,这种软件技术追求软件程序性能最优。   

2、高性能加速计算技术

        在 “ 浅析应用程序性能分析与优化 - 百度文库  ”一文中,列举了CPU交互、频繁I/O、复制内存和管理内存地址空间映射的CPU开销、缓冲和异步I/O、三次握手等方面的程序性能问题。

        那么高性能加速计算技术则是为了解决这些程序性能问题而产生的技术。

技术

特点

作用

ProtoBuf

Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。

结构数据序列化方法

Arrow

arrow 定义了一种在内存中表示tabular data的格式。这种格式特别为数据分析型操作(analytical operation)进行了优化。比如说列式格式(columnar format),能充分利用现代cpu的优势,进行向量化计算(vectorization)。

arrow其实和protobuf很像,只不过protobuf是为了structured data提供内存表示方式和序列化方案。

Apache Arrow简介 - 知乎

Apache Calcite

SQL解析工具, 可以将各种SQL语句解析成抽象语法术AST(Abstract Syntax Tree), 之后通过操作AST就可以把SQL中所要表达的算法与关系体现在具体代码之中。

Calcite有以下主要功能:

  • SQL 解析
  • SQL 校验
  • 查询优化
  • SQL 生成器
  • 数据连接

异步IO

NIO2.0引入了新的异步通道的概念,并提供了异步文件通道和异步套接字通道的实现。

NIO2.0的异步套接字是真正的非阻塞I/O,对应于Unix网络编程中的事件驱动I/O(AIO),他不需要多路复用器Selector对注册的通道进行轮循操作即可实现异步操作,从而简化了NIO的模型。

Netty-02 Java IO(BIO)、伪异步IO、NIO、NIO2(AIO)、Netty_mail_liuxing客

……

好像作为程序员的你,一致在追求更快的技术!

作者想讨论的,是最近研究的数据湖引用的向量计算高性能计算加速技术。

3、向量计算高性能加速

FaceBook向量计算加速引擎Faiss简介 - sdk社区 | 技术至上

图解向量数组加速模型计算 - 知乎

 PageRank向量的计算与加速 - 百度学术

        当今的计算机CPU都是流水线设计,还都遵守冯诺依曼的架构,这样程序就有一个特性——“局部性”。程序局部性原理介绍 - 知乎

        而这里的向量高性能加速,就是利用程序的局部性原理,增大对CPU缓存的使用,减少CPU在内存之间的IO,减少CPU寻址的跳转,从而提高程序的运行效率。

4、一些利用这一技术的开源软件产品

Apache Doris  Doris支持spark导入设计文档 | Apache Doris

Dremio | SQL Lakehouse Platform for High-Performance BI