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

多面体优化,调度变换

1)

多面体调度算法一般采用划分平面法,通过改变多面体模型中各个语句实
例的空间位置和关系,来改变程序的调度关系和执行顺序,寻找语句实例中存
在的并行性。通过在多面体空间中计算找到一个超平面,该超平面内包含的语
句实例在满足依赖关系的前提下能够并行执行。例如,图2.3 为一个语句的迭代
域和依赖关系,通过计算出的超平面(本图中为1 维直线)对语句实例进行划
分,找到具有并行性的语句。

1)感谢韩老师指点:

有一个限定区

形状比较好的程序,效果很好。

大型应用程序,在SW上调大型程序,没有那么规整

全自动去弄很难

原来是源到源这一块,

把纯C的代码转换成HIP C代码,

小程序测试效果很好

分析能力受限,

大型程序,相互调用关系复杂 ,要在整体上进行优化

分析热点,做一些前期工作。

多面体这条路,可能不通。基础编译,有AI编译,算子库手工改写。并行程序优化。

2)

多面体模型的核心是调度变换。Pluto 算法是基于多面体模型采用的调度变
换算法。该算法以自动实现循环分块为目的,在嵌套循环中找到能够最大循环
分块可能性的循环变换组合。Pluto 调度算法在计算新的语句实例之间的顺序关
系时,以最小化通信数据量最为目标优化问题,构造代价模型。Pluto 算法针对
每个语句计算出一个多维仿射变换并逐行求解。首先,对空间进行平面划分,
一个仿射超平面表示为:

Pluto 算法是多个一维仿射变换的组合,

根据Fakas 引理将公式求解过程线性化,转为对未知变量???的求解,得到
下界限制条件。接着根据Pluto 算法的代价模型对上界进行限制,使用整数线性
规划求解工具计算仿射变换的解,这些解就是并行调度带(Band),在调度树
中表示为Band 节点,对应程序中的循环嵌套,具有可交换的(permutable)和
可并行的(coincident)两个属性。通过调度变换算法,计算出具有并行性的调
度并将其映射到设备端。

3)

,代码生成阶段主要是从多面体的形式表示为AST 抽象语法树的生成,
代码生成也称为多面体扫描。代码生成的输入包括调度变换阶段计算生成的调
度和程序原有的迭代空间。按照调度指定的顺序遍历迭代域中的每个元素,生
成抽象语法树。代码生成的关键问题是如何生成每个循环的边界和控制流的判
定条件。通常生成几段代码,一段用于主机,几段用于每个内核的并行代码,
以及用于从寄存器和共享内存传输数据的部分。每一段代码的生成都依赖于在
外层生成调度期间所做的选择。代码生成算法有聚合代码生成方法,分割代码
生成方法,本质都是线性整数规划计算过程。

面向DCU 的源源编译

面向DCU 的源源编译过程主要分为三个阶段,静态控制块(Scops)识别
与调度计算、重调度计算与并行性映射和最终的代码生成阶段。如图2.7 所示为
DCU 平台串行代码到并行DCU 代码变换流程。

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

http://www.xdnf.cn/news/13170.html

相关文章:

  • 【JavaEE】-- HTTP
  • 交叉编译,对于初学者来说是个极难跨过去的砍
  • matlab画图时如何屏蔽title等函数中缺省的latex解释
  • 使用Mvnd加速Maven构建速度
  • 自己学习原理
  • 【Linux】SSH:简单端口转发的跳板机
  • 小白进阶shell学习-----脚本实战案例
  • 论文解析:一文弄懂ResNet(图像识别分类、目标检测)
  • 华为云Flexus+DeepSeek征文 | 大模型+高性能云服务的化学反应:医疗场景Agent开发
  • 【数组和二分查找】
  • YOLOv5白皮书 common.py 文件解读
  • C++:模板
  • 无服务器架构的企业级应用深度解析:Serverless技术选型与成本模型
  • DMA:在不同内存空间建立目的地址的情况分析及后果
  • 解锁 Nginx Stream 代理—全面掌握 ngx_stream_proxy_module
  • echarts使用笔记
  • java容易被忽略的事情
  • docker 安装运行mysql8.4.4
  • ceph 查看 pg 迁移进度的脚本
  • Oracle SQL*Plus 配置上下翻页功能
  • 大数据零基础学习day1之环境准备和大数据初步理解
  • APP开发好后如何分发内测
  • uniapp+vue2+h5图片下载保存,微信浏览器、非微信浏览器
  • java8 通过方法引用 vo::setLevel将对象的 setter 方法作为参数传递
  • Linux日志管理和时间管理
  • Java多线程实现之Callable接口深度解析
  • PyTorch终极实战:从自定义层到模型部署全流程拆解​
  • 接口测试中缓存处理策略
  • Code Composer Studio快捷键
  • OkHttp 中实现断点续传 demo