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

    关注

    90

    文章

    38346

    浏览量

    297473
  • MIT
    MIT
    +关注

    关注

    3

    文章

    254

    浏览量

    24930
  • vr
    vr
    +关注

    关注

    34

    文章

    9692

    浏览量

    156687

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

    人工智能(AI)已成为我们不可分割的“伙伴”。从聊天机器人、语音助手到自动翻译,AI不断介入人与人之间的交流和理解。然而,它能做到“客观中立”吗?据美国《麻省理工科技评论》官网报道,一项国际研究指出
    的头像 发表于 08-04 13:43 1203次阅读
    <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 714次阅读
    大朋<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 1038次阅读

    RFID测温芯片:光伏发电运营管理的新利器

    随着科技的进步,RFID测温芯片成为光伏发电运营管理的新利器。它通过电磁感应原理工作,实时采集设备温度数据,并将数据传输至后台管理系统,实现对设备温度的非接触式、实时监测,有效解决光伏发电运营管理中的设备温度监测难题。
    的头像 发表于 06-04 10:31 602次阅读
    RFID测温芯片:光伏发电运营管理的新<b class='flag-5'>利器</b>

    麻省理工学院香港校友会代表团到访华沿机器人

    近日,麻省理工学院香港校友会(MIT Club of Hong Kong)代表团40余人到访华沿机器人总部,通过展厅参观、技术交流与座谈研讨,深入了解国产机器人产业发展现状,并就“机器人+人工智能”的融合发展趋势展开深度对话。华沿机器人CEO王光能及相关人员出席。
    的头像 发表于 05-30 09:26 919次阅读

    SC1200IOT 思特威推出1200万像素AI眼镜应用CMOS图像传感器

    近日,技术先进的CMOS图像传感器供应商思特威(SmartSens,股票代码688213),全新推出1200万像素 AI眼镜 应用CMOS图像传感器—— SC1200IOT 。产品基于思特威先进
    的头像 发表于 05-08 18:15 3908次阅读
    SC1200IOT 思特威推出1200万像素<b class='flag-5'>AI</b>眼镜应用CMOS<b class='flag-5'>图像</b>传感器

    无法在OVMS上运行来自Meta的大型语言模型 (LLM),为什么?

    无法在 OVMS 上运行来自 Meta 的大型语言模型 (LLM),例如 LLaMa2。 从 OVMS GitHub* 存储库运行 llama_chat Python* Demo 时遇到错误。
    发表于 03-05 08:07

    行业集结:共同定制 RK3566 集成 AI 眼镜的前沿 AR 方案

    的 WiFi5 音视频 SoC 模组。RK3566 芯片框图 功能特点 这款 AI 眼镜,绝非仅仅是一款冰冷的科技设备,它拥有以下功能:· AI 大模型语音对话· 图像拍照(上传手机 /p2p
    发表于 02-20 18:44

    一文详解视觉语言模型

    视觉语言模型(VLM)是一种多模态、生成式 AI 模型,能够理解和处理视频、图像和文本。
    的头像 发表于 02-12 11:13 3341次阅读
    一文详解视觉<b class='flag-5'>语言</b>模型

    魔角石墨烯,超流刚度首次测得

    美国麻省理工学院和哈佛大学的物理学家首次在“魔角”石墨烯中直接测量了超流刚度。超流刚度是衡量材料超导性的一个关键指标。这是科学家首次在二维材料中直接测得超流刚度,意味着人们朝着理解这种材料的非凡特性
    的头像 发表于 02-07 11:14 632次阅读
    魔角石墨烯,超流刚度首次测得

    麻省理工科技评论:2025年AI领域突破性技术

    麻省理工科技评论》于1月3日公布2025年十大突破性技术,其中AI相关技术有:生成式AI搜索:整合多源数据,提供独特答案,扫描设备文件快速识别对象,或将加速传统搜索引擎终结,推动个性化AI
    的头像 发表于 01-07 23:40 1687次阅读
    <b class='flag-5'>麻省理工</b>科技评论:2025年<b class='flag-5'>AI</b>领域突破性技术

    AI语言模型开发步骤

    开发一个高效、准确的大语言模型是一个复杂且多阶段的过程,涉及数据收集与预处理、模型架构设计、训练与优化、评估与调试等多个环节。接下来,AI部落小编为大家详细阐述AI语言模型的开发步骤
    的头像 发表于 12-19 11:29 1258次阅读