Halide如何自动调谐时间表
Halide how to autotune schedule
我在Halide编写代码已经有一段时间了,我总是自己编写时间表。然后我读了这篇论文:http://graphics.cs.cmu.edu/projects/halidesched/mullapudi16_halidesched.pdf.所以,据我所知,有一些方法可以生成最佳时间表。我怎么可能做到这一点?
谢谢你的回答!
编辑:
你好。我试着拔出树枝,用CMAKE建造它。但我在编译Halide时遇到了问题:
这是VS 2015:中的错误
4> D:/halideAutoScheduler2/Halide.build/Releaseinitmod.aarch64_cpu_features_32.ll -> D:/halideAutoScheduler2/Halide.build/Releaseinitmod.aarch64_cpu_features_32.bc
4> C:Program Files (x86)LLVMbinllvm-as.exe: D:/halideAutoScheduler2/Halide.build/Releaseinitmod.aarch64_cpu_features_32.ll:23:6: error: expected type
4> !0 = !{!"clang version 3.6.0 (tags/RELEASE_360/final)"}
4> ^
4>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V140Microsoft.CppCommon.targets(171,5): error MSB6006: "cmd.exe" exited with code 1.
有什么建议吗?
非常简短的回答。。。
拉动此分支:https://github.com/halide/Halide/tree/auto_scheduler
取一段Halide代码,删除所有预先存在的调度。(目前我通常使用#if0来完成这项工作,但在使用Generators时,有一种更好的方法可以在显式调度和自动调度之间进行选择。在C++代码中使用带参数的if语句也是一种很好的方法。(
取所有输出Funcs
,并调用Func::estimate
方法来给出这些输出的近似边界。(然而,自动调度器可以使用该估计作为最小值,因此可以通过矢量化引入约束。(
然后确保您有一个Pipeline
,而不是Func
,并调用auto_schedule方法。(Pipeline
可以由Func
构造。(然后Pipeline
可以通过realize
运行或通过compile_to_file
或类似的方式编译。
一些调度可以与自动调度程序混合使用,例如断言跨步和扩展。但是,如果已经应用了任何复杂的调度,则自动调度程序可能会断言。
相关文章:
- 'short int'持有的值溢出,但"自动"不会溢出?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 普通环路未使用gcc 4.8.5自动矢量化
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- Python中的for循环与C++有何不同
- QwtPlot具有相等的轴和自动缩放
- 缓存std::数组的选定元素,并在c++中自动保持其一致性
- Visual Studio 2017循环自动向量化问题
- 当C++中需要自动删除时,这是静态的正确用法吗?
- 自动重复 extern "C"函数中的类构造函数采用的相同参数
- 我怎样才能将所有子目录与 cmake 自动匹配
- GCC 4.8.2 自动矢量化由于 cout 而失败
- 自动"yes"到 Popen SSH 命令
- 有没有办法通过使用十进制 ASCII 代码自动类型扣除来获取字符?
- 自动格式化程序> >更改为>>
- 查找自动生成键并具有线性内存消耗的小型关联数组
- 为什么 c++ 不允许(自动)强制转换?
- 制定带有输入和输出C++的时间表
- 错误的自动扣除 c++14
- Halide如何自动调谐时间表