美文网首页
Metal矩阵乘法的方案对比

Metal矩阵乘法的方案对比

作者: angry_zxy | 来源:发表于2017-04-25 15:37 被阅读0次

iOS上矩阵乘法方案

1.基于CPU的加速框架BLAS
2.基于GPU的MPS框架中的MPSMatrixMultiplication库
3.基于GPU的MPS框架中的MPSCNN框架,这个主要用于CNN神经网络方面的,CNN的全连接可以近似为特殊的矩阵相乘

Metal简介

Metal 是针对 iPhone 和 iPad 中 GPU 编程的高度优化的框架。其名字来源是因为 Metal 是 iOS 平台中最底层的图形框架 (意指 "最接近硬件")。
该框架被设计用来实现两个目标: 3D 图形渲染和并行计算。这两者有很多共同点。它们都在数量庞大的数据上并行运行特殊的代码,并可以在 GPU 上执行。

Metal使用场景

目前,Metal 的资源非常有限,并且仅限于搭载了 64 位处理器的 iPhone 和 iPad。但另外一方面,因为 OpenGL 的限制,其性能与 Metal 相比并不占优势,毕竟后者是专门用来解决这些问题的。
如果想要一个 iOS 上高性能的并行计算库,答案非常简单。Metal 是唯一的选择。OpenCL 在 iOS 上是私有框架,而 Core Image (使用了 OpenCL) 对这样的任务来说既不够强大又不够灵活。

MPSMatrixMultiplication使用步骤

1.初始化数组,然后该数组放置到MTLBuffer中
2.构造矩阵,Matrix = MTLBuffer + 描述信息
3.创建运算内核
4.编码内核到command Buffer中
5.提交计算

MPSMatrixMultiplication VS BLAS

  • BLAS处理小型矩阵快,MPSMatrixMultiplication处理大矩阵快,临界值取决于设备,运算数据等条件
  • BLAS是直接操作数组,MPSMatrixMultiplication处理数组时,需要把数据load到MTLBuffer中,取出结果需要copy或者使用指针,另外MTLBuffer大小为256MB
  • BLAS使用Double类型,MPSMatrixMultiplication使用float32类型,BLAS精度更高
  • BLAS对方阵有优化,即使矩阵很大,速度可能比MPSMatrixMultiplication快
  • MPSMatrixMultiplication在矩阵列为4的倍数时候,性能最佳

MPSMatrixMultiplication VS 全连接

  • 全连接运算速度很快,使用float16,所以精度损失了一些,实际上做的是矩阵乘法的近似运算,在三种方案中,误差是最大的
  • 全连接运算在每次创建全连接对象后,权重矩阵不能更改,对于有相同的权重矩阵的运算来说,是比较合适的

实现

真机测试

  • iPad Air 2 Wi-Fi
    参数:苹果 A8X芯片,处理器三核, GPU八核
  • iPhone 6
    参数:苹果 A8+M8协处理器,双核,GPU是四核增强版PowerVR GX6450
iPad耗时对比.png iPhone6耗时对比

结果可以看出,在92 x 2052 * 2052 x 1的矩阵相乘中,BLAS的速度最快,但并不能说明GPU处理速度没有CPU快,GPU适合处理大矩阵运算。
运算耗时取决于运算的次数,一般来说,运算次数计算如下:

rowsA × columnsB × (columnsA + (columnsA - 1))

在测试中发现,数量级大于1e10的时候,建议使用MatrixMultiplication,这个数值的大小跟CPU,GPU的性能有关,不同的设备临界值会有差异。

Demo

参考文章

Matrix Multiplication with Metal Performance Shaders
Metal

相关文章

  • Metal矩阵乘法的方案对比

    iOS上矩阵乘法方案 1.基于CPU的加速框架BLAS2.基于GPU的MPS框架中的MPSMatrixMultip...

  • 图形变换原理

    概述: 图形变换大体分为缩放,平移,拉伸,旋转.他们的原理是矩阵的乘法. 矩阵的乘法: 矩阵的乘法规则:两个矩阵相...

  • sparse matrix 的分布式存储和计算

    矩阵乘法 我们先来补充一下矩阵乘法的数学知识: 矩阵乘法的意义: 对一个矩阵进行左乘一个矩阵的运算,相当于对该矩阵...

  • 矩阵乘法在python中的表示

    从数学表达上来说,矩阵乘法有: 矩阵的乘法(matmul product):这就是线性代数里面的矩阵乘法 內积/点...

  • 图形矩阵-----Matrix

    一、矩阵的定义 二、矩阵与矩阵的乘法 矩阵的乘法满足以下运算律:结合律,分配律,但是矩阵乘法不满足交换律。更详细的...

  • 卷积网络和卷积计算

    矩阵乘法和卷积乘法区别: 卷积的乘法和矩阵的乘法不一样,卷积的求和相当于加权求和,也可以称为加权叠加,矩阵相乘是将...

  • 矩阵链乘法

    矩阵A和矩阵B能够相乘,只有当矩阵A和矩阵B相容。 矩阵链乘法的前提就是降低矩阵的乘法规模。之所以可以这样,是因为...

  • MIT-18.06-线性代数(第三讲)

    第三讲 —— 矩阵乘法和逆 1. 矩阵乘法 1.1 行列内积 假设矩阵乘矩阵,得到矩阵,。回顾单个元素的求法,取特...

  • 理解线性代数核心算法:矩阵乘法就是“方法乘以对象”

    本文直指线性代数最最核心的算法——矩阵乘法。 记忆矩阵乘法的最速方法 矩阵乘法,在书本上有它的公式,但是太不直观了...

  • 理解线性代数核心算法:矩阵乘法就是“方法乘以对象”

    本文直指线性代数最最核心的算法——矩阵乘法。 记忆矩阵乘法的最速方法 矩阵乘法,在书本上有它的公式,但是太不直观了...

网友评论

      本文标题:Metal矩阵乘法的方案对比

      本文链接:https://www.haomeiwen.com/subject/qkxvzttx.html