0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

来自麻省理工的图像设计语言Halide:AI、VR利器

SSDFans 来源:杨湘祁 作者:电子发烧友 2019-03-07 14:10 次阅读

随着人工智能VR等领域的发展,我们对于高性能图像处理程序的需求越来越大;当前编程工具开发的高性能图像处理程序牺牲了程序的可读性,模块性,可移植性等;其主要原因是,当前程序将算法描述, 数据存储以及计算糅杂一起。同时手工编写高性能图像处理程序开发效率较低,难以快速构建大量高性能图像处理代码。

在这样的背景下,MIT的研究人员专门为图像处理设计了一种程序语言——Halide;Halide语言易于编写和修改,并且能够自动对代码进行优化,使应用程序获得更好的执行效率。Halide设计的核心思想是将算法的内容和算法的执行耦,这样程序员可以根据不同的设备设置不同的优化策略,获得更高质量的代码。

目前halide支持的设备情况为:

CPU架构:X86, ARM, MIPS, Hexagon, PowerPC

操作系统Linux, Windows, Mac OS X, Android, iOS, Qualcomm QuRT

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

当前知名的自动优化框架,除了halide还有寒武纪的TVM,TVM在设计上借鉴了halide将算法内容和执行解耦的思路。本文主要主要内容如下:

- LLVM安装- Halide编译- Halide程序构建

##LLVM安装

首先下载LLVM源代码,源代码下载地址为:

http://releases.llvm.org/download.html#7.0.1

halide要求LLVM的版本为6.0以上,本文使用的是7.0.1版本;

需要下载一下几部分:

- LLVM source code (.sig)- Clang source code (.sig)- compiler-rt source code (.sig)- libc++ source code (.sig)- libc++abi source code (.sig)- clang-tools-extra (.sig) (可选)

源码编译LLVM:- 创建源码目录```mkdir LLVMtar xvf llvm-7.0.1.src.tar.xzmv llvm-7.0.1.src.tar.xz llvm-7.0.1cd llvm-7.0.1/tools/tar xvf cfe-7.0.1.src.tar.xz #clang的源代码包mv cfe-7.0.1.src clangcd ../projects/tar xvf compiler-rt-7.0.1.src.tar.xztar xvf libcxx-7.0.1.src.tar.xztar xvf libcxxabi-7.0.1.src.tar.xzmv libcxx-7.0.1.src libcxxmv libcxxabi-7.0.1.src libcxxabimv compiler-rt-7.0.1.src compiler-rt```以上是目录构建的方法,注意需要自己将下载的源代码包拷贝到对应的目录下;可选包clang-tools-extra-7.0.1.src.tar.xz放到llvm-7.0.1/tools/clang/tools目录下,解压,重命名为extra;- build LLVM笔者在LLVM-7.0.1目录的同一级,创建LLVM-build目录;```cd LLVM-buildcmake -DLLVM_ENABLE_TERMINFO=OFF -DLLVM_TARGETS_TO_BUILD="X86;ARM;NVPTX;AArch64;Mips;PowerPC" -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_BUILD_TYPE=Release ../LLVM-7.0.1/

make -j4

make install```其中,-DLLVM_TARGETS_TO_BUILD选项也可以根据需求设置,目前LLVM支持的架构包含:AArch64AMDGPUARMBPFHexagonLanaiMipsMSP430NVPTXPowerPCSparcSystemZX86XCore

也可以不使用make install,在编译Halide的时候使用export:

export LLVM_CONFIG=/build/bin/llvm-configexport CLANG=/build/bin/clang

以上是关于LLVM的编译。

## Halide的编译安装

下载源码:git clone https://github.com/halide/Halide.git进入Halide目录,设置环境变量:export LLVM_CONFIG=/build/bin/llvm-configexport CLANG=/build/bin/clang编译方法有很多种,这里采用cmake编译,方法如下:```mkdir buildcd buildcmake -DLLVM_DIR=/you/path/install/lib/cmake/llvm -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/you/install/path ../make -j4make install

```note:如果编译失败,关注一下cmake命令执行的结果,查看缺少什么包,安装后重新编译即可;笔者在编译的过程中缺少,OpenBLAS,eign3, atlas;其中OpenBLAS采用的源码安装,下载源码:```git clone https://github.com/xianyi/OpenBLAS.gitcd OpenBLASmake -j4make PREFIX=/you/install/path/ install

