移动端推理库

上层框架:

Tensorflow Lite

Caffe2

CoreML: 苹果的移动端框架;底层调用Metal;

PyTorch Mobile:

  • CPU端定点计算:使用自家的QNNPACK做CPU端INT8量化计算;
  • CPU端浮点计算:使用XNNPACK;
  • iOS GPU端计算:Metal
  • Android GPU端计算:Vulkan
  • Android上的DSP和NPU支持:通过Google NNAPI
  • 支持计算图优化

腾讯NCNN

  • 主要支持CNN网络,可计算部分分支
  • 无依赖(CPU上):不依赖任何第三方库,完全独立实现所有计算过程,不需要BLAS/NNPACK等数学计算库。
  • 跨平台:纯 C++ 实现,跨平台的cmake来编译,支持 Linux、Windows、MacOS、Android、iOS等
  • 性能:为ARM CPU优化使用NEON指令集和手写NEON汇编,充分利用一切硬件资源;
  • 内存优化:采用原始的滑动窗口卷积实现,并在此基础上进行优化,大幅节省了内存。在前向网络计算过程中,ncnn可自动释放中间结果所占用的内存,进一步减少内存占用。
  • 支持OpenMP多核并行计算;
  • 功耗:对ARM big.LITTLE架构的手机CPU,使用了更精细的调度策略控制功能,能够指定使用大核心或者小核心,或者一起使用,获得极限性能和耗电发热之间的平衡;
  • 库size小:不依赖任何第三方库,binary小;可定制要哪些功能进binary;
  • 支持INT8和Float16的模型精度;
  • 减少内存拷贝:支持直接内存零拷贝引用加载网络模型;
  • 可注册自定义层实现并扩展:用户可以把自己写的网络层,加入进来;

小米MACE

  • 性能:ARM CPU上用Neon; 支持OpenCL;
  • 性能:使用Winograd优化卷积计算;
  • 性能:优化启动速度;
  • 功耗:支持芯片的功耗管理,例如ARM的big.LITTLE调度,ARM的big.LITTLE功率选项;
  • 响应延迟:自动拆解长时间的OpenCL计算任务,来保证UI渲染任务能够做到较好的抢占调度, 从而保证系统UI的相应和用户体验。
  • 内存优化:通过运用内存依赖分析技术,以及内存复用,减少内存的占用。
  • 内存优化:保持尽量少的外部 依赖,保证代码尺寸精简。
  • 模型加密与保护:支持将模型转换成C++代码,以及关键常量字符混淆,增加反向工程的难度。
  • 硬件支持广:支持高通,联发科,以及松果等系列芯片的CPU,GPU与DSP(目前仅支持Hexagon)计算加速。 同时支持在具有POSIX接口的系统的CPU上运行。

阿里MNN

  • 通用性:支持 Tensorflow、Caffe、ONNX 等主流模型格式,支持 CNN、RNN、GAN 等常用网络;
  • 支持异构设备混合计算:可以动态导入 GPU Op 插件,替代 CPU Op 的实现;
  • 轻量性:减少对第三方库的依赖,binary文件size很小;
  • 性能:支持运行网络模型中的部分路径,或者指定 CPU 和 GPU 间并行运行;
  • CPU: 手写汇编
  • iOS GPU: Metal
  • Android GPU: OpenCL, Vulkan; OpenGL; 针对某些型号的设备做了深度调优;
  • 卷积计算优化:广泛使用Winograd算法;
  • 体用了新的ARM v8.2提供的Float16计算;

通用:

OpenCL: 并行计算标准;通吃所有CPU/GPU;(苹果主推Metal,已弃用之)

CPU:

QNNPACK: Facebook的INT8推理库;支持Android/iOS的CPU

ARM CPU:

Neon: ARM v7以上的SIMD指令集/库

XNNPACK: 浮点计算库;

Android GPU:

Vulkan: openGL 5.0,除了图形渲染还对通用高性能计算支持的好

iOS GPU:

Metal: 图形框架,比openGL更低功耗; (OpenCL和OpenGL已被苹果弃用)

你可能感兴趣的:(计算框架,算法工程,并行计算)