T-Lang-Language-Specification

VIP免费
2025-01-14 2 0 762.9KB 39 页 5.9玖币
侵权投诉
T-Lang Language Specication
王彦伟
SY2206220
林宇菁
SY2206132
2022 12 8
工作亮点1
Tensor as rst-class, 由此对其进行特殊优化。
一种将“环境与存储”状态分离的、以程序演算为目标的语义推断系统介绍。
支持提供较为初步的算子融合、并行优化能力。
已实现静态编译2,可跨平台3
1老师可通过本页快速了解本工作的情况。
2T-Lang 将生成 LLVMIR,功能由 llc 提供,不是我们做的。
3编译器层面:项目在 GNU/Linux 操作系统下开发,经过测试 macOSaarch64能够编译,Windows 平台由于项目使用较新 GNU/Bi-
son 的原因暂时编译失败,但抛开前端剩下部分能够编译;所生成软件:因为编译器生成 LLVMIR 是平台无关的,跨平台由 llvm 基础设
施完成,不是我们做的。
2
Contents
1语言介绍 5
2项目介绍 6
2.1 项目逻辑结构与所使用技术概述 .............................. 7
2.1.1 从文法到 ASTGNUBison............................ 7
2.1.2 多层次 IR 基础设施,MLIR............................ 8
2.2 工程结构 .......................................... 10
2.3 如何添加算子 ........................................ 11
3语言内部原理介绍 15
4语法说明 19
4.1 注释 ............................................. 19
4.2 基本符号 .......................................... 19
4.3 运算符 ............................................ 19
4.4 标识符 ............................................ 20
4.5 流程控制 .......................................... 20
4.6 张量运算 .......................................... 21
4.7 字面量 ............................................ 21
4.8 类型 ............................................. 22
4.9 语法单元 .......................................... 22
4.9.1 程序 ......................................... 22
4.9.2 语句 ......................................... 22
4.9.3 .......................................... 22
4.9.4 变量 ......................................... 23
4.9.5 函数 ......................................... 23
4.9.6 表达式 ........................................ 23
4.9.7 流程控制 ...................................... 23
4.9.8 面向对象 ...................................... 24
5特性说明 25
5.1 类型系统 .......................................... 25
5.1.1 类型一览表 ..................................... 25
5.1.2 特殊类型 ...................................... 25
5.1.3 自订类型 ...................................... 25
5.1.4 类型机制 ...................................... 25
5.1.5 存储模型 ...................................... 26
5.1.6 束定机制与作用域 ................................. 26
3
Contents
5.1.7 张量 ......................................... 27
5.1.8 静态变量 ...................................... 27
5.1.9 表达式计算 ..................................... 27
5.2 函数与过程抽象 ....................................... 27
5.2.1 流程控制 ...................................... 27
5.2.2 函数 ......................................... 28
5.2.3 高阶函数 ...................................... 28
5.2.4 流式编程 ...................................... 29
5.2.5 张量运算 ...................................... 29
5.3 面向对象机制 ........................................ 29
5.3.1 封装 ......................................... 29
5.3.2 继承、多态 ..................................... 30
5.3.3 垃圾回收机制 .................................... 30
6指称语义 31
6.1 SyntacticDomains ..................................... 31
6.2 Productions......................................... 32
6.3 Semantic Domains and Equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7语言特性讨论 34
7.1 深度学习框架 ........................................ 34
7.2 为什么需要将张量作为“一等公民” ........................... 34
7.3 框架与语言 ......................................... 35
7.4 自动内存管理 v.s. 手动内存管理 ............................. 37
7.5 “静态”语言的局限性——无法根据平台优化实现 ................... 37
7.6 融合与并行 ......................................... 38
7.6.1 算子层面的优化 ................................... 38
7.6.2 图层面的优化 .................................... 39
4
1语言介绍
欢迎使用 T-Lang 语言,T-Lang 是一门使用 Tensor 作为唯一支持类的编程语言,能够帮助开
发者快速开发出高性能的数值计算程序。
语言文法十分简单1,此处以一个例子说明其用法:
#支持自定义函数
def add(a, b){
return a + b; # 使用 return 语句返回计算结果
}
def main(){
#单行注释以 #开头
var a = [1, 2, 3, 4]; # 定义一个长度为 4tensor
b=[2,3,4,5];#也可以省略 var 关键字
var c = add(a, b); # 支持函数调用,类似会自动推断
print(c); # 打印语句为内置,仅支持一个参数
var x<2, 3> = [1, 2, 3, 4, 5, 6]; # 定义一个 2x3 tensor
var t<2, 3> = 0; # 声明 2x3 tensor,其内部初始化为全 0
var y = [[1, 2], [3, 4], [5, 6]]; # 定义一个 3x2 tensor, 同样用户也可以使用 [] 指定格式
print(x . y); # 计算矩阵乘法并输出结果
}
1因为我们把功夫都花在实现与优化上了。
5
2项目介绍
本章节将介绍项目工程结构以及开发思路,帮助开发者快速上手 T-Lang 语言的开发。
6
2.1. 项目逻辑结构与所使用技术概述
2.1 项目逻辑结构与所使用技术概述
如果要设计一门最终生成机器码(ASM Code)的语言,并不需要“万事躬行”,因为各个阶段
都有现成的工具供我们使用,我们可以将注意力集中在语言特性、语言优化层面。
AST Frontend IR Middle
Level IR LLVM IR ASM CodeLanguage
Our Job
MLIR LLVMGNU BisonFlex
Figure 2.1: 语言设计整理流程
如图 2.1所示描述了整个语言的开发流程。在语言前端设计部分可以使用 GNU Bison Com-
piler Compiler 工具帮助创建语言的文法,之后需要我们根据其生成的原始 AST 做语法检查,若检
查完成,则生成最顶层靠近语言 AST IRFrontend IR
IR 将与语言本身内容非常相似,其与 AST 的区别是风格类似 C语言(AST 是树型结构,
dump 出来类似 lisp每条语句上将绑定大量信息(如表达式的入参类型、出参类型等)方便后续
进一步下降操作。
图中 Middle Level IR 虽然只画了一层,但实际中可能会有很多层(如 Linalg DialectAne
Dialect 等)。这些所谓 Dialect(后文会解释)为 MLIR 内置的 IR,因此我们在这里的工作仅需要
确定要使用哪些现有 IRFrontend IR 转换过来、如果现有基础设施无法满足需求,则需要进一
步开发以扩展功能。最后这些 IR 都会下降到统一的 IR 表示(如 SCF Dialect最后转换为 LLVM
IR
到达 LLVM IR 之后 LLVM 会完成底层寄存器分配、Codegen、链接等操作,最终打包为能够
在目标操作系统运行的可执行文件。
以上我们概括了编译器开发的大致过程,下面将详细说明各个部分。
2.1.1 从文法到 ASTGNU Bison
GNU Bison 介绍 GNU Bison1是一个能够将上下文无关文法转换成基于 LALR(1) LR GLR
Parser 的程序。
下面是一个简单的例子2.
input:
%empty
| input line
;
line:
\n
| exp \n{ printf ("%.10g\n", $1); }
;
1https://www.gnu.org/software/bison/
2参考 GNU Bison manual, 详情:https://www.gnu.org/software/bison/manual/bison.pdf, 2.1.2 Grammar Rules for rpcalc
7
CHAPTER 2. 项目介绍
exp:
NUM
| exp exp +{$$=$1+$2;}
| exp exp -{$$=$1-$2;}
| exp exp *{$$=$1*$2;}
| exp exp /{$$=$1/$2;}
| exp exp ^{ $$ = pow ($1, $2); } /* Exponentiation */
| exp n{ $$ = -$1; } /* Unary minus */
;
%%
可以看到 grammar 主要由两部分组成:匹配规则以及匹配后对应的动作。
2.1.2 多层次 IR 基础设施,MLIR
MLIR3英文全称 Multi-Level IR意为内置了大量不同角度抽象的中间表示,这些表示在 MLIR
当中称为方言(Dialect。如图 2.2所示为其中比较核心的 Linalg Dialect 与其他 Dialect 之间的关
系图。
Figure 2.2: Linalg Dialect Dialect 的关系
MLIR 当中大部分的 Dialect 最终都会下降到 LLVM IR如果将底层 LLVM IR 看成一门编
程语言,那么上层这Dialect 便是对这门语言的封装,他们所占视角有些偏顶层(意味着其表达
更亲近语言层面),有些则更贴近底层(意味着其表达更亲近硬件)
因此通过设计这些 IR,能够方便开发者对于一个优化问题能够站在不同视角下进行思考。
下面给出一个实际例子 4方便读者感受:
假设设计语言 ToyLanguage,其中对 tensor t 进行转置的语句为:
transpost(t)
解析为 AST 之后产生第一层 IRFrontend IR
%t_tensor = "toy.transpose"(%tensor) {inplace = true} :
(tensor<2x3xf64>) -> tensor<3x2xf64>
loc("example/file/path":12:1)
3https://mlir.llvm.org/
4https://mlir.llvm.org/docs/Tutorials/Toy/
8
摘要:

T-LangLanguageSpecification¦¿SY2206220ÓHSY22061322022 M128 °ýTÄ1•Tensorasfirst-class,®N É›+yªÄb•BÕ|oÌâÐi%pÿsÖ¥a[ñ½Ø¹ "S¥Ôlw"dºb•¦û4 ¹„¥Ø0 µ†ai›ªÄ ?ïb•XLCáÿIr2Vt Üû3b1º=VYV':yγ'ýT¥ fƒb2T-Lang|3îLLVMIRÿ ?®llc4...

展开>> 收起<<
T-Lang-Language-Specification.pdf

共39页,预览8页

还剩页未读, 继续阅读

声明:本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。玖贝云文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知玖贝云文库,我们立即给予删除!
分类:计算机 价格:5.9玖币 属性:39 页 大小:762.9KB 格式:PDF 时间:2025-01-14

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 39
客服
关注