当前位置: 首页 > 工具软件 > Halide > 使用案例 >

Halide学习

羊渝
2023-12-01

目的:在现代机器上完成高性能的图像处理。

支持的CPU体系结构:x86,ARM,MIPS,Hexagon,PowerPC

支持的操作系统:Linux,Windows,macOS,Android,IOS,Qualcomm QuRT

GPU计算API:,CUDA,  OpenCL,  OpenGL,apple Metal,Microsoft Direct X 12

大致流程:用Halide::Var, Halide::Expr, Halide::Func类型的对象完成c++程序,然后调用Halide::Func::compile_to_file来生成对象文件和头文件。或者调用Halide::Func::realize即时编译(JIT)并即刻运行整套pipeline,这有利于测试小的程序。

明确定位:想对代码加速,又不想花太多精力在上面,那么Halide将是非常优秀的选择。唯一要做的就是把算法用halide重写一遍即可。而且Halide重写算法,和正常理解的完全一样,不需要拐弯抹角,这在图像处理中非常有用。

Halide重要的类:

1. 定义、调度、计算:Halide::Func, Halide::Stage, Halide::Var

2. 图像数据类型:Halide::Buffer

3. passing around and reusing halide expression: Halide::Expr

4. 表示标量和图像参数:Halide::Param, Halide::ImageParam

5. reduce or scatter over some domain: Halide::RDom

6. 返回多值:Halide::Tuple, Halide::Realization

大体是上述六种,可以再大致浏览下每个类中的方法详情,对每个类实现的功能,有个总体概念。

 

Halide编译产出很简洁,so仅有:libHalide.so, libauto_schedule.so, libgradient_autoscheduler.so, halide.cpython-37m-x86_64-linux-gnu.so, 缺点是编出来的libHalide.so有121MB左右,太重了,还要分析下halide运行时环境要多大。

 

 

 

 

 类似资料: