当前位置: 首页 > news >正文

多面体编译,具体操作模式

1)

抽象分析阶段是基于ISL、PET 等开源库的方式来实现。PET 库是基于LLVM
编译框架与Clang 前端的多面体模型库。系统利用PET 库自动识别并抽取代码
中存在的静态控制块(静态控制块是代码的主要优化区域,常见的样式为嵌套
循环等),并对静态控制块进行迭代域、访问关系与依赖关系的分析,完成多
面体建模。识别出程序中的内核函数,使用ISL 库中的Feutrier 算法计算得到实
例间的依赖关系。线性整数规划工具ISL 以库的形式封装在多面体编译工具内。

2)

在变换过程中,首先输入串行C 语言代码,利用PET 库自动识别并抽取代
码中存在的静态控制块,在当前的实现中,数据传输是自动处理的,只发生在
静态控制循环嵌套的开始和结束,使用#pragma 标识。其次,使用ISL 为程序中
的依赖关系构建重调度所需的限制条件,并利用ISL 库中的增量调度求解器为
静态控制块求解出调度树,以便找到程序中具有并行性的带节点。

3)

在满足依赖关系的前提下,对默认的原始调度重计算转换成一个新的调度,
实质上是多维空间几何的变基过程,目的是找到程序中具有并行性的循环。将

具有并行性的调度带以及子树映射到DCU,旨在提升程序的并行性和数据的局
部性。

4)

将调度树中具有并行性的外层调度带节点及其子树标记为kernel 节点,表
示为一个内核函数,并按层次分别映射到DCU 的线程块和线程,调度带上层部
分生成主机端代码。接着,对于分块后的块循环,依据数组访问关系分析块循
环的单次迭代中语句访问数组的重叠情况,若存在被不同线程束重叠使用的数
组区域,则将其放入共享内存中。此时,在调度树中插入共享内存申请及拷贝
节点。

5)

在代码生成阶段,根据生成的调度树生成抽象语法树(AST)。使用ISL API
完成AST 的生成,将调度树中的节点转换为ISL-AST 表达式,计算出grid_size
的AST 表达式,对设备端数组声明、空间申请规模的计算表达式,同步语句的
AST 节点,还有其他的一些数据传输节点:init/clear/copy_to/copy_form device。

感觉是这个流程

使用了PET和ISL

感谢《基于多面体模型的国产DCU源源编译优化技术研究_牛靖钰》

相关文章:

  • 深入解析Linux分页机制:从虚拟内存到物理地址的魔法转换
  • Java TCP网络编程核心指南
  • 机房断电后 etcd 启动失败的排查与快速恢复实录
  • 通过Netplan为Ubuntu服务器新增DNS以解析内部域名
  • 『uniapp』url拦截屏蔽 避免webview中打开淘宝店铺自动跳转淘宝
  • uniapp开发小程序vendor.js 过大
  • LeetCode 11题“盛最多水的容器”
  • 云原生核心技术 (6/12): K8s 从零到一:使用 Minikube/kind 在本地搭建你的第一个 K8s 集群
  • JWT令牌如何在FastAPI中实现安全又高效的生成与验证?
  • 【docker n8n】windows环境如何挂载
  • 论文分享 _ Ladder:一种基于收敛的结构化图区块链_2025-06-10
  • 记录chrome浏览器的一个bug
  • 项目四.高可用集群_ansible
  • Java 数据结构和集合框架(二十二)
  • 区块链Web3项目的开发
  • Linux中shell的循环控制语句和函数讲解
  • 深度学习小项目合集-视频介绍下自取
  • Ansible小试牛刀
  • Spring Boot循环依赖全场景解析与终极解决方案
  • Cloudreve 私有云盘系统部署
  • 网站建设的程序/seo外链代发
  • 企业网站一般用什么框架做/西安网站制作价格
  • css代码大全/seo排名赚app最新版本
  • 帮人做违法网站/广告设计与制作需要学什么
  • 网站在线备案/网站关键词优化排名推荐
  • 如何设计网站的首页/seo石家庄