赞
踩
OpenCL,OpenGL编译
TVM已经支持多个硬件后端:CPU,GPU,移动设备等…添加了另一个后端:OpenGL / WebGL。
OpenGL / WebGL能够在没有安装CUDA的环境中利用GPU。目前,这是在浏览器中使用GPU的唯一方式。
这个新的后端允许以一下3种方式使用OpenGL / WebGL:
• 本地OpenGL:可以将深度学习模型编译成OpenGL,并直接在本地机器上运行,完全只使用Python。
• 带有RPC的WebGL:可以将深度学习模型编译为WebGL,作为一个共享库导出,并带有Java主机代码和WebGL设备代码。然后,可以通过RPC将这个共享库部署到TVM Java运行时系统,在浏览器内运行。
• 带有静态库的WebGL:可以将深度学习模型编译为WebGL,与TVM Java运行时系统连接,导出整个包。然后,可以在浏览器的网页中运行模型,不需要依赖项。详细流程如图1所示。
TVM Compiler
TVM中的操作内核是自动编译的,不是人工编译的。如图2所示,TVM使用统一的AST定义内核,编译为不同平台上的代码。
• 不需要编写大量附加代码,就可以将现有模型部署。Relay / TVM模型定义对于所有target都是相同的,只需将其编译到新的target。
• 如果要添加新的操作系统内核,只需要在TVM中定义一次,不用为每个target实现一次。不需要知道如何编写代码添加新的操作系统内核。
CPU(LLVM):模型被编译为LLVM IR和JIT’ed,完全在CPU上运行。
OpenCL:模型被编译成OpenCL。还有一些glue code被编译到LLVM,负责设置和启动OpenCL内核。然后在本地机器上运行。
OpenGL:与OpenCL相同,但编译为OpenGL。
参考链接:
https://www.sohu.com/a/225439682_473283
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。