Pass Infrastructure基础架构(下)
pass注册
PassRegistration该类在示例中简要显示了各种pass类型的定义 。该机制允许注册pass类,以便可以在文本pass管道描述中创建它们 。注册示例如下所示:
void registerMyPass() {
PassRegistration(“argument”, “description”);
}
• MyPass 是派生密码类的名称。
• “参数”是用于以文本格式引用过程的参数。
• “说明”是pass的简短说明。
对于无法默认构造的pass,PassRegistration接受可选的第三个参数,该参数接受回调以创建pass:
void registerMyPass() {
PassRegistration(
“argument”, “description”,
-> std::unique_ptr {
std::unique_ptr p = std::make_unique(/options/);
/… non-trivial-logic to configure the pass …/;
return p;
});
}
例如,可以使用这种注册变体来接受命令行参数的传递配置,并将其传递给pass构造函数。
注意:请确保该pass以不共享数据的方式是可复制构造的,因为 pass管理器 可能会创建该pass的副本以并行运行。
pass管道注册
上面描述的是用于注册特定派生pass类的机制。最重要的是,MLIR允许以类似的方式注册自定义传递管道。这允许自定义管道以与传递相同的方式提供给mlir-opt之类的工具,这对于封装常见的管道(例如“ -O1”传递系列)很有用。管道pass类似的机制注册,形式为PassPipelineRegistration。与之相比PassRegistration,此类采用管道构造器形式的附加参数,该参数修改提供的参数OpPassManager。
void pipelineBuilder(OpPassManager &pm) {
pm.addPass(std::make_unique());
pm.addPass(std::make_unique());
}

