02每日一题

在Android中能否用CPU代替GPU?

第二天

「小新」的回答,面试官并不是很满意。那这个问题该怎么回答呢?先来了解下 CPU 与 GPU 的相同点与区别?

CPU 即中央处理器,GPU 即图形处理器。

相同之处:两者都有总线和外界联系,有自己的缓存体系,以及数字和逻辑运算单元。一句话,两者都为了完成计算任务而设计。


两者的区别:存在于片内的缓存体系和数字逻辑运算单元的结构差异。


CPU 虽然有多核,但总数没有超过两位数,每个核都有足够大的缓存和足够多的数字和逻辑运算单元,并辅助有很多加速分支判断甚至更复杂的逻辑判断的硬件。

GPU 的核数远超 CPU,被称为众核(NVIDIA Fermi有512个核)。每个核拥有的缓存大小相对小,数字逻辑运算单元也少而简单(GPU 初始时在浮点计算上一直弱于 CPU)。

从结果上导致 CPU 擅长处理具有复杂计算步骤和复杂数据依赖的计算任务,如分布式计算,数据压缩,人工智能,物理模拟,以及其他很多很多计算任务等。

GPU 由于历史原因,是为了视频游戏而产生的(至今其主要驱动力还是不断增长的视频游戏市场),在三维游戏中常常出现的一类操作是对海量数据进行相同的操作,如:对每一个顶点进行同样的坐标变换,对每一个顶点按照同样的光照模型计算颜色值。GPU 的众核架构非常适合把同样的指令流并行发送到众核上,采用不同的输入数据执行。

在 2003-2004 年左右,图形学之外的领域专家开始注意到 GPU 与众不同的计算能力,开始尝试把 GPU 用于通用计算(即GPGPU)。之后 NVIDIA 发布了 CUDA,AMD 和 Apple 等公司也发布了 OpenCL,GPU 开始在通用计算领域得到广泛应用,包括:数值分析,海量数据处理(排序,Map-Reduce等),金融分析等等。

简而言之,当程序员为 CPU 编写程序时,他们倾向于利用复杂的逻辑结构优化算法从而减少计算任务的运行时间,即 Latency。

当程序员为 GPU 编写程序时,则利用其处理海量数据的优势,通过提高总的数据吞吐量(Throughput)来掩盖 Lantency。目前,CPU 和 GPU 的区别正在逐渐缩小,因为 GPU 也在处理不规则任务和线程间通信方面有了长足的进步。另外,功耗问题对于 GPU 比 CPU 更严重。

「小新」的总结:GPU 由于拥有的核数多,能够处理海量数据;而 CPU 拥有的核数少,更倾向于处理复杂的逻辑运算。

扫一扫 关注我的公众号

想了解更多趣味面试题吗~

PS:每日人品红包,请长按小程序识别。

一道很烧脑的面试题?在Android中能否用CPU代替GPU?相关推荐

  1. android cpu负载 工具,计算Android中进程的CPU使用率

    我正在尝试按以下方式计算Android中进程的CPU使用率,但是由于产生的输出,我不确定它是否正确. 要将吉菲转换为秒:吉菲/赫兹 第一步: 使用/proc/uptime文件的第一个参数获取正常运行时 ...

  2. Android中shell控制cpu,Android app开发中获取cpu arm架构信息及执行shell命令方法

    最近在做一个项目,需要在app开发过程中去判断cpu的arm架构,比如说是armeabi-v7a,或是arm64-v8a. 其实,在adb shell命令下面,可以通过getprop的方式,获取到一些 ...

  3. 一道很有意思的面试题,考推理和逻辑能力

    问题: 一个屋子里面有五十个人,每个人领着一条狗,而这些狗中有一部分病狗(不少于一条).假定有如下条件: 一,狗的病不会传染,也不会不治而愈.也就是说病狗的数量一直不会改变: 二,狗的主人不能看见自己 ...

  4. 频率很高的笔试题--动态规划类型(中)

    动态规划解题算法 1.预测赢家 2.乘积最大子序列 3.丑数 4.跳跃游戏 5.最长连接序列 6.爬楼梯 7.接雨水 8.最长公共子序列 可以不连续的子序列 要求连续的子序列 要求输出最长公共子串 9 ...

  5. Android中shell控制cpu,常用ADB指令控制手机

    手机连接电脑之前 首先,查看安卓手机是否已经连接上电脑 adb devices 让adb一直查找安卓设备,找到后才停止 adb wait-for-device 2) 手机连接电脑后的操作 2.0) 基 ...

  6. android中openMax的实现

    1.android中用openmax来干啥? 有了上一篇AwesomePlayer基本框架及播放流程已经很清楚的看到了,android中的 AwesomePlayer就是用openmax来做(code ...

  7. 一道丧心病狂的java面试题

    转载自 一道丧心病狂的java面试题 无意中了解到如下题目,觉得蛮好. 题目如下: public class TestSync2 implements Runnable {int b = 100; s ...

  8. 一道内存分配的面试题后续

    昨天写的题目,在VC6.0上面测试一下 一道内存分配的面试题 结果发现一个问题,发现输出结果竟然没有问题,我很慌,如果这样的输出结果没有问题的话,那肯定是跟我们的理论对不上号的. 所以我只能继续调试 ...

  9. Java面试题大全(Android版)

    疯狂Java面试题大全(Android版) Java核心技术部分 Java核心技术部分的面试题,可能覆盖Java基本语法.面向对象(包括类定义.方法.构造器.递归.继承.抽象类.接口.枚举以及fina ...

最新文章

  1. Shell - 挂载硬盘
  2. 【连载】【FPGA黑金开发板】NIOS II那些事儿--编程风格(三)
  3. Linux命令- echo、grep 、重定向、1>2、2>1的介绍
  4. 中国靶材行业投资价值与发展机遇研究报告2022版
  5. Android魔法(第三弹)—— 一步步实现对折页面
  6. api返回的数据结构_JavaScript中的数据结构数组 和 栈
  7. 计算机名代表电脑什么,电脑开机蓝屏的各种文件名是什么意思
  8. Mysql触发器与事务
  9. php curl jsonrpc,JsonRPC: Lightweight Json-RPC 2.0 client/server in PHP extension
  10. 敲电子木鱼微信小程序源码下载+搭建教程
  11. 数据结构初阶——二叉树
  12. java毕业设计博雅楼自习室预约系统Mybatis+系统+数据库+调试部署
  13. springboot自定义启动logo
  14. iPhone游戏开发纵谈
  15. 从零部署Linux服务器完全指南2022版(CentOS 8+Nginx+PHP)
  16. Matlab中ind2sub函数的使用
  17. 神奇宝贝五分类:网络自定义
  18. maven+mysql+con_ssm+redis+maven集成使用Jedis客户端demo
  19. MicroPython-On-ESP8266——数码管的使用,从一个8段管开始
  20. 如何用脑图提升工作/生活效率?试试跨平台云储存的 MindMaster

热门文章

  1. 深度分析:经常被拿在一起讨论的okr和kpi,究竟有何区别?
  2. (附源码)计算机毕业设计SSM连锁便民超市前端系统
  3. pnpm对npm及yarn降维打击详解
  4. 如何将wps转换成html单元格内的图案还保留,如何利用WPS将网络数据转为表格 Excel批量转为Html,Html转换成Excel...
  5. 抖音技术开放日:日活1.5亿背后技术全解
  6. node,npm以及yarn下载安装
  7. LBS邵永强:GPS是怎么知道你在哪的?
  8. 华为p30升级androID11,华为宣布:华为P30系列全面升级EMUI 11正式版!
  9. UNI-APP实现物联网中BLE蓝牙的数据交互
  10. 12.1搭建LNMP、搭建wordpress、知乎、edusoho、拆分数据库、扩展web服务器、搭建文件共享、实时备份、12.2代理的定义、模块、实践