智能推理
文章平均质量分 77
智能推理
普通网友
这个作者很懒,什么都没留下…
展开
-
LLVM编译技术应用分析
LLVM编译技术应用分析原创 2022-08-04 06:01:39 · 2141 阅读 · 0 评论 -
MLIR原理与应用技术杂谈
MLIR原理与应用技术杂谈原创 2022-07-25 05:13:10 · 1252 阅读 · 1 评论 -
前后端编程语言杂谈
前后端编程语言杂谈原创 2022-07-24 06:28:39 · 1947 阅读 · 0 评论 -
编译器LLVM-MLIR-Intrinics-llvm backend-instruction
编译器LLVM-MLIR-Intrinics-llvm backend-instruction原创 2022-07-23 05:45:13 · 1292 阅读 · 0 评论 -
TensorRT-8量化分析
TensorRT-8量化分析本文讲非对称量化、量化方式等等一些细节,不过有一段时间在做基于TensorRT的量化,需要看下TensorRT的量化细节。这次文章是偏实践的一篇,主要过一下TensorRT对于explict quantization的流程和通用的量化思路。010x01 TensorRT量化都2022年了,量化技术已经很成熟了,各种量化框架[1]和量化算法层出不穷。之前接触过几个量化框架,大部分都是在算法层面模拟一下,实际上无法直接部署到具体的硬件层,也只是停留在算法的层面。而现在成熟的量原创 2022-03-17 06:14:29 · 2158 阅读 · 1 评论 -
AI编译器TVM部署示例解析
AI编译器TVM部署示例解析AI编译器TVM(一)——一个简单的例子概述什么是TVM?TVM可以称为许多工具集的集合,这些工具可以组合起来使用,实现一些神经网络的加速和部署功能。这也是为什么叫做TVM Stack了。TVM的使用途径很广,几乎可以支持市面上大部分的神经网络权重框架(ONNX、TF、Caffe2等),也几乎可以部署在任何的平台,如Windows、Linux、Mac、ARM等等。参考文献https://oldpan.me/archives/the-first-step-towards原创 2022-03-07 20:35:07 · 2696 阅读 · 0 评论 -
面向物联网的可重构流式深度卷积神经网络加速器
面向物联网的可重构流式深度卷积神经网络加速器摘要卷积神经网络(CNN)在图像检测中具有显著的准确性。为了在物联网设备中使用CNN实现图像检测,提出了一种流媒体硬件加速器。建议的加速器通过避免不必要的数据移动来优化能效。利用独特的滤波器分解技术,加速器可以支持任意卷积窗口大小。此外,通过使用单独的池单元,最大池函数可以与卷积并行计算,从而提高吞吐量。台积电65nm技术实现了一个加速器原型,核心尺寸为5mm2。该加速器可以支持主要的CNN,并在350mW时实现152GOPS峰值吞吐量和434GOPS/W能效原创 2022-03-02 06:23:10 · 7000 阅读 · 0 评论 -
高通为何46亿美元ADAS Veoneer Arriver
高通为何46亿美元ADAS Veoneer Arriver彭博9月13日引述消息人士报导,高通正式提案以逾40亿美元收购瑞典先进驾驶辅助系统(ADAS)技术商Veoneer,以超过麦格纳的报价在竞标案中取得优势。本文引用地址:http://www.eepw.com.cn/article/202110/428682.htmVeoneer日前证实,高通公司已经向Veoneer发出了一份以每股37美元现金支付“最新的非约束性”收购要约,交易金额将达到46亿美元。Veoneer表示,Veoneer与麦格纳之间原创 2022-01-11 18:04:46 · 604 阅读 · 0 评论 -
OpenCL,OpenGL编译
OpenCL,OpenGL编译TVM已经支持多个硬件后端:CPU,GPU,移动设备等…添加了另一个后端:OpenGL / WebGL。OpenGL / WebGL能够在没有安装CUDA的环境中利用GPU。目前,这是在浏览器中使用GPU的唯一方式。这个新的后端允许以一下3种方式使用OpenGL / WebGL:• 本地OpenGL:可以将深度学习模型编译成OpenGL,并直接在本地机器上运行,完全只使用Python。• 带有RPC的WebGL:可以将深度学习模型编译为WebGL,作为一个共享库导出,原创 2022-01-11 12:00:34 · 778 阅读 · 0 评论 -
relay.build调用关系
relay.build调用关系在用TVM优化过程中,常见demo如下图:relay.build背后的调用机制梳理如下:python中的build函数实现如下,此方法实际调用了BuildModule类的build方法,BuildModule获取的C++函数build方法,此处涉及混合编程:_build_module._BuildModule() 来自于这句注册:tvm._ffi._init_api(“relay.build_module”, name)self.mod[“build”]调用原创 2022-01-10 17:52:31 · 256 阅读 · 0 评论 -
编译器 llvm clang 源码转换示例
编译器 llvm clang 源码转换示例从git获取llvm项目的源码方式:git clone https://github.com/llvm/llvm-project.git下载源码后,进入llvm-project目录包括如下内容:llvm-project/llvm目录包括如下内容:CLANG实战实战 利用Clang制作自己的编译器 source-to-source 源代码转换参考:https://github.com/Ewenwan/llvm-clang-samples/b原创 2022-01-01 06:15:38 · 520 阅读 · 1 评论 -
Cache Memory技术示例
Cache Memory技术示例为什么需要cache?如何判断一个数据在cache中是否命中?cache的种类有哪些,区别是什么?为什么需要cache memory先思考第一个问题:程序是如何运行起来的?应该知道程序是运行在 RAM之中,RAM 就是常说的DDR(例如 DDR3、DDR4等)。称为main memory(主存)当需要运行一个进程时,先从Flash设备(例如,eMMC、UFS等)中,将可执行程序load到main memory中,然后开始执行。在CPU内部存在一堆的通用寄存器(regis原创 2021-12-31 06:06:56 · 367 阅读 · 0 评论 -
企业如何选择音视频会议系统分析
企业如何选择音视频会议系统分析腾讯会议和钉钉,哪个费用更划算?市面上的两大视频会议软件,腾讯会议和钉钉,收费标准和付费功能哪个性价比更高,适合长期使用腾讯会议和钉钉我都用过,个人认为性价比高一点的是腾讯会议。具体说说为什么腾讯会议比钉钉更划算,更适合长期使用。首先,先来分别说下腾讯会议和钉钉的需要付费使用的功能。腾讯会议腾讯会议收费的版本有商业版和企业版,还有专为会议室打造的软件系统,腾讯会议 Rooms。商业版支持不限时长的多人群组会议及升级会管会控,最多支持2000人同时入会、1080P高清原创 2021-12-24 06:04:06 · 1200 阅读 · 0 评论 -
SECTIONS bss段初始化分析
SECTIONS bss段初始化分析都知道bss段需要初始化,但是这是为什么呢?通过浏览资料,都会发现,bss段是不会出现在程序下载文件(*.bin .hex)中的,因为全都是0。如果把出现在程序下载文件中,会增加程序下载文件的大小。实际应用中,通常只需要把bss段的起始地址和结束地址保存起来,而不需要将程序下载文件中出现bss段(一堆0)将来真正运行程序的时候,再根据这两个数据进行bss段的初始化就行了。以上这段文字是网上的资料说的。但是,可不可以让bss段出现在程序下载文件中呢?如果这样可以的话,原创 2021-12-23 05:29:17 · 642 阅读 · 0 评论 -
堆栈,数据,文本,heap,bss,text data,stack
堆栈,数据,文本,heap,bss,text data,stacktext data bss stack heap 段根据APUE,程序分为下面的段:.text, data (initialized), bss, stack, heap。data/bss/text:text段在内存中被映射为只读,但.data和.bss是可写的。bss是英文Block Started by Symbol的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,在程序载入时由内核清0。BSS段属于静态内存分配。原创 2021-12-21 06:09:13 · 289 阅读 · 0 评论 -
Swift与LLVM-Clang原理与示例
Swift与LLVM-Clang原理与示例LLVM 学习从 简单汇编基础 到 Swift 不简单的 a + 1作为iOS开发,程序崩溃犹如家常便饭,秉着没有崩溃也要制造崩溃的原则每天都吃的很饱但学艺不精的经常有这样的困扰,每次崩溃都定位到一堆。类似movq $0x0, 0xc7a(%rip) 的天书里面初识汇编虽然不知道movq是什么意思,但知道movemove 的意思,没错是 飘逸至于q,不管 q不q 的,哎e呢?汇编语言汇编语言:(assembly language原创 2021-12-20 06:01:29 · 414 阅读 · 0 评论 -
Imagination 的神经网络加速器和 Visidon 的去噪算法被证明是完美的搭档
Imagination 的神经网络加速器和 Visidon 的去噪算法被证明是完美的搭档本文是总部位于芬兰的Visidon和总部位于英国的 Imagination合作的结果。Visidon 是公认的相机图像增强和分析算法专家,Imagination 拥有一系列世界一流的神经网络加速器(NNA),每个内核的性能高达每秒 100 TOPS。本文解决的问题是对来自传统彩色相机的图像进行去噪。解决方案分为两部分:• 在不破坏图像细节的情况下去除噪声的算法。• 一种高性能卷积引擎,能够运行经过训练的神经网络,原创 2021-12-19 05:52:07 · 271 阅读 · 0 评论 -
IP 公司与GPU IP
IP 公司与GPU IP1.IP公司及其处理器IP系列(DSP, GPU, AI)Synopsys来源:https://www.synopsys.com/zh-cn/designware-ip.htmlARC处理器Embedded Vision ProcessorsEV5xEV6xCadence来源:https://ip.cadence.com/ipportfolio/tensilica-ipTensilica Customizable ProcessorsXtensa LX7Al原创 2021-12-18 06:20:59 · 547 阅读 · 0 评论 -
Computer OS系统基本原理
Computer OS系统基本原理第一章 绪论(考概念)什么是OS?o 操作系统是一组控制和管理计算机软硬件资源、合理地对各类作业进行调度以及方便用户使用的程序集合。o 操作系统是位于硬件层(HAL)之上,所有其它系统软件层之下的一个系统软件,使得管理系统中的各种软件和硬件资源得以充分利用,方便用户使用计算机系统。本文参考链接:https://jason-xy.cn/2021/06/osreview/操作系统的目标方便性:o 计算机只能识别0、1o 用户熟悉的是各种语言o 命令和图原创 2021-12-17 06:34:48 · 330 阅读 · 0 评论 -
OpenCL编程详细解析与实例
OpenCL编程详细解析与实例C语言与OpenCL的编程示例比较参考链接:https://www.zhihu.com/people/wujianming_110117/posts先以图像旋转的实例,具体介绍OpenCL编程的步骤。 首先给出实现流程,然后给出实现图像旋转的C循环实现和OpenCL C kernel实现。图像旋转原理图像旋转是指把定义的图像绕某一点以逆时针或顺时针方向旋转一定的角度, 通常是指绕图像的中心以逆时针方向旋转。假设图像的左上角为(l, t), 右下角为(r, b),则图原创 2021-12-16 05:56:51 · 1252 阅读 · 0 评论 -
C语言与OpenCL的编程示例比较
C语言与OpenCL的编程示例比较OpenCL支持数据并行,任务并行编程,同时支持两种模式的混合。对于同步 OpenCL支持同一工作组内工作项的同步和命令队列中处于同一个上下文中的 命令的同步。在本文中以图像旋转的实例,具体介绍OpenCL编程的步骤。 首先给出实现流程,然后给出实现图像旋转的C循环实现和OpenCL C kernel实现。4.2 图像旋转4.2.1 图像旋转原理图像旋转是指把定义的图像绕某一点以逆时针或顺时针方向旋转一定的角度, 通常是指绕图像的中心以逆时针方向旋转。假设图像的原创 2021-12-15 10:20:06 · 2575 阅读 · 0 评论 -
自动微分延迟计算
自动微分延迟计算BP(反向传播),为什么BP不好呢?每一步都会保存了上一步中,计算出来的缓冲数据,这样在每次进行反向传播时,占用的内存比较高。自动微分的核心概念,延迟计算。先选取一个目标函数,求输出两个权重参数(W_1,W_2W1,W2)的导数。先求出1/x的导数-1/x_2−1/x2,没有计算这个-1/x_2−1/x2的值。前项与1的加法操作的导数,这个导数很显然是1。对exp这个op求导,可得到导数exp(x)。可得到JJ对W_1W1的偏导,将前面所有得到的式子,相应的op的输入代原创 2021-12-15 06:15:09 · 354 阅读 · 0 评论 -
TensorRT优化方案图例
TensorRT优化方案图例图 12. TensorRT 循环由循环边界层设置。数据流只能通过下方式离开循环环输出层. 唯一允许的后边缘是第二个输入递归层。图 13. 一个 if 条件构造抽象模型图 14. 使用控制条件执行 IIf条件输入层 放置图 15. 层执行和在 CPU 端启动的内核。图 16. 内核实际运行在 GPU 上,换句话说,显示了 CPU 端的层执行和内核启动与在 GPU 端的执行之间的相关性。图 17. 布局格式 CHW: 图像分为 高×宽矩阵,每个通道一个,矩阵原创 2021-12-14 05:50:08 · 250 阅读 · 1 评论 -
Tensorrt一些优化技术介绍
Tensorrt一些优化技术介绍Figure 1. A quantizable AveragePool layer (in blue) is fused with a DQ layer and a Q layer. All three layers are replaced by a quantized AveragePool layer (in green).Figure 2. An illustration depicting a DQ forward-propagation and Q ba原创 2021-12-13 05:47:45 · 228 阅读 · 0 评论 -
LLVM与Clang编译图例
LLVM与Clang编译图例参考链接:https://blog.csdn.net/u012874859/article/details/108530256原创 2021-12-12 06:24:43 · 344 阅读 · 0 评论 -
OpenCL产业开发链
OpenCL产业开发链OPEN STANDARD FOR PARALLEL PROGRAMMING OF HETEROGENEOUS SYSTEMSOpenCL™ (Open Computing Language,开放计算语言)是一种开放、免版税的标准,适用于超级计算机、云服务器、个人计算机、移动设备和嵌入式平台中各种加速器的跨平台并行编程。OpenCL极大地提高了众多市场类别中各种应用程序的速度和响应能力,包括专业创意工具、科学和医疗软件、视觉处理以及神经网络训练和推理。OpenCL is Wide原创 2021-12-11 06:30:11 · 275 阅读 · 0 评论 -
OpenCL框架与示例
OpenCL框架与示例下面的图简单说明了OpenCL的编程框架,图是用的GPU,其他类似;名词的概念:Platform (平台):主机加上OpenCL框架管理下的若干设备构成了这个平台,通过这个平台,应用程序可以与设备共享资源并在设备上执行kernel。实际使用中基本上一个厂商对应一个Platform,比如Intel, AMD都是这样。Device(设备):官方的解释是计算单元(Compute Units)的集合。举例来说,GPU是典型的device。Intel和AMD的多核CPU也提供OpenC原创 2021-12-10 06:17:49 · 466 阅读 · 0 评论 -
pass基础架构分析
pass基础架构分析Relay 和 TVM IR,包含一系列优化passes,可提高模型的性能指标,如平均推理,内存占用,或特定设备的功耗。有一套标准优化,及特定机器学习的优化,包括常量折叠,死代码消除,算子布局更改,算子融合,缓冲区处理和循环转换等。这些passes中的每一个,构造为一个 ir-to -ir 转换,使用在遍历期间和/或前收集的分析结果。随着 TVM 的快速发展,对管理这些pass的更系统,更有效的方法的需求,变得越来越明显。此外,管理跨 TVM 堆栈不同层(例如 Relay 和 tir原创 2021-12-09 06:21:31 · 1868 阅读 · 0 评论 -
TensorFlow XLA优化与Memory
TensorFlow XLA优化与MemoryXLA概述XLA(加速线性代数)是用于优化TensorFlow计算的线性代数的域特定编译器。结果是在服务器与移动平台上的速度,内存使用率与可移植性得到了改善。最初,大多数用户不会从XLA中看到很大的好处,通过使用即时(JIT)编译或提前编译(AOT)的XLA进行试验,针对新硬件加速器尝试XLA。XLA框架是实验性与积极的开发。尽管现有算子的语义,不太可能发生变化,但预计将增加更多的算子,涵盖重要的用例。构建XLAXLA与TensorFlow合作有几个目原创 2021-12-08 05:56:42 · 325 阅读 · 0 评论 -
CUDA编程图例
CUDA编程图例CUDA C++ Programming GuideFigure 7. Matrix Multiplication without Shared MemoryFigure 8. Matrix Multiplication with Shared MemoryFigure 20. Examples of Global Memory Accesses. Examples of Global Memory Accesses by a Warp, 4-Byte Word per Thr原创 2021-12-07 06:12:42 · 478 阅读 · 0 评论 -
写算子单元测试Writing Unit Tests
写算子单元测试Writing Unit Tests!一些单元测试示例,可在tests/python/relay/test_op_level3.py中找到,用于累积总和与乘积算子。梯度算子梯度算子对于编写Relay中的可微程序非常重要。虽然Relay的autodiff算法可区分一流的语言结构,但算子是不透明的。Relay无法查看实现,必须提供明确的差异化规则。Python和C++都可编写梯度算子,但是,示例集中在Python上,更常用。在Python中添加梯度Python梯度算子的集合可在Pyth原创 2021-12-06 05:45:55 · 372 阅读 · 0 评论 -
ONNX MLIR应用示例(含源码链接)
ONNX MLIR应用示例(含源码链接)开放式神经网络交换在MLIR中的实现 (http://onnx.ai/onnx-mlir/)。Prebuilt Containers开始使用ONNX-MLIR的一个简单方法是使用预构建的docker映像。这些映像是在主干上成功合并生成的结果。最新的图像代表主干的顶端。目前,Docker Hub中保存的amd64、ppc64le和s390x的发布和调试模式映像分别为onnxmlirczar/onnx-mlir和onnxmlirczar/onnx-mlir-dev原创 2021-12-04 06:44:14 · 615 阅读 · 0 评论 -
用动态实现扩展TVM
用动态实现扩展TVMExtending TVM with Dynamic ExecutionOutline● Motivation for Dynamism● Representing Dynamism● Executing Dynamism● EvaluationDynamic Neural Networks● Networks are exhibiting more and more dynamism○ Dynamic inputs: batch size, image size, s原创 2021-11-28 16:31:58 · 518 阅读 · 0 评论 -
三段式LLVM编译器
三段式LLVM编译器目录概述LLVM技术生态之编译器一、传统编译器的设计二、传统编译器模式的实现三、LLVM的三段式实现四、LLVM’s Code Representation:LLVM IR1、IR的表现形式2、IR的格式文件类型3、IR文件的编译处理流程4、简单的IR布局5、Llvm IR 编程五、LLVM 与 GCC有什么区别LLVM技术生态之JIT一、JIT概述二、为什么要使用JIT三、JIT生成代码时的代码优化技术1、语言无关的优化技术之一:公共子表达式消除2原创 2021-11-28 05:28:08 · 713 阅读 · 0 评论 -
JIT Code Generation代码生成
JIT Code Generation代码生成一.表达式编译代码生成(Code Generation)技术广泛应用于现代的数据系统中。代码生成是将用户输入的表达式、查询、存储过程等现场编译成二进制代码再执行,相比解释执行的方式,运行效率要高得多。尤其是对于计算密集型查询、或频繁重复使用的计算过程,运用代码生成技术能达到数十倍的性能提升。代码生成很多大数据产品都将代码生成技术作为卖点,然而事实上往往谈论的不是一件事情。比如,之前就有人提问:Spark 1.x 就已经有代码生成技术,为什么 Spark原创 2021-11-27 06:32:55 · 547 阅读 · 0 评论 -
linux C++打包程序总结
linux C++打包程序总结linux c++ 动态库打包 应用程序打包 动态库搜索路径问题linux环境下打包C++应用程序,包括依赖的动态库,以便解决程序发布后程序运行动态库缺失问题解决 动态库编译时添加-fPIC编译选项(一般动态库都会有此选项,自己写的库记得添加) -fPIC: 生成与位置无关代码 编译自己的应用程序,得到test 打包动态库:使用pack_lib.sh脚本将test依赖的动态库至某文件夹(如可在发布的程序根目录下新建lib文件夹,如下所示)bin/te原创 2021-11-26 06:02:42 · 2205 阅读 · 1 评论 -
深度学习编译器Data Flow和Control Flow
深度学习编译器Data Flow和Control Flow本文介绍了一下深度学习框架的Data Flow和Control Flow,基于TensorFlow解释了TensorFlow是如何在静态图中实现Control Flow的。支持在Python层直接写Control Flow的动态图,最后基于Pytorch介绍了如何将Python层的Control Flow导出到TorchScript模型以及ONNX模型。前言1.1. DataFlow以TensorFlow1.x为例介绍一下DataFlow。原创 2021-11-25 06:33:32 · 515 阅读 · 0 评论 -
深度学习编译器综述The Deep Learning Compiler
深度学习编译器综述The Deep Learning CompilerThe Deep Learning Compiler: A Comprehensive Survey参考文献:https://arxiv.org/pdf/2002.03794v4.pdf在不同的DL硬件上部署各种深度学习(DL)模型的困难,推动了社区DL编译器的研究和开发。DL编译器已经从工业和学术界提出,如TysFraceXLA和TVM。类似地,DL编译器将不同DL框架中描述的DL模型作为输入,然后为不同的DL硬件生成优化代码作原创 2021-11-24 06:13:28 · 905 阅读 · 0 评论 -
华为八爪鱼自动驾驶云
华为八爪鱼自动驾驶云2019年10月世界智能网联汽车大会上,华为轮值董事长徐直军做了主题演讲,阐述了华为智能汽车业务战略,描绘了智能汽车解决方案的五大业务板块:智能网联、智能驾驶、智能座舱、智能电动、云服务,而华为自动驾驶云服务就位于金字塔的塔尖。华为自动驾驶云服务,称为HUAWEI Octopus(华为八爪鱼),与华为MDC智能驾驶计算平台、智能驾驶OS一起,共同组成了车云协同的智能驾驶平台,可以有效帮助车企和开发者快速开发出自动驾驶应用,助力自动驾驶快速商用落地。面对海量的数据处理,华为八爪鱼原创 2021-11-23 06:06:32 · 2995 阅读 · 0 评论 -
TVM apps extension示例扩展库
TVM apps extension示例扩展库此文件夹包含TVM的示例扩展库。演示了其它库如何在C++和Python API中扩展TVM。该库扩展了TVM的功能。python模块加载新的共享库,可以使用TVM的python API进行插值。https://github.com/apache/tvm/tree/main/apps/extensiontest_ext.py修改了一些代码运行结果TVM Runtime SystemTVM支持多种编程语言用于编译器堆栈的开发和部署。将解释原创 2021-11-22 06:10:56 · 279 阅读 · 0 评论