```如果安装目录不是默认的/usr/local/,则需要指定环境变量;其他两个库采用apt-get大法安装即可;```sudo apt-get install libeigen3-devsudo apt-get install libatlas-dev

```至此完成了Halid的安装编译;注意Halide也可以不安装,只要使用的时候正确链接库就OK。

## Halide程序构建demo如下:```// Halide.h包含了整个Halide, 只需要include这个头文件即可#include "Halide.h"//c头文件是为了使用c函数#include

int main(int argc, char **argv) {

//定义函数Halide::Func gradient;//定义变量Halide::Var x, y;//定义计算Halide::Expr e = x + y;

gradient(x, y) = e;//获取计算结果Halide::Buffer output = gradient.realize(800, 600);

//验证计算结果for (int j = 0; j < output.height(); j++) {for (int i = 0; i < output.width(); i++) {if (output(i, j) != i + j) {printf("Something went wrong!\n""Pixel %d, %d was supposed to be %d, but instead it's %d\n",i, j, i+j, output(i, j));return -1;}}}printf("Success!\n");return 0;}

```编译方法:```g++ halide01.cpp -g -I /you/patn/include -L /you/path/bin -lHalide -lpthread -ldl -o halide01 -std=c++11```编译完该文件以后,获取可执行文件;执行该文件之前需要设置环境变量:```export LD_LIBRARY_PATH=/you/path/bin```该目录包含Halide.so至此Halide的demo构建结束;本文中只构建了简单的Halide的程序,能够看到Halide语言中算法描述与计算解耦的设计方式;之后的文章中会继续介绍Halide中关于优化策略等的设计,最终验证Halide自动优化代码的性能。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AI
    AI
    +关注

    关注

    87

    文章

    26487

    浏览量

    264165
  • MIT
    MIT
    +关注

    关注

    3

    文章

    253

    浏览量

    23251
  • vr
    vr
    +关注

    关注

    34

    文章

    9557

    浏览量

    148835

原文标题:来自MIT的图像设计语言Halide:AI、VR利器

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    麻省理工与Adobe新技术DMD提升图像生成速度

    2023年3月27日,据传,新型文生图算法虽然使得图像生成无比逼真,但奈何运行速度较慢。近期,美国麻省理工学院联合Adobe推出新型DMD方法,仅略微牺牲图像质量就大幅度提高图像生成效
    的头像 发表于 03-27 14:17 153次阅读

    霍尼韦尔与南方泵业开展战略合作,四川成都一家红外热成像专用图像处理芯片服务商完成A+轮融资

    传感新品 【麻省理工学院:研发出自供电传感器,可从环境中获取能量】 3 月 4 日消息,来自美国顶尖学府之一麻省理工学院的研究人员发明了一种无需电池、自供电,且不产生污染的传感器。 研究团队负责人
    的头像 发表于 03-14 08:42 106次阅读
    霍尼韦尔与南方泵业开展战略合作,四川成都一家红外热成像专用<b class='flag-5'>图像</b>处理芯片服务商完成A+轮融资

    麻省理工学院开发出新的RFID标签防篡改技术

    虽然RFID标签广泛应用于各种场景,但安全性一直是其难以回避的问题。不法分子可以轻松复制或剥离这些电子标签,将赝品伪装成正品,欺骗消费者和认证系统。然而,麻省理工的新发明为这一问题提供了有效
    的头像 发表于 02-22 11:30 266次阅读
    <b class='flag-5'>麻省理工</b>学院开发出新的RFID标签防篡改技术

    Innovusion驶入持续增长快车道,消息称中国特供版英伟达 H20 AI 芯片推迟到明年一季度发布

      传感新品 【麻省理工学院:测试了一种新的可摄入传感器,从胃肠道内监测包括心率和呼吸模式在内的生命体征】 麻省理工学院的研究人员开发了一种可摄取的胶囊,可以从病人的胃肠道内监测包括心率和呼吸模式
    的头像 发表于 12-12 17:28 235次阅读
    Innovusion驶入持续增长快车道,消息称中国特供版英伟达 H20 <b class='flag-5'>AI</b> 芯片推迟到明年一季度发布

    刚刚,6位传感器青年科学家入选!麻省理工这份权威名单公布!

    今日(11月2日),2023年度《麻省理工科技评论》“35岁以下科技创新35人”亚太区入选者名单正式公布。  《麻省理工科技评论》(MIT Technology Review)于1899年在美国
    的头像 发表于 11-03 08:41 245次阅读
    刚刚,6位传感器青年科学家入选!<b class='flag-5'>麻省理工</b>这份权威名单公布!

    MIT公开课程6002讲义

    MIT公开课程6002讲义麻省理工学院
    发表于 10-19 16:58 0次下载

    麻省理工学院研究团队开发一种新型医学成像设备

    据麦姆斯咨询介绍,麻省理工学院(MIT)林肯实验室和马萨诸塞州总医院超声研究与转化中心的研究团队合作开发了一种新型医学成像设备,被称为非接触式激光超声(NCLUS)系统。这种基于激光的超声成像系统
    的头像 发表于 09-22 09:15 1872次阅读
    <b class='flag-5'>麻省理工</b>学院研究团队开发一种新型医学成像设备

    麻省理工学院提出可以实现远程低功耗的水下通信

    水下传感器网络对于监测渔场、飓风预报和探测敌方潜艇等各种应用来说都是非常宝贵的。然而,通过液体传输数据比通过空气传输要困难得多。麻省理工学院的工程师们提出了一种解决方案,可以实现远程低功耗的水下通信
    的头像 发表于 09-20 10:23 846次阅读

    缓存定时旁路指南

    这份白皮书着眼于ARM实施的敏感性,此前包括谷歌和麻省理工学院在内的安全研究人员对利用处理器推测的新的潜在缓存计时旁路进行了研究。 本白皮书还概述了可用于设计在现有ARM处理器上运行的软件的可能缓解措施
    发表于 08-25 08:23

    麻省理工开发出一种新的量子光源

    麻省理工学院的研究人员利用被广泛研究的新型太阳能光伏材料,证明了这些材料的纳米颗粒可以发射出一束相同的单光子。研究人员说,虽然这项工作目前是对这些材料能力的根本性发现,但它最终可能为新的光学量子
    的头像 发表于 08-08 06:51 400次阅读
    <b class='flag-5'>麻省理工</b>开发出一种新的量子光源

    麻省理工学院开创以更高的速率生成概率比特(p比特)的新方法

    当今计算机的明确0和1可能会阻碍对混乱的现实世界问题的准确答案。一个新兴的研究领域开创了一种称为概率计算的计算方法。现在,麻省理工学院的一组研究人员开创了一种以更高的速率生成概率比特(p比特
    的头像 发表于 08-01 11:40 692次阅读

    麻省理工学院的工程师在计算机芯片上“生长”原子级的薄晶体管

    晶体管以创建更密集的集成是非常困难的。 然而,由超薄2D材料制成的半导体晶体管,每个只有大约三个原子的厚度,可以堆叠起来制造更强大的芯片。为此,麻省理工学院的研究人员现在已经展示了一种新技术,该技术可以有效且高效地直
    的头像 发表于 07-03 15:18 356次阅读

    麻省理工华裔研究出2D晶体管,轻松突破1nm工艺!

    然而,前不久麻省理工学院(MIT)华裔研究生朱家迪突破了常温条件下由二维(2D)材料制造成功的原子晶体管,每个晶体管只有 3 个原子的厚度,堆叠起来制成的芯片工艺将轻松突破 1nm。
    的头像 发表于 05-31 15:45 1198次阅读
    <b class='flag-5'>麻省理工</b>华裔研究出2D晶体管,轻松突破1nm工艺!

    麻省理工华裔:2D 晶体管,轻松突破 1nm !

    然而,前不久麻省理工学院(MIT)华裔研究生朱家迪突破了常温条件下由二维(2D)材料制造成功的原子晶体管,每个晶体管只有 3 个原子的厚度,堆叠起来制成的芯片工艺将轻松突破 1nm。
    的头像 发表于 05-30 14:24 1355次阅读
    <b class='flag-5'>麻省理工</b>华裔:2D 晶体管,轻松突破 1nm !

    人工智能教父Hinton:也许还有希望限制AI的无序发展

    几天后,在麻省理工技术评论(MIT Technology Review)半公开分享会上,Hinton讲述了他对AI的恐惧和担忧。新一代的大型语言模型,尤其是GPT-4,让他意识到机器正朝着比他想象
    的头像 发表于 05-24 11:40 636次阅读
    人工智能教父Hinton:也许还有希望限制<b class='flag-5'>AI</b>的无序发展