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
    +关注

    关注

    91

    文章

    42532

    浏览量

    303445
  • MIT
    MIT
    +关注

    关注

    3

    文章

    255

    浏览量

    25099
  • vr
    vr
    +关注

    关注

    34

    文章

    9697

    浏览量

    157774

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MAX9924U评估套件:探索VR传感器接口电路的利器

    MAX9924U评估套件:探索VR传感器接口电路的利器 电子工程师在进行VR传感器相关设计时,评估套件的选择至关重要。今天就来和大家分享一下MAX9924U评估套件的详细情况。 文件下载
    的头像 发表于 06-01 15:15 121次阅读

    e络盟《发现顶尖技术之声》更新访谈:探讨好奇心、AI 和以人为本的未来城市

    安富利旗下全球电子元器件产品与解决方案分销商e络盟《发现顶尖技术之声》播客本季再添两期新节目,邀请神经科学家兼创始人 Anne-Laure Le Cunff 博士,以及建筑师、麻省理工学院 Carlo Ratti 教授共同探讨。
    的头像 发表于 06-01 10:37 309次阅读
    e络盟《发现顶尖技术之声》更新访谈:探讨好奇心、<b class='flag-5'>AI</b> 和以人为本的未来城市

    英德斯联合维森影像推出工业专用CT图像理工作站

    英德斯(YDSTECH)联合维森影像,推出一款工业专用CT图像理工作站,专为CT三维重建、海量断层数据分割与处理场景打造,兼顾算力密度与工业级稳定性。
    的头像 发表于 04-29 11:13 584次阅读

    Vibe Coding AI全栈开发实战

    Coding AI全栈开发模式凭借其独特的优势,正成为开发者们提升效率、加速创新的新利器。(搜星 课it。top) Vibe Coding:重新定义开发范式 Vibe Coding,字面意思是“氛围编程
    发表于 04-15 16:02

    解读大型语言模型的偏见

    。这种“位置偏差”意味着,若律师使用LLM支持的虚拟助手检索30页宣誓书中的某个短语,该短语位于第一页或最后一页时被找到的可能性会大得多。麻省理工学院的研究人员揭示了
    的头像 发表于 04-15 14:44 854次阅读
    解读大型<b class='flag-5'>语言</b>模型的偏见

    【瑞萨AI挑战赛】家庭AI相框

    ,推理过程全部在本地执行,避免网络依赖,使系统具备更好的实时性和隐私性。 显示链路优先打通 先保证图像数据能够稳定进入帧缓冲并完成刷新,再叠加 AI 能力,降低系统联调难度。 语义归并优于原始标签直出
    发表于 03-13 21:44

    使用NORDIC AI的好处

    提升能效,适合音频、图像和高采样率传感器等更重的 AI 负载。[Axon NPU 技术页] 模型更小、更快、更省电 Neuton 模型相较 TensorFlow Lite:* 内存占用可小 10
    发表于 01-31 23:16

    研究显示,若无前所未有的合作,AI将无法变革交通领域

    不断扩大。 这份名为《展望AI驱动的交通未来》(Envisioning the Future of Mobility Powered by AI)的报告由麻省理工学院交通倡议和Kearney高级交通
    的头像 发表于 12-09 15:27 1132次阅读

    【「AI芯片:科技探索与AGI愿景」阅读体验】+AI芯片的需求和挑战

    AI的应用多种多样。比如:DALL-E2、Midjourney、Stable Diffusion等,不仅包括对话功能,还包括生成图像、视频、语音和程序代码等功能。 竟然连代码都可以生成,会取代程序员
    发表于 09-12 16:07

    【「AI芯片:科技探索与AGI愿景」阅读体验】+内容总览

    AI芯片:科技探索与AGI愿景》这本书是张臣雄所著,由人民邮电出版社出版,它与《AI芯片:前沿技术与创新未来》一书是姊妹篇,由此可见作者在AI芯片领域的功力和造诣。 作者毕业于上海交通大学电子
    发表于 09-05 15:10

    【Sipeed MaixCAM Pro开发板试用体验】基于MaixCAM-Pro的AI生成图像鉴别系统

    能够有效捕捉AI生成图像与真实手绘扫描图像在纹理、笔触、光影、全局一致性等方面的细微差异。 边缘端部署:将模型量化、编译,最终高效运行在算力有限的MaixCAM-Pro开发板上。 实时推理:实现对输入
    发表于 08-21 13:59

    AI输出“偏见”,人类能否信任它的“三观”?

    人工智能(AI)已成为我们不可分割的“伙伴”。从聊天机器人、语音助手到自动翻译,AI不断介入人与人之间的交流和理解。然而,它能做到“客观中立”吗?据美国《麻省理工科技评论》官网报道,一项国际研究指出
    的头像 发表于 08-04 13:43 1508次阅读
    <b class='flag-5'>AI</b>输出“偏见”,人类能否信任它的“三观”?

    任正非说 AI已经确定是第四次工业革命 那么如何从容地加入进来呢?

    在神经网络的计算中广泛应用,理解矩阵乘法、特征值和特征向量等概念有助于深入掌握深度学习模型的工作原理。 掌握编程语言,如Python和R。Python有丰富的AI库,如NumPy、Pandas用于数据处理
    发表于 07-08 17:44

    大朋VR AI眼镜预发布,从 VR 领航者到 AI 穿戴开拓者

    在6月30日举办的恺英网络「BeyondGaming」主题发布会上,智能穿戴领域的老牌厂商DPVR(大朋VR)线上预发布全新DPVRAIGlasses产品,正式宣告进军AI穿戴新赛道。此次与恺英网络
    的头像 发表于 07-01 16:13 1135次阅读
    大朋<b class='flag-5'>VR</b> <b class='flag-5'>AI</b>眼镜预发布,从 <b class='flag-5'>VR</b> 领航者到 <b class='flag-5'>AI</b> 穿戴开拓者

    伟创力与麻省理工学院 (MIT) 就其全新的“新制造倡议”(INM) 达成战略合作

    行业巨擘+全球顶级学府  近日,伟创力与 麻省理工学院  (MIT) 就其 全新的“新制造倡议”(INM) 达成战略合作 。作为INM行业联盟的 创始成员 ,伟创力将在这一项目中与MIT的研究人员
    的头像 发表于 06-10 09:30 1392次阅读