void registerMyPasses() {
// Register an existing pipeline builder function.
PassPipelineRegistration<>(
“argument”, “description”, pipelineBuilder);

// Register an inline pipeline builder.
PassPipelineRegistration<>(
“argument”, “description”, [](OpPassManager &pm) {
pm.addPass(std::make_unique());
pm.addPass(std::make_unique());
});
}
文本传递管道规范
前面的部分详细介绍了如何使用特定的参数和说明注册pass和pass管道。一旦注册,就可以使用它们从字符串描述中配置通道管理器。这对于mlir-opt从命令行配置过程管理器的工具,或作为利用动态过程管道的过程的选项的 工具尤其有用 。
为了支持描述传递管道的完整结构的能力,MLIR支持对传递管道的自定义文本描述。文字描述包括嵌套结构,运行的传递和传递管道的参数以及这些传递和管道的任何选项。文本管道定义为一系列名称,每个名称本身都可以递归包含嵌套的管道描述。该规范的语法如下:
pipeline ::= op-name ( pipeline-element (, pipeline-element)* )
pipeline-element ::= pipeline | (pass-name | pass-pipeline-name) options?
options ::= ‘{’ (key (’=’ value)?)+ ‘}’
• op-name
o 这对应于要继续运行的算子的助记符名称,例如func或module。
• pass-name | pass-pipeline-name
o 这对应于已注册的pass或pass管道的参数,例如cse或canonicalize。
• options
o 选项是特定的键值对,代表pass或传递管道定义的选项,如 “实例特定的传递选项” 部分所述。有关文本管道中的用法示例,请参见本节。
例如,以下管道:
$ mlir-opt foo.mlir -cse -canonicalize -convert-std-to-llvm=‘use-bare-ptr-memref-call-conv=1’
也可以指定为(pass-pass-pipeline标志):
$ mlir-opt foo.mlir -pass-pipeline=‘func(cse,canonicalize),convert-std-to-llvm{use-bare-ptr-memref-call-conv=1}’
为了支持使用来回传递一个通向文本表示的传递 OpPassManager::printAsTextualPipeline(raw_ostream&),请重写StringRef Pass::getArgument()以指定注册传递时使用的参数。
声明式pass规范
可以pass类似于算子的形式声明性地指定pass的某些方面 。该规范简化了定义通道时使用的几种机制。它可用于生成过程注册调用,定义样板过程实用程序以及生成过程文档。
考虑以下在C ++中指定的过程:
struct MyPass : PassWrapper<MyPass, OperationPass> {
MyPass() = default;
MyPass(const MyPass &) {}

// Specify any options.
Option option{
*this, “example-option”,
llvm:

Pass Infrastructure基础架构(下)相关推荐

  1. Pass Infrastructure基础架构(上)

    Pass Infrastructure基础架构(上) Operation Pass OperationPass Op-Specific OperationPass Op-Agnostic Depend ...

  2. 云原生架构下复杂工作负载混合调度的思考与实践

    作者: 实验室小陈 / 大数据开放实验室 10月25日,第一届中国云计算基础架构开发者大会在长沙召开,星环科技与众多国内外厂商共同就"云原生"."安全与容错"和 ...

  3. AI基础架构Pass Infrastructure

    AI基础架构Pass Infrastructure • Operation Pass o OperationPass : Op-Specific o OperationPass : Op-Agnost ...

  4. pass基础架构分析

    pass基础架构分析 Relay 和 TVM IR,包含一系列优化passes,可提高模型的性能指标,如平均推理,内存占用,或特定设备的功耗.有一套标准优化,及特定机器学习的优化,包括常量折叠,死代码 ...

  5. VDI 虚拟桌面基础架构(VDI,Virtual Desktop Infrastructure)

    VDI 虚拟桌面基础架构(VDI,Virtual Desktop Infrastructure)是许多机构目前正在评估的全新模式.VDI旨在为智能分布式计算带来出色的响应能力和定制化的用户体验,并通过 ...

  6. 视频大时代下基础架构的演进

    点击上方"LiveVideoStack"关注我们 过去十年,随着端上算力和通讯能力的提升,我们见证了一个业务玩法日趋复杂.用户覆盖遍及全球的视频大时代的诞生.近几年,多个市值千亿以 ...

  7. 分布式 java 应用:基础与实践_单集群数据超1000亿,微服务架构下分布式数据库应用实践...

    如今,大型企业的应用平台正在向微服务架构进行转型.在微服务架构下,应用程序和数据库等底层平台的关系将会被重构. 作为新一代分布式数据库,其架构与功能特性需要保证在与传统数据库全兼容的基础上,拥抱微服务 ...

  8. 如何部署多云环境下VR快艇开奖号码采集官网的IT基础架构?

    在多云环境VR快艇开奖号码采集官网vip7.maltapi.com下,企业IT基础架构如何构建,是很多企业都在关心的话题.那么,到底如何去部署多云环境才算成功? 有哪些关键要素? 众所周知,云带来的好 ...

  9. 标准化体系建设(下):如何建立基础架构标准化及服务化体系?

    前面我们一起讨论了为什么要做标准化,标准化的套路是什么,并按照套路进行了基础设施和应用的标准化示例.我想这些内容可以帮助我们举一反三,尝试着应用到实际工作中了. 今天,我继续跟你聊基础架构标准化的问题 ...

最新文章

  1. CVPR2021:推广到开放世界的在线自适应深度视觉里程计
  2. 【CoppeliaSim】使用 Lua 语言控制四旋翼无人机运行
  3. 数学建模第五节2020.5.8-17补
  4. centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课...
  5. 一.路径规划---二维路径规划仿真实现-gmapping+amcl+map_server+move_base
  6. 常量表达式不允许函数调用_SQLite特殊索引之表达式索引
  7. mega软件 linux,Linux系统下使用MegaCli软件对磁盘阵列进行操作
  8. 2015-2020: 5年,不问归期,奋斗没有终点
  9. EXCEL用今天日期减去之前的日期得到结果
  10. macos 微信小助手
  11. 【微信小程序】使用 Cryptojs 解密微信绑定手机号码
  12. 哪种机械键盘更适合打游戏? 机械键盘5种常用机械轴详细介绍
  13. ajax请求有多少种写法,Ajax 请求的三种写法
  14. 手指在屏幕上滑动,红色的小球始终跟随手指移动。
  15. 大数据实验一 关联规则实验题目:蔬菜价格相关性分析
  16. Spotify大规模敏捷之路
  17. 哪几款蓝牙耳机好用?2022年最值得买的十款蓝牙耳机盘点
  18. 怎样在应用中实现自助报表功能
  19. 清华大学的计算机新世界排名,清华蝉联计算机科学AI专业全球冠军 交大排名第6...
  20. 关于抽象类,接口的题目

热门文章

  1. 命名实体识别NER遗留问题----模型构建
  2. 存在量词后必须用合取式?-数学
  3. NLP.TM | GloVe模型及其Python实现
  4. OpenMP用法大全
  5. HiCar人-车-家全场景智慧互联
  6. MindSpore接口mindspore::api
  7. Nucleus SE RTOS初始化和启动
  8. 用NVIDIA A100 GPUs提高计算机视觉
  9. PointRCNN: 点云的3D目标生成与检测
  10. CVPR2020论文解析:视频分类Video Classification