Halide(一种用于对图像和张量进行快速、便携计算的语言)

2020-08-17 08:29:41

Halide是一种编程语言,旨在使在现代机器上编写高性能图像和数组处理代码变得更容易。卤化物目前的目标是:

GPU计算API:CUDA、OpenCL、OpenGL、OpenGL Compute Shaders、Apple Metal、Microsoft Direct X 12。

Halide不是一种独立的编程语言,而是嵌入在C++中。这意味着您要编写C++代码,使用Halide的C++API构建Halide管道的内存表示。然后,您可以将该表示形式编译为目标文件,或者对其进行JIT编译并在同一进程中运行。

以下函数定义并设置定义为一系列两个3x1过程的3x3盒过滤器的时间表:Func blur_3x3(Func Input){Func blur_x,blur_y;varx,y,xi,yi;//算法-无存储或顺序blur_x(x,y)=(input(x-1,y)+input(x,y)+input(x+1,y))/3;Blur_y(x,y)=(blur_x(x,y-1)+blur_x(x,y)+blur_x(x,y+1))/3;//时间表-定义顺序、位置;表示存储blur_y.tile(x,y,xi,yi,256,32).Vector torize(xi,8).parallel(Y);blur_x.computer_at(blur_y,x).Vector torize(x,8);

下载Halide的二进制版本。对于Linux、OS X和Windows,您可能希望版本分别以HALIDE_LINUX_64_TRUNK、HALIDE_DARWIN_64_TRUNK或HALIDE_Windows_64_TRUNK开头。

有关最新的构建,请参阅持续构建服务器。每个平台上的构建状态如下所示。如果它是绿色的,那么它已经通过了我们所有的内部测试。

要开始编写代码,请浏览教程和示例应用程序。这些测试是小的、独立的程序,涵盖了语言的所有角落,因此它们也可以是有教育意义的。然而,它们不是为教学而设计的,所以你可能会发现它们很神秘。

我们在CVPR 2015上教授了一门关于哈利德的课程。课程笔记是对哈利德的有用介绍。

弗雷多·杜兰德还在麻省理工学院6.815/6.865年度的计算摄影课上讲授哈利德入门。

这些学术出版物描述了哈利德及其调度模型背后的想法。卤化物的语法会随着时间的推移而变化,所以不要依赖它们来实现正确的语法。这些教程更好地介绍了Halide的语法。

高性能图像处理计算组织的解耦算法:Halide语言和编译器Jonathan Ragan-Kelley博士论文的设计与实现,麻省理工学院,2014年5月。

这场演讲是报纸的伴奏。它描述了哈利德的哲学,以及调度模型背后的思想。

卤化物开发利用技术探讨。如果有疑问,请在这里寻求帮助。

Halide是开源的,在麻省理工学院的商业许可下。我们鼓励您在其他项目中使用它,无论是开源项目还是商业项目!