MLIR:新建一个Dialect(十),CMakeLists.txt

文章来自微信公众号“科文路”,欢迎关注、互动。转发须注明出处。

Multi-Level Intermediate Representation(MLIR)是创建可重用、可扩展编译器基础设施的新途径。本文为第 16 期,继续介绍 mlir-hello 是如何利用 cmake 来组织项目的。

转载请注明出处!

关于文件结构,在之前的文章MLIR:新建一个Dialect(一)已经介绍过了。

上一篇文章已经介绍了mlir-hello项目根目录下,也就是总的的工程配置部分,本质上也就是文件结构和 cmake 项目文件的编写。

本文继续讲下各个子目录的 CMakeLists.txt 文件。

Read more

MLIR:新建一个Dialect(九),CMakeLists.txt

文章来自微信公众号“科文路”,欢迎关注、互动。转发须注明出处。

Multi-Level Intermediate Representation(MLIR)是创建可重用、可扩展编译器基础设施的新途径。本文为第 15 期,介绍 mlir-hello 是如何利用 cmake 来组织项目的。

转载请注明出处!

关于如何编写新的 Dialect 的编码部分前期已经介绍完毕。

今天介绍一下mlir-hello项目的工程配置部分,本质上也就是文件结构和 cmake 项目文件的编写。

Read more

MLIR:新建一个Dialect(八),opt

文章来自微信公众号“科文路”,欢迎关注、互动。转发须注明出处。

Multi-Level Intermediate Representation(MLIR)是创建可重用、可扩展编译器基础设施的新途径。本文为第 14 期,介绍如何创建 hello-opt 来应用上一篇文章建立的那些 Pass。

转载请注明出处!

MLIR 项目的核心是 Dialect,MLIR 自身就拥有例如linalgtosaaffine 这些 Dialect。各种不同的 Dialect 使不同类型的优化或转换得以完成。

上一篇文章讲解了 Hello DialectAffine Dialect 的 Lowering,本文继续讲如何将这一 Lowering 实际应用到 hello-opt 中,也即如何完成到汇编文件 .ll 文件的生成。

当然了,前期也提到过,MLIR 生态的目标只在 IR 阶段,所以其实只需要能生成标准的 .mlir 文件。到 .ll 的步骤实际上由 LLVM 后端完成。

Read more

MLIR:新建一个Dialect(七),lowering

文章来自微信公众号“科文路”,欢迎关注、互动。转发须注明出处。

Multi-Level Intermediate Representation(MLIR)是创建可重用、可扩展编译器基础设施的新途径。本文为第 13 期,继续介绍一个简单的 MLIR Dialect.

转载请注明出处!

MLIR 项目的核心是 Dialect,MLIR 自身就拥有例如linalgtosaaffine 这些 Dialect。各种不同的 Dialect 使不同类型的优化或转换得以完成。

好了,如果说前面的部分算是 MLIR 的坡道起步,那这一节就要开始弹射起飞了。本期开始讲解 Dialect 的 Lowering,即由 MLIR 代码逐级转换为机器代码的过程。

当然了,前期也提到过,MLIR 生态的目标只在中间阶段,所以其 lowering 本质上并不涉及太多最终的 IR 生成,这一部分更依赖 LLVM 的基石。

内容较多,建议收藏、细品。

Read more

MLIR:新建一个Dialect(六),ODS框架小结

文章来自微信公众号“科文路”,欢迎关注、互动。转发须注明出处。

Multi-Level Intermediate Representation(MLIR)是创建可重用、可扩展编译器基础设施的新途径。本文为第 12 期,继续介绍一个简单的 MLIR Dialect.

转载请注明出处!

MLIR 项目的核心是 Dialect,MLIR 自身就拥有例如linalgtosaaffine 这些 Dialect。各种不同的 Dialect 使不同类型的优化或转换得以完成。

接上回,本文继续新建一个 Dialect的内容。在实操了通过 mlir_tblgen 生成新的 Dialect/Operation C++ 代码后,本文小结一下 ODS 的作用。

Read more

MLIR:新建一个Dialect(五),通过.td定义新Op

文章来自微信公众号“科文路”,欢迎关注、互动。转发须注明出处。

Multi-Level Intermediate Representation(MLIR)是创建可重用、可扩展编译器基础设施的新途径。本文为第 11 期,继续介绍一个简单的 MLIR Dialect.

转载请注明出处!

MLIR 项目的核心是 Dialect,MLIR 自身就拥有例如linalgtosaaffine 这些 Dialect。各种不同的 Dialect 使不同类型的优化或转换得以完成。

接上回,本文继续新建一个 Dialect的内容。本文开始解析项目的各个实现部分之一——通过.td定义新 “Hello_Op”。

Read more

MLIR:新建一个Dialect(四),通过.td定义新Dialect

文章来自微信公众号“科文路”,欢迎关注、互动。转发须注明出处。

Multi-Level Intermediate Representation(MLIR)是创建可重用、可扩展编译器基础设施的新途径。本文为第 10 期,介绍如果通过 .td 定义一个 HelloDialect.

转载请注明出处!

MLIR 项目的核心是 Dialect,MLIR 自身就拥有例如linalgtosaaffine 这些 Dialect。各种不同的 Dialect 使不同类型的优化或转换得以完成。

接上回,本文继续新建一个 Dialect的内容。本文开始解析项目的各个实现部分之一——通过.td定义新 Dialect “Hello”。

Read more

MLIR:新建一个Dialect(三),待编译的mlir文件

文章来自微信公众号“科文路”,欢迎关注、互动。转发须注明出处。

Multi-Level Intermediate Representation(MLIR)是创建可重用、可扩展编译器基础设施的新途径。本文为第 9 期,继续介绍一个简单的 MLIR Dialect.

转载请注明出处!

MLIR 项目的核心是 Dialect,MLIR 自身就拥有例如linalgtosaaffine 这些 Dialect。各种不同的 Dialect 使不同类型的优化或转换得以完成。

接上回,本文继续新建一个 Dialect的内容。本文开始解析项目的各个实现部分之一——待编译的 .mlir 文件。

Read more

MLIR:新建一个Dialect(二)

文章来自微信公众号“科文路”,欢迎关注、互动。转发须注明出处。

Multi-Level Intermediate Representation(MLIR)是创建可重用、可扩展编译器基础设施的新途径。本文为第 8 期,继续介绍一个简单的 MLIR Dialect.

转载请注明出处!

MLIR 项目的核心是 Dialect,MLIR 自身就拥有例如linalgtosaaffine 这些 Dialect。各种不同的 Dialect 使不同类型的优化或转换得以完成。

接上回,本文继续新建一个 Dialect的内容。

Read more

科技:常说的算力指标TOPS是什么?

文章来自微信公众号“科文路”,欢迎关注、互动。转发须注明出处。

算力的具体计算还依赖特定背景,本文只做一般性描述。

TOPS 是一个反映处理器运算能力的单位,也就是说它反映了算力。它是 Tera Operations Per Second 的缩写,兆亿运算每秒,即每秒(S)一兆(Tera, $10^{12}$)次运算(Op)。单次运算当前一般指矩阵相乘时的乘加运算。

也就是说,多少个 TOPS 就表示每秒能进行几兆亿次运算。

变形

广义上,它可以再任意加上一个数据类型,作为指对在特定数据类型上的处理能力,比如对INT8(8位整型)、FP32(32位双精度)。对于后者这些浮点数类型,单位会增加一个 FL 特指 Float-point,即 TFLOPS。

Read more