什么是Halide

Halide,直译为"卤化物"的意思,那么它究竟用来干什么呢?
举个栗子:
对于简单的for循环二层嵌套,

//example1
for(int i=0;i<10;i++)
{for(int j=0;j<100;j++){cout<<i+j<<endl;}
}

//example2
for(int j=0;j<100;j++)
{for(int i=0;i<10;i++){cout<<i+j<<endl;}
}

他们实现的功能是类似的,但是哪个耗时比较长呢?答案是example2耗时长.具体原因见:两层嵌套for循环的效率比较.诸如此类的优化很多很多,总的来说Halide就是实现这类算法底层加速.

话不多说,直接上干货

本文主要实现Halide源码中lesson_01_basics的实现,首先下载Halide压缩包,这里选择
Halide-10.0.0-x86-32-windows-db901f7f7084025abc3cbb9d17b0f2d3f1745900.zip
下载下来后,需要windows上有vs2017以上的版本,这里使用的是Visual Studio2019社区版(免费的).

好啦,拥有Halide压缩包及vs2019之后,就可以进行环境配置了.

第一步,将Halide-10.0.0-x86-32-windows-db901f7f7084025abc3cbb9d17b0f2d3f1745900.zip解压缩,得到
第二步,添加环境变量E:\Halide-10.0.0-x86-32-windows\bin\Release到Path

第三步,打开VS2019,创建一个C++空项目,将Halide-10.0.0-x86-32-windows\share\Halide\tutorial中的lesson_01_basics.cpp复制进创建的项目中,将Halide-10.0.0-x86-32-windows\include中的Halide.h复制进项目中.

第四步,将解决方案配置改为Release,右键解决方案,在属性-连接器-常规-附加库目录中,增加E:\Halide-10.0.0-x86-32-windows\lib\Release,在属性-连接器-输入-附加依赖项中,手动输入Halide.lib.



第五步,大功告成!点击F5,出现Success!界面!

PS:

环境变量:环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。
摘自百度百科.

lib文件:.lib是一种文件名后缀,代表的是静态数据连接库,在windows操作系统中起到链接程序和函数(或子过程)的作用.

Debug和Release的区别:

Debug:调试版本,包含调试信息,所以容量比Release大很多,并且不进行任何优化(优化会使调试复杂化,因为源代码和生成的指令间关系会更复杂),便于程序员调试。Debug模式下生成两个文件,除了.exe或.dll文件外,还有一个.pdb文件,该文件记录了代码中断点等调试信息

Release:发布版本,不对源代码进行调试,编译时对应用程序的速度进行优化,使得程序在代码大小和运行速度上都是最优的。(调试信息可在单独的PDB文件中生成)。Release模式下生成一个文件.exe或.dll文件

PPPS:

Halide.lib如果使用Debug模式就会报错,不懂为什么orz…

Halide(win10vs2019环境搭建)小试牛刀相关推荐

  1. 移动端自动化测试(一)appium环境搭建

    自动化测试有主要有两个分类,接口自动化和ui自动化,ui自动化呢又分移动端的和web端的,当然还有c/s架构的,这种桌面程序应用的自动化,使用QTP,只不过现在没人做了. web自动化呢,现在基本上都 ...

  2. 乐鑫Esp32学习之旅① 爬坑学习新旅程,虚拟机Linux环境搭建esp32环境,打印 “Hellow World”。(2021年6月已更新)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 系列一:ESP32系列模组基础学习系列笔记 1. 爬坑学习新旅程,虚 ...

  3. Lichee_RV学习系列---认识Lichee Rv Dock、环境搭建和编译第一个程序

    Lichee Rv Dock学习系列文章目录 文章目录 Lichee Rv Dock学习系列文章目录 前言 一.认识Lichee RV 1.D1-H 芯片 2.Lichee RV开发板 3.系统镜像 ...

  4. pythonev3 课程环境搭建

    一:课程目标 学生自主完成系统重装 学生自主完成镜像刻录 自主完成EV3环境搭建 二:搭建步骤 准备工具 win10/ubuntu/mac os sd卡(8GB+)+读卡器 电脑配置 下载VSCode ...

  5. 乐鑫Esp32-S2学习之旅① 入门 ESP32-S2 环境搭建 ,分享如何直连苹果智能家居 HomeKit 平台,轻松语音 Siri 控制!

    本系列博客学习由非乐鑫官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 基于乐鑫ESP32 芯片模组 C SDK二次开发的技 ...

  6. 「Python入门」python环境搭建及VScode使用python运行方式

    ​ ​ 活动地址:CSDN21天学习挑战赛 文章目录 前言 一. python环境搭建 1.1 python下载安装 1.2 python安装 1.3 python环境变量配置 1.4 python版 ...

  7. Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建

    Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建 一.Anaconda 创建 python3.7环境 1.进入 C:\Users\用户名 目录下,找到 ...

  8. Windows10+Anaconda3+Pycharm环境搭建

    Windows10+Anaconda3+Pycharm环境搭建 一.安装Anaconda3 1.进入 anconda官网,下载Anaconda3 2.安装,选项默认继续安装(可以自行更改安装位置),等 ...

  9. SpringCloud Alibaba微服务实战(一) - 基础环境搭建

    说在前面 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来 ...

最新文章

  1. jieba.lcut方法
  2. 数据库报错: SQLCODE: -418, SQLSTATE: 42610, SQLERRMC: null
  3. POPUP_GET_VALUES_DB_CHECKED’
  4. Uva 11400,照明系统设计
  5. Docker实战部署JavaWeb项目-基于SpringBoot
  6. 整合Swagger接口文档
  7. 九度oj题目1341:艾薇儿的演唱会
  8. Python XML解析器– ElementTree
  9. Netty in action—Netty组件和设计
  10. 洛谷 [P1890] gcd区间
  11. fast-DTW算法
  12. BI系统的分布式部署原理和技术实现
  13. 使用Java实现一元二次方程求根计算器
  14. varchar(1)的怪异现象
  15. java接收端怎么收不到_java后端为什么接受不到前端发送的数据
  16. SigFox Vs. LoRa:技术和商业模式之间的比较
  17. 华东师范大学 计算机 博士 毕业论文,华东师大:1/4博士生完不成论文难毕业
  18. 搭建私有云盘可能用到的软件
  19. 设置Mac的输入法切换快捷键
  20. linux route 刷新_linux route命令反应很慢是什么原因?

热门文章

  1. 【替代XShell】WindTerm 工具 【免费】【开源】
  2. 【整理】MySQL引擎
  3. iOS 多线程使用示例
  4. Java并发编程艺术阅读笔记(一)
  5. 国内外php主流开源cms、商城、点评、SNS、DIGG、RSS、分类信息、Wiki汇总
  6. Nginx安装及常用优化和配置
  7. 创建并配置一个伪分布式Hadoop3.x版本集群(三)
  8. linux内核原子操作使用简介
  9. 淘宝传奇工程师多隆的程序世界
  10. Java删除StringBuilder最后一个逗号