计算在数学上的概念: 计算是一种行为,通过已知量的可能的组合,取得新的量。计算的实质是汇合之间的映射。集体浅显直白的了解是: 输出一个或多个数据,通过解决,输入一个或多个数据。如 1 + 2 就是一个计算机,输出 2 个数据,输入 1 个数据 3。那到这里就会有很多疑难,在计算机上:高性能计算的概念是什么?全副的一般计算都能转成高性能计算实现么?如果不是的话,那哪些类型的计算能够呢?咱们须要做哪些事件,来实现高性能计算?Android 框架或者是否存在第三方库为咱们做了相干的工作高性能计算的概念高性能计算:通常应用很多处理器(作为单个机器的一部分)或者某一集群中组织的几台计算机(作为单个计算资源操作)的计算零碎和环境。在挪动端,咱们能够认为是通过同时启用挪动设施的 CPU 和 GPU 形成的异构计算资源,进行协同计算。计算模型类型从数据流和指令的角度把计算模型分为 4 类(费林分类法)单指令单数据流 (SISD): 并行计算的模型,典型例子就是单核 CPU,所有数据都被一个处理器依次解决,某一时刻只能应用一个指令。单指令多数据流 (SIMD): 多个不同的数据同时被雷同的执行、指令集或者算法解决,是 GPU 的计算模型。多指令单数据流 (MISD): 在同一个数据流上执行不同的指令。多指令多数据流 (MIMD): 是多核 CPU 的计算模型。本文内容探讨的高性能计算则次要是在 SIMD 的根底上探讨,但这里并不需要严格依照 SIMD,只须要计算流程中的一部分内容合乎 SIMD 咱们就认为该实现的过程就是一个高性能计算。晓得了计算模型的类型,咱们就能晓得并不是所有的计算类型都能实现为高性能计算。只有满足以下要求的算法(或者算法中的局部满足,其余局部通过 CPU 协调)才可能比拟好的实现为高性能计算。每个数据(数据包)都须要通过雷同的流程来解决数据之间并没有相干性,即某些数据的计算不依赖另外一些数据的计算结果数据量宏大
如何实现高性能计算这里首先理解的是图形显示流程,罕用的通用计算也正是基于这个显示流程做批改而实现的。这里以 OpenGL ES 为例,其余的如 Direct3D、CG 的流程大体也雷同。
其中的顶点着色器和片元着色器的处理过程,程序猿能够自行编写,且是别离在 GPU 中的顶点处理器和片元处理器(或者对立处理器)计算。晓得了这个流程,咱们能够很容易联想到:咱们的高性能计算的次要算法过程是在 顶点着色器 或 片元着色器 中解决的,个别都是 片元着色器。这个流程是用于显示,输出是顶点和纹理等数据,输入是帧缓冲,很显著并不是咱们所须要的,因而咱们还须要批改流程。其中的顶点着色器和片元着色器的处理过程,程序猿能够自行编写,且是别离在 GPU 中的顶点处理器和片元处理器(或者对立处理器)计算。性能晋升成果一个非常简单的图像处理的算法 (因为应用图像临时成果比拟显著,表白也比拟容易,所以这里应用的是图像显示的 Demo,并不是说高性能计算只能用于显示相干) 算法根本流程是: 读入一张图片光顺解决下,行将每个像素点和四周的 8 个像素点的色彩做一个均匀,并将均值赋值给两头像素点将各个像素点置灰,行将每个像素点的 rgb 值求和并取平均值调整亮度,行将每个像素点的色彩的各通道值乘以 0.9 将像素数组取出设置给 bitmap,并设置给 ImageView