版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于英特尔架构的安卓系统开发专题研讨会时间:2015年10月22日地点:华侨城洲际酒店大宴会厅2实录内容:主持人:欢迎各位的光临,大家下午好!这边是Intel的专场,我们在这边会跟大家分享Intel我们在移动领域,特别是在安卓系统开发方面的很多的好的工具和我们经验的分享。今天非常荣幸的请到Intel公司软件部专门负责软件生态系统,包括很多工具开发的专家,还有我们Intel移动产品系统专门负责产品和生态系统方面的同事来参加我们的研讨会。我看到有很多早早的已经坐在这边了,非常感谢。有一般特别的提示,今天所有下午的讲座结束之后,我们会请大家填反馈,大家刚才注册的时候可能已经收到了扫码反馈的链接,大家填了之后会有机会参与抽奖。今天的大奖还是非常有吸引力的,是机遇Intel平台安卓的手机和平板各两部,一共是四个大奖的机会。希望大家到时候都能够有机会参与。首先第一个演讲,“Intel支持安卓的软件开发工具及性能优化工具”,我们有请讲师朱孟利,他是Intel高级应用工程师。有请!朱孟利:大家下午好!我是Intel软件与服务事业群的应用工程师,我叫朱孟利。很高兴今天下午大概用半个小时的时间跟大家共同分享一下Intel公司对于支持安卓的一些软件的开发工具和性能优化的工具。报告的议程分为五部分。1、系统工具。讲系统工具之前我们先回顾一下Intel的系统软件发展和安卓是怎么结合的。最早结合是2012年,安卓发布了基于X86的一个手机,这是安卓系统第一次运行在X86的平台上。2013年初,安卓X86组织发布了针对于PC的安卓的ROOM,也是基于Intel架构。在2013年底,9月份,Google发布了安卓5.0,5.0上开始支持64位操作系统。Intel的研发部门和Google共同研发推进了64位操作系统的发布。2014年底Intel发布了针对安卓系统的参考设计。2015年包括2016年,Intel包括安卓会向物联网方面,比如机器人、智能家居等方面进行做进一步的探索和发展。Intel提供的安卓系统定制化工具是什么样的工具呢?因为Intel提供一整套的参考设计,如果按照这个参考设计来设计的平板,就可以通过这个工具来进行操作系统的定制化,比如说你的桌面主题是什么样子,一些预装的软件,整个项目的项目管理,项目整个包的生成,都可以通过这个工具一站式生成,大大加快了整个项目的进度和进展。这是系统性的工具。2、Intel架构下,应用开发需要有些原则,这个原则和ARM有些差别。首先来看安卓的应用分几个大类:一是安卓的应用只是使用Java的应用,直接运行在Java的虚拟机上,所以它在Intel架构的设备上不需要做额外的资源的调整,它只需要做一些显示的适配和调整就OK。还有一些应用是带本地开发库的,用了安卓NDK的应用,用NDK会有一些C++等的共享库,这些共享库就需要,比如你从ARM到Intel架构就需要做重新编译的工作,但是你的编译选项上加Intel的编译指令,C++、C语言库要进行重新编译。不同的架构的数据存储、传输格式和数据类型的转换有些差异,这一点也要进行注意。还有不断用的NDK,它还是用了一些更底层的汇编语言编成的应用,这些应用除了上面讲的UI要调试,然后要注意这些C++库重新编,这些汇编语言也要应用到X86指令集进行工作。Java分为两类,这种安卓的应用是不需要编译,调整UI,有可能需要调整整个分配,因为不同设备的分辨率不一样,要适应更高的分辨率。右边这种是使用了NDK的API,有C++或者C语言的KPI,它的C语言和这些共享库都要重新编译,用到汇编指令也要进行移植。3、Intel对于Intel架构上进行软件开发的开发者是如何的支持方式。首先来讲,Intel在全球范围支持范围很广,无论在哪里基于X86做应用开发,我们都可以支持到。从支持的方式上来讲,大概分为三部分:一是有专门的团队,像havok是专门针对图像图形的处理。我在的部门有软件支持,通用软件功能的支持等。二是我们提供很多的易用的开发包,这些开发包包括开发工具和共享库,这些库的底层,就是英特尔把底层发挥英特尔芯片特性的功能都实现,然后把它包装成工具包,让开发者更容易使用的Intel架构的底层硬件的特性。三是开发者论坛,开发者论坛可以提交一些技术上的讨论,可以做一些技术的交流。Intel这边也会有些专家会在上面去发布一些新技术的讨论或者一些说明文章。大概是这样三个层次的支持方式。4、有哪些开发工具和优化工具?这是IntelIntegrated,这是跨系统、跨架构的集成工具集,它的主机,就是开发主机支持windows7到windows8.1,也支持苹果的系统,目标主机,也就是开发的应用程序所在的,比如手机和平板,它支持安卓的应用程序,也支持windows的应用程序。Android的应用程序也支持几种。这个应用程序的工具包是在softwareI这个网站上公开提供的。它有更好的性能,底层是基于X86有优化,针对X86架构有优化。还有就是说可以更快速、更简便的开发应用程序。它除了IDE,还包括MediaXDK等,还有图形性能的调试工具,同时还可以应用到第三方的开发环境当中去。C++编译器可以显著提高基于Intel架构的应用性能,也支持安卓架构的应用程序。显著提高到什么程度呢?和通用的GCC编译器比较,它可以提高30%的性能,性能指标可以提高30%。还有性能分析的工具,就是VTuneAmplifier,它的优点是运行时系统分析和应用状态的分析,帮助开发者找到性能的瓶颈,然后解决这个程序的性能问题。还有图形性能的分析器,GPA系统分析器。还有一个工具,大家在开发过程中应该有遇到,安卓提供的模拟器实际上它的速度会相对比较慢,这个在程序开发过程中会浪费很多时间,Intel对这部分做了专门的改进,使用硬件虚拟化的技术进行CPU的模拟,那分别是在Linux、windows、Mac中都做了硬件虚拟优化技术,可以使模拟器的速度大大提升。Intel这边有一个线程构建模块TBB,基于这部分进行开发的应用程序,可以帮助你使用优化的线程。还有性能单元,基于集成性能单元开发的工具,可以提高Intel架构上应用的性能。有些软件可以直接免费下载,有些软件是需要一定的授权,NDA用户授权。这部分只要和英特尔有合作意向的公司就可以和我联系,跟Intel的软件部门进行联系也可以,可以签署保密协议,就是NDA合作保密协议,签署协议之后就可以拿到工具的下载授权和使用授权。还有付费工具,更专业的工具,在这个网站,根据流程就可以购买。5、如果做Intel应用平台的开发,到那里进行测试,因为不可能把所有设备都买到家里,然后开发Intel平台的应用程序。这是Testin云测试平台,这个测试平台是真机测试,这里大概有4600多部主流的智能终端设备,这些设备会及时更新,主流设备会及时更新上去,提供给开发者进行测试、选择。这个是自动化测试,在这端只要提交你的应用程序到网站,它就会启动自动安装、自动运行、自动测试的过程,最终会发一个测试报告给到你的应用开发者,让应用开发者看测试报告就OK了。这个云测试是24小时不间断,就是说全天候的服务,全球任何地区都可以访问。这边大概是一个流程,首先要注册,然后登陆、上传APK,选择测试设备。这个Testin服务,只要您测试X86应用程序的开发,可以提供免费的测试服务。网址就是,我在外面看到他们有展台,大家可以去了解一下。我今天分享的大概就是这些。提问:大家好!我想问,您提到的所有功能在2016年的版本中出来了?因为我之前是做Linux版本的,之前所有的版本我基本都用过,我在外面看介绍还有您的介绍,是不是提到这些新的特性就是在2016的版本中都会纳入进来?朱孟利:版本的问题要联系一下开发者看怎么更新,我可能现场不能回答你。我回去之后给你回复,您说的是1.6?提问:2016这个版本,您刚才提到的这些新功能,TBB等一系列的新特性是不是都在2016里面包含进来?朱孟利:我不是很确定,我要回去确认一下。谢谢大家!主持人:接下来我们会请李文炎,也是我们这边的高级应用工程师,为大家介绍“使用英特尔工具最大限度地提高应用性能”。有请!李文炎:大家下午好!欢迎大家来参加Intel的论坛接下来我会给大家介绍“如何使用英特尔工具最大限度地提高应用性能”。我的分享分了四个主要部分,有些部分和前一位同事介绍内容有些重复,我会快速的跳过。我这里会重点介绍到我这里有一个案例,是和我们客户合作过程中,如何把他们的应用在X86平台上做到性能成倍提升,不是实际代码,但是也是截取他们的实现原理来做的工作。前面的章节会讲,我们的Android和X86上面的一些不同之处和相同之处,对于技术的同事来说很好理解,整个这块,从开发角度来说,大概是相同的。重点需要提的是不同的地方,大概有这么几点:模拟器是基于真实的X86设备做的,X86设备我用的指令集和传统的,其他ARM指令集有不一样的地方。相比传统的技术,通过X86指令集和虚拟机的技术,整个模拟器可以得到更好的性能。最后面有几个,其实和这个类似,如果用汇编语言也是需要用X86的指令集做。还值得一提的,是图形库等等一块,Intel做了大量优化工作。如果使用到我们优化的内容,会使你开发的应用得到很好的收益。最后一个算是比较好的兼容性,目前大家使用到的PC或者服务器这块,这个主要是用我们Intel的产品,到这个平台,从你的台式机、笔记本到移动设备的兼容性会得到很好的扩展。对于开发者来说,在X86平台上面临的是全新的机会。对于开发者来说可以花费很少的精力获得更好的体验和收益的。对于开发应用来说我们分为两类,在应用这块有稍微提到,一类是基于虚拟机的应用。这个工作Intel已经做了,我们对虚拟机做了平台性优化,不需要开发者做相应的工作。如果你做本机的操作,用C语言或者更基层的语言,需要你做相应的工作,选用我们的编译链等做相应的规划,才会使应用得到很好的性能。这部分可能比较枯燥,是一个纯开发的过程,如何在X86的模拟机上搭建Android的开发环境,这块我会快速跳过,可能大家很熟悉。首先我们下载XDK后,有一个截面,我们可以直接选择下载X86的进项,下载之后我们可以创建基于X86的虚拟机的管理器,在这里面我们把所有的这些配置都可以自己配置,比如CPU类型、存储大小、内存大小等等,这些都可以跟通常的标准操作一样,把它设置下来都可以。启动模拟器之后,我们如果要进去开发的话,我们一定要登陆模拟器,这时候我们可以通过快捷键或者F1进入这个模式,然后获得IP,获得IP之后然后在里面有一个ADBHOST的选项,把参数配置进去,配置进去之后,我们可以在里面得到模拟器的一些信息,看到它的进程状态以及应用进程等等信息都可以得到。如何把已经开发好的ARM平台的应用移到X86平台上来,我们现在有基于高通或者其他开发的应用,如何把它移到X86设备上来。我们把应用首先进行分类,大概可以分为三类:纯Java的应用,虚拟机的应用,这个之外是由Intel做的,开发者不用管,可以直接在X86平台上跑。二是你自己做NDK的库。三是使用了NDK,还用了其他底层的,这时候就必须在汇编里面必须使用合法的X86指令集。对于这三类应用通过三类不同的操作来达到移植的效果。除了把应用在两个不同平台上跑起来之后,如果在我们的X86平台上得到更好的性能?我们还需要依靠一些工具,ICC和IPP刚才也有简单介绍。ICC是Intel做的C++的编译器,这里是我们关键处理的指令做的优化,这个优化不需要知道,只要替换原有的就可以。这里我们得到的数据是,我们可以对同样的代码得到30%的性能提升,这是比较官方的统计结果。对于IPP这个工具,我们这个集成性能元件,主要是对灵动处理器做了专门优化。特别是多媒体这块做了特别的处理,如果你的开发应用涉及到多媒体,可能我们推荐你使用这样的东西会得到更好的效果。其他更多关于如何在Android上应用,我们开发应用的范围,可以在软件开发者网站上找寻更多的例子和案例学习指导。架构已经讲过,不再赘述,只是说了对于文字的直观传输,对应用的分类以及工作量主要在哪块。如何判断CPU类型?这对于很多开发者,包括我们的客户合作,大家会问的第一个问题是,我在程序里面如何判断我的设备是X86的?这里我提供一个比较直观的方法,首先是我们NDK里面有API接口提供,里面有定义到CPU,如果是X86的话,这个里面判断出来就是X86的设备。这里是一个事例,我们写好它之后,然后这个接口就可以得到这样的结果,在我们做预备役的时候就已经知道。如果我们判断出它是X86的话,我们会把它进行相应的优化,可以从工程化的角度进行优化,而不是在开发应用里面的工程里面做单独的代码工作。NDK里面的GCC,我们对默认的GCC的标志,主要是对编译标志的设置,首先我们需要这个代码是在什么具体的平台上,用什么平台。其次是有没有使用特别的指令集,CPU的指令集是对强计算或者底层操作频繁的时候,你用指令集可以替换几百实质几千行代码的工作,这是非常好的方法。针对CPU结构的APK打包,我们目前的APK大概有这么几种,胖二进制,我们提供一个APK供所有平台使用,目前整个中国的市场上以及Google官方所推荐的都是这样的操作,APK里面有一个目录上放好所有目前的平台,比如ARM或者ARMwindows7或者X86,你必须预先建好所有库,同样的库在不同的平台下有不同的结果,放在同样的平台下。在不同的设备会自动加载不同的目录下的库文件,带来的问题是整个APK会变得相当臃肿,会变得很大。另外我们对于每个不同的平台,不同的平台,把我们的应用开发成多个版本,同一个应用就会出现多个版本,多个版本的时候,我们有另外一种方法区分。从我的开发经验来说,目前大家不会把这个随心所欲的自定义,并没有按照这个标准来自定义,如果我们按照这样的标准,就是按照Google定义的约定来定义,实际上我们也不用做多个APK,是可以做到的。这就是我们目前来解决移植化的设备,这是我们要做的两种方法。第四部分大部分和前面同事重复,主要是介绍Intel的软件工具和优化技术的介绍,这里可能会重点介绍一两个软件如何启动以及使用的过程。目前我们用到的比较多的,就主要是这五个软件。ICC,就是C++的编译器。Intel图形性能分析气,GPA是比较好的一个工具,如果你做你的应用有图形处理,有特别大的这样一些,需要看你的代码处理性能怎么样的,这个是可以分析你的程序对于各个硬件占用的性能,以及它卡在哪个地方。第三个是VTune放大器,这是调试性能的工具。还有高性能多媒体函数库,还有一个是线程构建模块,一个是针对多媒体,一个是多线程处理。这里可能举了一个例子,如何去做图形性能分析器去超过它,首先可能需要我们的操作方式,其实很简单,就是把我们的移动设备和PC用USB联系起来,在主机系统上装好GPA,然后对移动设备的相应数据进行获取和分析。只要移动设备和平台、PC设备都是基于X86就可以了。我们的主机目前支持windows全系列的平台都支持,然后有的个别版本会支持的比较。整个启动分析器的工具是这样,因为后面会有其他的演讲者详细介绍每个步骤的操作以及常规的问题,我就跳过去,大家可以稍微看一下。最后我可以重点介绍一下使用SSSE3指令集加速语音识别算法的案例,这是目前比较火的领域。目前对于深度学习与自然语言处理这块,不管是图像领域还是语音识别领域比较火,目前用到最多的,大家都是通过使用GPU做服务器的运算,不可能把语音识别的处理算法放到手机上做,或者放到平板上做。目前不管是国内还是国外的方式,大部分采用云方式,在服务器端部署了多个服务器,通常GPU强化这种运算,把得到的结果返给你,这时候就会得到我们想要的结果。但是依赖于网络处理情况,这时候性能体验并不是很好。我们这里有一个比较经济的方式,如果你使用的设备是X86,那我们里面有一个专门针对矩阵计算的,这里面如果做矩阵操作,那么它可以快速帮你替换掉你成百上千的代码,通过API的调用。这里的背景介绍也是国内某知名语音识别公司的产品,他们最近的概念很火,因为他们采用了这个算法。这个算法里面通常是矩阵计算,而且维度非常大,这里有一个图,介绍的是语音识别和图象识别里面,在我们的输入和输入之间其实是经过了非常大的矩阵运算的变化得到当前的结果,这里面是分层和分裂的计算结果来影响的。这里有一个计算公式,都是向量计算,这块在我们的代码里面来操作的话,你必须是很多个在一起才能做到。如果把这样的指令送到CPU里面操作,你的机器一定会运行不了。这是遇到的普遍问题。Intel有这样的指令集,这个指令集比较值得一提的是SSSE3,这个没有被大家广泛知道。我们会向大家介绍,如果你遇到就可以用我们这里面的矩阵计算API可以大幅度提高计算性能。我们饱和累加成运算,我们对于两个矩阵进行对应的相加,相邻相加是对一个矩阵的相邻元素的相加得到的元素,这两个操作如果用通常的方法计算是非常麻烦的。这里有一个任务描述,这个任务描述是语音识别里面用到的核心操作,是5个向量,都是16维的数字,分别求他们的累积,这个结果还是一个矩阵,如果用C伪代码实现,绿色部分是用C伪代码实现得到的操作。大家可以简单看一下,这是一个4循环16次,每个矩阵里面都做了循环运算。我们假设不考虑总线的问题,我们假设一个运算占一个时钟周期,这时候我们用乘加运算作为一个时钟周期,此代码要大概4个时钟周期,这时候整个性能就可以为它为单位1来计算。如果我们把它进行指令集来替换,用SSSE3代码来实现,我们需要连续调用4次饱和累加的相邻加的KPI,最终把结果直接通过线性输出。这时候再加上流程性的编排,大概时钟周期最多是13个,这时候我们可以看到这个结果,最后一个对比,整个运算性能可以得到大概5倍以上的效率提升。并且这有一个对于整个计算的算法的介绍,在我们的开发者上面,我有过详细的介绍对这部分,这里是一个链接。整个我的介绍大概是这么一个内容,介绍了在X86上如何做安卓的移植,和如何使用我们的指令集做优化。希望我们通过更多的案例和有的案例和未来更多的案例,来帮助大家得到X86平台带来的好处,享受到好处,使你们的应用得到很大的收益。总的介绍就是这么多。胶片不知道能不能下出来,但是链接的内容是公开出来的,只要上我们的平台就可以搜得到,只要搜SSSE3指令加速关键字,在开放社区里面可以看到。谢谢大家!提问:用ICC替换GCC,GCC的地方有很多开关实际上和ICC是不一样的,这种情况有的时候可能参数已经在整个代码当中,如果这种情况下ICCfor安卓会不会有东西自动识别,还是说必须把有问题的地方全部找出来,或者还是有某种意义上的容错机制?李文炎:可能需要你自己手工调整一下,如果你在整个的每个编译上都做了自己的开关处置的话。而提问:GCC和ICC的所有开关不会做相融?李文炎:后面的计划没办法回答你,因为我不是ICC开发团队的,只是现在是这个状况。提问:您的意思是说利用已经集成在联动处理器上的SSSE3,只能说替换一部分DAN的计算工作还是前端的某一些初期的信号处理去支持?李文炎:这里有一个概念,首先是要看你的计算量,我们可能在终端设备上替换的,我们一般指一线语音识别,现在离线操作只会识别几十个keyword,它的数据计算量大概在几十的数字维度就可以做到,如果成百上千的数字维操作,我想这个移动设备做不到。这个阶段我们做简单的处理,就不需要再放到云上操作,而是直接在移动设备上操作。提问:Intel有没有这样的平台,在降低识别精度的情况下,放到移动芯片上或者嵌入芯片上,灵动来实现类似的功能?李文炎:我好像看到有这样的新闻,Intel有这样的计划,但是我不知道什么时候实现,我确实看到过。提问:如果采用这套方案,可以离线做这个事情,只是效率和精度差一点。李文炎:数据量计算,说白了就是如果我们对语音识别或者图像搜索这块,主要是矩阵计算,如果你的维度少,那么我们完全是可以放在离线来做,就放到本地来做。但是Intel是什么时候决定做这样的工作,把这样的工作集成到我们的某个平台上来,我只能说我看到这样的新闻,但是什么时候实现我也没办法答复。主持人:谢谢。讲到这里大家已经有很多问题,我们外面有专门Intel的展台,我们的讲师会在外面,如果有问题,我们可以接下来继续交流。下面的演讲是目前大家都觉得非常热门,也非常有兴趣的,就是实感技术。有请陈衎为大家介绍“英特尔实感软件开发工具”。欢迎!陈衎:这是一个非常多开发者所感兴趣的话题,可能我不会涉及到很多的技术细节,大家可以运用自己的想象力来想象一下。今天很高兴能够站在这里和大家来探讨一下Intel的实感技术,我是陈衎,来自Intel的软件服务部。今天我讲的内容会从一个概念的阶段一直到最后的应用场景,希望给大家全方位的角度来调整实感技术到底是什么东西。首先我们理解一下什么是Intel的实感技术,按照技术的发展过程来看,我们知道我们现在把机器做的越来越拟人化了,就是我们希望把我们的机器变成什么样的东西呢?希望做到我们和机器打交道的时候,能够变得和人打交道一样简便。最终实现拟人化是非常复杂的过程,比如人眼睛看世界,人眼睛已经非常习惯三维的视角,除了把接收到的物体三维化之后同样做很多细节的处理,比如视野中成千上万的物体中准确抓住某个物体,并实时对它聚焦。听起来是很简单的功能,但是背后的运算量很复杂。基于这样的考虑,大家可能了解到实感技术到底要干嘛了。它可以把所有物体三维化,简单说就是3D摄像头,与之配套的有很多其他的辅助功能来无限接近于人的眼睛。从这个角度来讲,实感技术就提供这样的可能,让机器至少在视觉方面越来越像人类。这样的3D摄像头可以用到哪些产品之上呢?我这边用一个PPT给大家简单介绍一下目前实感技术的两个分类。在座很多开发者已经接触过,就是F系列的前置摄像头,主要应用于类PC的产品。今天着重要讲的是R系列,就是通常所说的后置摄像头,图中列出来,它主要针对平板或者手机等等这样的移动产品去打造的摄像头。R系列有两个型号,一个是R200,功能更加全面。之后是R100的型号,它提供了更为基础的功能。接下来我们来看看这样一个3D摄像头到底是什么东西。首先看右边,这里有一个剖面图,我们看看它的结构,可能我们会注意到它有一个红外的发射器,然后与它相东营的有左右两个红外接收器,这样子是不是非常像人的两个眼睛?除了红外接收器之外,它还有用于获取色彩、图形的一个处理器,整套构造下来就成了3D摄像头。要说工作原理,其实也很简单,人为什么定位到一个物体的具体位置?就是人的眼睛获取物体位置的时候有一个角度,根据这个角度的偏差来计算这个物体的具体位置,同样的,刚才有提到它是有两个红外的接受器,通过这个接受器也能同样获得一个物体的不同的角度差,从而计算出物体的具体位置。然后你在画面中的每个点它都能正确获得精确位置,我们将整个世界就可以三维化。基于它的三维化的特性,我们可以构想它可以用来干什么。这些应用场景分为五个大的模块,我们一起看一下。基于3D化的特性,我们用它来抓取现实生活中的任意一个物体,将它变成3D模型,进而可以用它来重构、分享或者直接将它用3D打印机打印出来。实感技术可以改变的另外一个行业就是家装行业,家装行业对3D要求很高的阶段,大家希望房子装修之前就可以直观看到装修的效果,我相信实感技术不管是帮助设计者还是终端用户,都是起到良性的作用。它将改变的第三个产业,我们关注到是电商行业,大家知道现在网上购物会经常有纠纷,你买到东西发现在网上获得的渠道信息会有些差别,如何填补用户期望和物体本身的差异呢?我相信实干技术可以在里面发挥一定的作用。回到广大用户群的消费产业,比如游戏和教育,实感技术在里面同样可以让这个产业变得更加充满活力。最后回到它的基本功能,比如拍照和拍摄视频来讲,我们在里面加入了3D的功能之后,它又会做出哪些改变呢?后面我们会跟大家详细探讨。虽然说实感技术有这么强大的功能,让所有用户接受它,或者让开发者愿意投入到这样的开发中来,让生态变得更加完善,其实是有很多路要走的。首先要解决的大问题是社会本身的问题,他有这样的摄像头,那我们通过什么载体使用它呢?这就是我们在市面上要大规模的去引入这些搭载了实感技术200,包括平板、手机上的设备。另一方面我们要生态更加完善的话,除了这些设备之外,我们需要很多新奇、有趣的应用配合这样的设备使用。这就是针对开发者所要做的事。我们也知道对于开发者来讲,如果还希望它去了解实感技术最底层的细节和原理的话,我觉得不现实。对于绝大多数开发者来讲,他们关注的只是这个东西怎么用就好了,你提供接口,我让这个接口实现我的功能,加到我的应用程序里面去,这样就OK了。所以我们之前有了这个实感技术之后我们做了大量工作,把这些支持实感技术的这些API整合成XDK,XDK可以支持windows等操作系统。除此以外,为的让开发者能够从对于实感技术的开发获益,我们会做很多的市场宣传和推广这样的市场工作。以上是对实感技术的简单介绍。剩下很大的部分就是刚才给大家提到的,就是和大家一起想象一下有了实感技术之后给我们的生活带来哪些更深刻的变化。回到刚才讲的第一个应用场景,就是三维物体的获取、分享和打印,这样一个大的模块。这本身就是实感技术非常基础的功能,但并不表示它不重要。我们知道现在要获取一个物体的三维模型是非常专业的工作,首先要用专业工具来建模,也有非常丰富的3D处理的经验,以后有了实感技术之后这个局面就会被改变。大家可以想象一下,比如你看到市面上出售的某个花瓶,你觉得它很漂亮,你希望远在其他地方的人也能跟你一样,同样感受到它的漂亮,或者直接想再复制这样的花瓶,你会怎么做呢?你可以拿着平板然后对着感兴趣的花瓶,通过全方位的拍摄之后,这个平板就能够自动把你获取的数据处理成花瓶的三维模型,你可以创作或者发给远方的朋友和亲戚,甚至直接连到打印机上,然后就可以直接把这个花瓶重新构造出来,摆到你家里去。它除了扫描普通的物体之外,同样可以用来扫描人体。今年年初的时候,我们举办过一次IBF在会场上非常受欢迎的展示平台,广州一个公司开发的一个小机器,那个机器可以根据观众的外贸打印一个小摆件,可以当作纪念品带走。实现这样的好玩的设备是什么原理呢?很简单,两样东西,3D打印机和实感技术摄像头,通过这个摄像头把观众的面貌给摆下来,然后进行处理成三维模型,直接通过打印机打印出来,然后得到人脸的雕塑,最终再把它做精美一点,就成了小摆件。据说一天使用这个工具的观众达到两千多人,可见还是一个非常受欢迎的设备。除了扫描人体、物体之外,同样具有空间扫描能力。这其实很好理解,比如今天我们在这里举行的会场,你想得到它的空间参数,同样只需要拿着平板对着会场扫描一遍,最后它就能够把这个空间变成一个三维的模型,呈现到你的面前。基于空间扫描的功能,我们可以引申到它在家装产业上的应用。可能有过装修经验的人都觉得装修是非常痛苦的事,因为你可能在装修的初期要花大量时间在效果的设计上,而且还要请到某些专业的设计师来帮你提出建议,然后帮你做效果图,查看是否满意这样子。其实这样的工作,我们认为它是非常耗时的工作,但是有替代办法,就是实感技术。比如你现在有一套毛坯房,通过平板把这些毛坯房的空间结构扫描出来,刚才也有提到,它除了把物体三维化之外,还有其他功能,其中比较典型的就是快速测量功能,这是什么意思呢?简单来讲,它能够快速的计算出你的画面中任意两个点之间的距离,也就是说你把一个空间做了3D扫描之后就可以飞快的知道,比如墙高、墙宽,你拿到这些数据之后,而且这些数据就是房屋本身的真实数据,拿到这些数据之后重新定义你的装修风格,这样子是不是会变得更加容易呢?我们再进一步设想,如果你有实感技术的摄像头,拍下空间结构,如果有一个卖家具的卖家,他把家具用摄像头拍下来,在它的数据库存储了大量的有的家具的三维数据,你把两者结合起来,拿到他们家具的数据,然后直接通过简单的拖动放到你自己房屋构造的真实模型中来,是不是可以方便得出你软装的效果呢?在家装中有一个容易被忽略的作用,就是关于地板的设计,为什么要单独提出设计地板呢?因为要查看地板的直观效果是很困难的,不管是用哪种设计图设计。如果用实感技术的摄像头,可以把整个空间按照真实的环境给它建模之后,你再把你的地板做一个模型铺设到空间中去,那你对整个房间的整体会有更加直观的感受,这样子的话,就会让你整个地板的设计也会变得更加贴合你最终的需求。我们看一下它如何改变电商这个行业。大家知道网上店铺和实体店铺的差距在哪儿吗?就是一个试衣间。大家知道因为实体店现在有一个试衣间,虽然只是很小的空间,但是它可以大大的提升用户体验,因为它直接通过试穿可以知道他最终所买产品的属性是否跟自己合适。那么这一点从现在的意义来讲,电商是没法达到这样的效果的。但是如果有了实感技术摄像头,它可以用来扫描人体,另一方面可以扫描货品,两者结合起来就可以在家里搭建一个虚拟的试衣间。当然这个是已经有人做这样的事,不一定是通过实感技术,但我相信实感技术会是很好的解决方案。其实它最终的效果就跟实体店的试衣间非常类似,就把你自己的身材数据扫描出来放到电脑里面去,再通过接受店家传送过来的衣服数据,把两者拼接起来,就知道最终穿衣服的效果是什么样的。这对不经常逛街,喜欢宅在家里的人来讲是很大的福利。同样对于卖家来讲,现在他经常面临的问题是,对于他所展示的物品会需要用到相机拍摄大量二维图片,然后通过PS修的很精美,传到店铺里,让用户了解它的商品。尽管他们花了大量时间,但是用户还是经常退货,因为用户觉得买的货和他想象的不一样。要解决这些问题,我们一方面要缩短店家花在物体展示所花的时间,我们也要解决客户对他所购买产品想象的差异问题。用3D扫描技术,我们相信也会改善这个现状,你把所需要出售的物体扫描,然后建立成3D模型,放到网上展示,用户只需要拖动鼠标就可以全方位了解物品之后,他可能就对这个物品本身会了解的更加详细。我们希望实感技术能够广泛应用到教育和游戏行业中来,这边其实做这样一件事的软件厂商已经非常多了,但我这里只抓取出两个比较有典型代表的两个案例给大家做分享。一个是教育行业的,大家知道现在网上教育很火热,但大家所使用的教材绝大部分都还是教科书式的,比如有些有老师在上面讲课或者有些文字的教材,然后放到平板上让小孩子来阅读。那其实除了它的学习地点不一样之外,跟传统教育的方式并没有太大区别。我们如何来改变这个状况呢?我相信实感技术在里面大有可为的,大家可以看到左边这幅图,它其实画出了很多标线,它要展示什么呢?当你讲解物理学知识的时候,你可能以前要制作一个非常抽象的动画也好或者课间也好,来给大家阐述这样一个物理原理到底什么情形,你通过它把现实情况中的桌子、椅子或者其他的物品,3D建模之后,直接在下面进行编辑,这样子用来阐述这些原理是不是可以变得更直观呢?同样的,你以前学几何的时候,可能老师要给你讲一个桌子是长方体的东西,可能没办法把桌子告诉你哪里是长宽高,如果你用实感技术扫描桌子,就可以把它放到电子载体上,然后给学生来做详尽的讲解。其实用实感技术做游戏的案例就更多了,这边有一个例子,大家可以看到左边这幅图,这到底是什么东西呢?我给大家简单介绍一下,其实它非常简单,就是玩家操作火星车,不断躲避陨石。这个场景非常简单,但是有趣点在哪儿呢?大家可以注意到它的整个游戏背景是没有整理的被子而已,只不过把这些被子的表面通过颜色渲染,做出来像火星表面。这个游戏不说好不好玩,但是很有趣,可以把现实场景变成游戏背景,平板移动之后,背景根据你扫描到的现实生活中的场景时时变化,让玩家自主的决定他想在什么样的环境下玩游戏。从这个角度来,它其实有点类似于现在非常流行的增强现实的概念。我知道也有很多公司做这样的事情,这边是非常简单的例子,如果你基于这样的技术可以制造更加复杂的场景。最后我们再回到作为摄像头本身的功能上讲,拍照和拍摄。虽然拍照和拍摄是非常简单的功能,但实际上可能也是平板手机用户最常用的两个功能之一,以往我们拍摄一个照片之后,可能你就是拍完以后来看的时候,你能回忆起当时的场景,但是某些特殊的照片就没办法处理它。以前网上有一个新闻,一个父亲非常喜欢自己的女儿,每年生日的时候,给他女儿拍张照片,一直拍到20多岁。这本来很有趣。我们是否可以做的更加有趣一点呢?大家知道实感技术我们可以拍摄两点之间的距离,如果你有小孩子,你用实感技术给小孩子拍照,你可以知道他15岁1.6米,18岁他一下子变成1.7米,你可以直观的看到这些数据。作为父亲来讲,这也是一件非常开心的事情。既然它具有快速测量的功能,我们就可以做进一步的想象,看它是否运用到运动行业中来,大家知道运动本身是非常动态的过程,有的数据很难获得,比如图中所列出来的跳远的运动,更复杂的,比如跳高更难测量,因为最高点只是一瞬间,你想知道一个人到底跳多高,你不可能让他停留在最高点上,等着你测量。如果用实感技术,它可以拍摄一个非常连贯的一系列的照片或者视频,拍下来之后,只需要再回头看这段视频的时候,找到它的最高点,那么你就可以快速获得他到底跳了多高,这让测量会变得非常简易。关于照片的应用其实还有一个非常有意思的应用,就是对焦功能,刚才讲原理提到三维化原理就是准确的计算某个物体的精确的位置,意思是拍摄完照片之后,已经把任何物体的位置给精确的保留在照片之中,这就让我们重对焦变成可能。你拍摄足球运动的时候,当时拍的时候是想看清楚带球运动员的表情,你可能对焦到他的脸上,回头看照片的时候,想知道对方守门员在干什么,拿到照片之后,只要简单的点击动作,就可以把焦对到守门员的脸上,你可以清晰看到在场所有人的表情是什么样,这样子让你浏览照片的时候会变得更加有趣。基于这样的重对焦的功能,还有很多别的应用场景。这里有提到动态的效果,因为它可以任意改变对角的点。如果持续改变对焦点就可以达到非常有意思的动态效果。关于照片还有很多引申功能,大家会喜欢拍照片进行PS,增加很多滤镜,然后看起来产生不同的效果。左边有一个小例子,几个小朋友放风筝,可能拍下来之后,你想达到右下角的效果,让画面正中的小男孩的身体彩色,其他人作为背景只是黑白的画面。借助实感技术,可以让这个过程变得非常简单,你把你所关注的物体圈出来,然其他不关注的物体全部黑白化,这个动作在以前可能需要非常专业的PS的工具来完成这个目标,比如把这个图像抠下来,做出来之,然后再把图复原等等手段。现在用实感技术,可以配合相应的软件,你只是普通的用户就可以达到这样的效果。大家经常拍集体照,有时候你不在里面,你希望你也出现在照片里面,同样可以借助实感技术,单独给自己拍照,然后裁剪出来,然后拖放到里面。这比现在所有的抠图软件抠出来好很多。最后关于照片这块,可能再给大家多举一个例子,就是特效方面。拍照之后,大家可能希望制造动态的效果,比如图片中下雪的功能,不知道大家是否注意这其中有一只小狗头上有雪白,这样的功能可能以前很难想象,因为图片上面增加特效,因为没办法分辨哪些是真实的物体或者近远等,只能浮在上面。但是有3D之后就可以实现这些特效。其实跟大家构造了这么多想象的应用场景,我们更希望的是越来越多的开发者能够加入到实感技术的开发团队中来,让他们可以发挥他们的想象力,创造出更多更有意思的应用。关于实感技术更多的细节,大家可以随时找到Intel相关的同事进行更多的了解,而且在不久的将来,实感技术的设备会变得越来越大,对开发者来讲也是非常好的福利。今天我的演讲到此结束。谢谢!主持人:大家听到实感技术可以帮大家做很多以前做不到的事情,不知道是否有一些现场的问题?提问:如果一个设备要使用实感技术要用哪些东西,是不是要集成特殊的摄像头?陈衎:现在实感技术有两个形式,一个是独立的实感技术,就和普通的USB摄像头类似,直接插到PC上用。另外一个是集成式的,嵌入平板里面,作为摄像头模块,在背面作为后置摄像头。提问:用Intel摄像头加在平板上可以用?陈衎:是的。提问:对于芯片有没有要求?陈衎:除了摄像头本身之外,还有很多支持的软件,它运行是需要硬件支持,它需要跑在Intel的CPU上。在最新的IntelCPU中,它对实感技术是支持的。提问:关于你们有一款后置摄像头,你提到很多家装的应用,后置摄像头的水平和视角大概多少,还有拍摄出来的图片能否转换出来已有3D格式?陈衎:关于3D格式,这块其实实感技术输出的3D格式是支持很多现有的格式,所以如果你需要得到某些更特殊的格式,我相信现在很多软件可以做转换,3D格式兼容性是非常好的。关于精确度这块,您刚才提到关于视角等等,这块我觉得应该讲依赖很多方面,除了实感技术本身的摄像头属性之外,还跟最终的软件,需要的精确度以及软件的实现方式等等都有很大的区别,包括应用场景等等。再讲个简单的场景,如果物体隔的很远,相对来说,你可能不能指望太高,这可能有范围的。提问:你们现在输出的,对人进行建模的时候有输出骨架信息吗?陈衎:比如你要输出骨架信息的话,其实有另外一个非常详细的介绍,那它主要是会应用到F200的场景之上。我刚才没有给大家提到F200和R200在应用场景上有做区分,F200可以精准是别人的骨骼架构,为什么这样做?前置摄像头经常有玩家希望通过手势控制游戏中的某些人物,比如还有有些手势动作来控制游戏。这样子是需要对骨骼进行分析、建模的,它应该是可以把手建成16还是26个点。提问:自然光光照对它的影响大吗,因为它是全波段,咱们是红外做的?陈衎:这部分我没有这样的数据,我可以了解一下。比如说室内环境,包括我们这样的演示环境,之前有做过测试,完全没有问题。如果在非常极端的情况下,比如激光光束或者太阳光直射就没有这样的数据。提问:实感技术的产品有没有说它对处理器有要求?因为我们有一个合作伙伴在开发的时候,给我提到需要HTML5这个平台才可以流畅执行,在其他的平台会不会有这方面的限制?功耗,发热量怎么样,还有耗电怎么样?陈衎:第一个问题很好,HTML5是windows的平台,关于灵动这块,因为它背后有很复杂的算法运行,所以它还是有限制的。当然比较幸运的,最新Intel的架构是以集成之后的所有架构都会支持实感技术。提问:集成所有相关的算法和功能?陈衎:对。算法如果有需要的话,可以直接从网上下载下来。就是XDK这块也是需要下载。提问:开发应用是不是要使用Intel的ICC等才能发挥功能?陈衎:不需要。你知道ICC是完全兼容GCC的。提问:如果要开基于指令集的开关,GCC不可能把相关的功能整合到GCC平台上,编译器上,这个实现不区分编译器?陈衎:对,这些我们做过大量优化,不管看什么,可能对它来讲结果都没有太大影响,因为已经优化过。所以在开发者的角度来讲,你可能不太需要关注性能这块。你编译的过程,你只要考虑你所实现的功能就好了。比如你觉得需要哪些开关就去开关它。提问:功耗的耗电和发热呢?在平板上没有散热空间。陈衎:很快我们有实物出来,功耗和发热效果和本身平板的工艺有很大关系,至于摄像头本身的功耗。提问:照相可以不关心这个问题,如果我们开发一个应用,像你刚才里面演示的,连续的一直开着,比如建模什么的,这上面搭载了什么东西,这就涉及功耗,而且还有那么多传感器和摄像头。陈衎:是,还是刚才我的回答,它和平板本身的设计有关系,包括你怎么布板,散热是怎么处理的,这都是有关系的。摄像头本身的功耗要讲的话,意义不是很大,就算是用同样的CPU做出来的平板功耗都千差万别。主持人:非常谢谢陈衎。我们接下来的演讲者会跟大家更进一步探讨有关Intel的开发工具,接下来要介绍的这款IntelSystemStudio是Intel的明星软件开发工具,我们特意请到Intel软件事业部,但是专门做工具开发的高级技术咨询工程师汪洋来为我们做介绍。欢迎!汪洋:大家好!我和大家一起分享一下我们的开发工具,叫IntelSystemStudio。前面大家可能听说了,我们有ICC、IPP、TPP这些工具,在这里我先告知一下,这些工具都是我们IntelSystemStudio的一部分。以前可能听说过Intel的其他开发工具。但是这块我们用到的开发工具是IntelSystemStudio。今天我给大家分享一下这个工具到底如何帮助我们的开发人员。我们知道最近几年智能的联网设备处于爆发性的增长过程,这就给系统或者是应用的开发人员带来很大的挑战,系统的复杂度和人应用的复杂性越来越高。为了解决这样一个挑战,我们的软件开发人员就需要这么一套工具,这套工具必须满足一些特点,必须是很完备的工具,必须涵盖整个开发流程,从设计、开发、调试、优化。并且这套工具还必须是使用起来非常简单,很方便使用,快速帮助我们的软件开发人员在很复杂的系统里面解决问题。现在移动或者嵌入式的环境下,对功耗和性能的要求非常高,我们必须要有这样的工具帮助开发人员来优化功耗,提高性能。针对Intel的开发平台我们就推出了这么一款工具,叫IntelSystemStudio,主要有几大好处:一是加速产品的开发周期,中国很多开发人员开发产品,项目很多喜欢短平快的项目。使用工具能够帮助我们加速开发,缩短开发周期,尽快使你的产品上市。二是提高系统的稳定性以及提高系统的功耗和性能。我们说了要加速开发,并且提高系统的稳定性和功耗性能,由我们IntelSystemStudio里面哪些工具来支持呢?我们这边是把这些工具分成了三大块,分别是编译器和库,分析器和调试器,我们的工具急于硬件和调试盒子的调试器。也有基于开源GDB的调试器,分别帮助开发人员调试底层的或者是驱动这样的底层开发人员来做这种基于硬件的源码集调试。第二个调试是有GDB,基于GDB的开源调试器,我们在这个基础上增加很多功能,比如GDB上针对于并行程序进行调试的功能,比如我们在开发过程中经常碰到开发并行程序的时候喷到数据竞争之类的问题,通过这种我们所提供的GDB帮助我们快速定位类似的问题。除了调试器,我们还有分析器,主要分成两部分:性能和功耗的分析,这是我后面会要重点讲的分析器。第二部分是跟内存和线程相关的分析器,我们经常碰到内存泄露或者发现死锁的问题或者数据竞争的问题,这都是通过我们的工具可以帮助我们定位解决。第三大块是编译器,我们经常提到有Intel的编译器,有Intel的IPP函数库等,这些工具能够很方便的帮助我们来提高我们的系统或者应用程序的性能。这些工具支持的操作系统,我们当然在传统的Linux、windows上都支持,Android也是我们主要目标之一,还有其他的,都是我们的支持目标。我们工具支持的硬件平台从大河到小河,几乎所有都提供支持。比如低端的我们的工具业提供支持,大到灵动这边的处理器。这套工具主要帮助的开发人员,只要你在Intel平台上做嵌入式或者移动的软件或者是系统开发的,基本都可以从这套工具里面受益。我们刚才讲了有编译器和库,还有调试器等,这是一整套开发工具集,这里面具体有哪些工具?这个表里面清晰的帮我们列出来,具体的工具以及包括它支持的操作系统,以及它支持的开发平台,我们知道特别是针对Android来讲,我们一般都是使用一种跨平台的开发方式。比如说我们的工作环境还是在windows或者Linux,我们实际是运行在Android系统上的。我们的工具也支持跨平台的开发方式,就是我们的工具可以既使用在windows平台上,也可以在Linux平台上安装,我们的开发和数据收集或者调试,都是跨平台的,通过网络或者是ADB来连到设备上,来远程调试或者数据收集。从编译器和库来看的话,主要有这么几个,Intel的编译器是我们的主打产品之一,还有一些其他的,当然你也听说过,在其他的工具里面,像IntelSystemStudio。这些函数库对安卓的支持只有在IntelSystemStudio里面才会提供的。我们有硬件调试器还有软件调试器。从性能和功耗的分析来讲有这么几个产品,大家可能已经看到过。这是IntelSystemStudio里面唯一提供的工具,其他的开发工具里面是没有的,是帮助我们分析嵌入式和移动设备的功耗的。我们还有刚才说的对于内存和多线程错误进行检查和分析的工具。还有三套分析工具是针对GPU做分析的,针对Intel的GPU来进行性能的具体分析。这个图清楚的展示工具里面的具体部分,从开发、优化我们就有编译器和高性能函数库进行支持,我们的编译器是和其他的那些开发的环境是可以集成的,比如说在Android目标系统当中,我们和安卓的XDK等做集成,还可以和安卓最新的AndroidStudio里面做集成,可以很方便的切换。有些人喜欢在windows上开发Android应用,这也是我们支持的目标。分析来讲的话,我们刚才讲了有具体性能的分析等三套工具,调试有系统集调试和应用集调试。Intel编译器大家多少有听说,为什么要应用Intel编译器?主要的好处是来自于性能,这是编译器和GCC最新版本,GCC5.1做的对比,也是我们16.0,应该是一两个月前刚刚创新的版本,这些也是针对嵌入式和移动的分析。大家的编译选项都是属于最好的编译的选项的基础上来做对比,从图上我们可以看出Intel编译器比GCC性能好处非常多,我们性能、数据大概翻了1倍。Intel编译器的主要好处来源于哪些?相比GCC或者其他编译器来讲,Intel有非常多针对Intel架构的指令集的优化,还有高级的优化。像Intel提供了一些优化,是由Intel编译器里面的自动向量化来实现的。这个优化在其他的编译器里面,可能也实现了,但是实现都不是非常的好。还有Intel编译器里面我们业提供高级优化,比如IPO优化,编译器我们知道是.C到.O的过程,我们把原文件编译成.O,就是二进制文件,这个链接起来形成可视性文件。这个过程在最终生成.O的优化很少了,最主要的优化是.O到.C的过程,Intel编译器可以在生成.O的时候插入特殊的中间代码,这样可以做到Linux阶段跨文件的优化,这样可以给现在很多项目带来很多性能提升的关键优化。我们讲Intel有高性能库,IPP函数库在Intel上面应用非常广泛。Intel自己也提供了很多东西,很多里面都是用IPP库里面的算法实现的。IPP函数库由Intel工程师对底层的函数来实现的高性能的函数库,它支持Intel所有平台,包括在Android这块用的比较多的,灵动上用的比较多的。比如最新的灵动,基于这个核的灵动处理器,这个在我们IPP里面都有具体实现。在不同的平台上,我们的ITP的实现针对于数据压缩来看,我们比其他的要好30%以上。我前段时间也和一些OEM厂商做这种系统的优化,我们发现有的时候去点这个Android里面某些应用的时候,它的显示非常慢,这时候过段时间,你可以感觉到延时,然后才出来一些图片,我们通过我们的工具定位出来,它其实做PNG的解码,最终是调内部PNG,然后调其他的东西,它就是做PNG的解码,这个解码在IPP里面有具体的实现。我们就把这个的函数用IPP的实现替换,很简单的几行代码替换以后,我们的性能就有30%的提升。同样的操作,用户体验相对来讲也得到很高的提升。这是属于IntelSystemStudio里面的灭性产品,是IntelVTuneAmplifier,这是做性能分析的一个必不可少的工具。VTune也支持Android系统的性能分析,Utune作为好的性能分析软件需要具备几大关键点,其中就说我们是去收集数据的,我们性能数据可以收集到,但是数据的解析也非常重要。数据毕竟是数据,我们需要理解这个数据才能有这些数据来给我们优化提供方向,那么在Utune里面,Intel架构会有一个硬件的单元,这个单元是提供了实时的CPU运行时候的数据,Utune会采样硬件单元然后收集性能数据,根据这些性能数据映射到运行环境。在Utune里面就可以看到你的CPU时间或者是你的其他性能的数据是被映射到你具体的哪个进程、那个线程或者哪个模块,或者是哪个函数等,这都可以通过Utune实现的。它提供了非常好的数据分析的截面,它对于我们收集到的数据快速提供热点的分析,它会根据我们的排序,比如我们按照函数或者调用站配需,快速调用到这次数据收集里面的运行时间最长的那个函数,或者可以按照你的进程、按照你的线程或者模块来进行定位。Utune里面有非常好的关键时间线,通过这个时间线能够快速的帮助我们了解到我们现在这次数据性能收集过程中的性能数据被映射到具体的线程以后,它在时间线上的反映。这次数据收集过程中,前面的运行都是性能还不错,中间可能会卡断,这会反映在时间线上,可能会有突出的峰值。通过我们的时间线,我们可以很方便的分析到我们线程或者我们进程的一些行为。另外Utune还有非常强大的过滤的功能,比如整个系统的性能数据收集以后,我只想看我关心的那部分数据,这时候就可以选择关心的数据对它进行过滤。我现在只关心其中某个函数在时间线上,它的性能数据是怎么样的,你选择以后,在这个时间线上就只会显示哪个函数所花费的CPU的开销,或者在我的数据收集过程当中,我只关心其中的几秒钟时间的性能数据,只要在时间上面选一个区间,在上面的性能数据只显示5秒钟之内的数据,这是Utune所提供的非常好的帮助我们解释性能数据的这么一些功能。其中有一个最大的功能,我们找到性能的热点,在哪些模块、哪些函数,要定位到具体的源码和汇编代码里面,你双击函数,就可以定位到具体函数以及函数定位的源码,我们一些性能数据可以具体映射到某行源码等。这是实际的例子,我们曾经和一些客户来做了一些关于Android5.0上对于APK安装的优化,我们知道Android5.0以后做了一件事,在APK安装的时候会调编译器,最终会调一个进程,这个进程会把你的APK里面Java的代码,就是DS文件在安装的时候编译城OAT文件。它就是做这么一件事,它在运行的时候创建4个线程,这4个线程同时运行,Google这样做有它的好处和道理,但实际上在一些比较低端的平台上,这么个操作会带来比较痛苦的用户体验,就是我的安装时间明显变长了,我们要优化安装时间。通过Utune这样的工具来看怎么优化,这个例子里面我们当时可以看到DSOAT这么一个进程创建了4个线程,在四核APU上,每个线程都运行在四个APU上,通过Utune到硬件CPU的这么一个方式查看,我们可以看到每个线程都会在四个CPU上频繁的运行。这就给我们带来一个问题,我现在创建了4个线程,总共4个CPU,每个只会运行到一个具体的CPU上,现在做频繁的CPU的切换,这样必定带来很大的CPU线程频繁切换的开销,这个开销还是很大的。后来我们做了优化,我们把线程和CPU做了绑定,在ART的更新里面做了一个操作,那么以后我们的性能一下子就上去了。安装时间大概能减少30%。通过优化以后,我们可以看到CPU的时间开销都是绑定在具体的CPU上,不是具体频繁的切换。这是很典型的例子。IntelSystemStudio里面用的一个工具EnergyProfiler,这是做功耗分析的工具,这个工具其实有两部分,一个是在我们的Android系统上做功耗数据的收集,收集回来的数据我们在EnergyProfiler里面查询和收集。我们收集的文件可以通过Utune打开。我们知道现在的功耗分析很多时候都是用硬件,就是去插线,插在硬件的某些具体的部位来衡量实际功耗。我们用这个采用一种软件方式帮助开发人员优化功耗,这种方式使用起来非常简单,不需要特殊的硬件设备。像这种分析的话,我们知道系统在某个特定状态下,每个部件都有自己的状态。对于CPU来讲,它有自己的运行状态或者是睡眠状态,或者运行的时候,可以工作在不同的频率上。我们的工具就是对当前系统的部件,比如CPU等的当前状态进行采样,或者把这些状态收集回来,来帮助我们进行功耗数据的分析。看一个例子,这是实际和功耗相关的例子。以前我们有客户说在Android平板上用Google默认提供的视频播放器播放视频,看起来一切正常,但是安装第三方的视频播放器以后,它的功耗开销一下子变大,电池很快被耗光。这种情况不知道是什么原因,他以为是机器的原因。这种情况怎么办?我们用IntelEnergyProfiler来看。我们采样的数据采样30秒钟在四核机器上,我们可以看到CPU的频率,在上面这个图里面,我们可以看到这个CPU大部分时间是工作在睡眠状态,一部分时间是533MHZ,下面是第三方的播放器,第三方的播放器明显频率一下子上去了,工作在1.5G高频上,而且时间长。我们看CPU的状态,在时间线上我们可以明显看出来,这个浅绿色CPU是一直在工作状态,深绿色是水面状态。CPU在第三方应用的基础上,它有很大一部分时间都是非零的,比上面使用原生的要高。这种情况,我们结合我们的工具对它进行采样,分析CPU运行的时候做什么任务,发现第三方库做视频播放的时候视频解码有很多没有用硬件解码器,都是用软件解的。这种情况发生以后,我们知道第三方的视频播放器在这种情况肯定开销功耗很大。看一下客户的反馈,这些工具在外面使用非常广泛,曾经有公司用了我们的工具,做这种性能分析,根据他们的经验,他们原来找热点,分析热点,可能要花一天时间。但是用我们的工具5分钟就可以搞定。Intel编译器可以提高生产效率,我们的编译器和GCC是兼容的,这种情况客户反馈说有700万行的代码,用我们的编译器3天时间就可以切换回来,并且有很好的性能提升。对于我们的调试机来讲,特别是对于一个公司来讲,如果你是刚开始要做硬件的底层的一些开发的话,用调试器可以快速帮我们解决代码里面的正确性问题。最后这一页也是,其中一个做平板的,也是做安卓平板,做APP应用,是电子阅读器,通过我们Utune的工具把功耗降低3倍。最后一个是中国的一个公司,它应用我们的工具,主要是Utune、IPP、ICC这些工具,对他们的视频录像系统的性能提高了10%。所以使用这些工具好处还是非常明显。在上个月,我们刚刚开发了2016版本,支持索非亚的平台,还有一些其他的平台也可以支持。windows10也是我们支持的新平台,Android一直是支持的平台。小结一下,这里面工具分成三大块:调试器、分析器和编译器。具体的话,我们有一个网站,这上面可能显示不太清楚,我们可以百度或者Google上搜索一下IntelSystemStudio,应该很方便就可以找到我们的网站,可以试用一下。谢谢!提问:刚才关于电源管理测试的软件,它是主要针对于Intel平台的X86架构还是针对所有Android平台?汪洋:只对Intel。提问:如果做电源管理的话,因为软件去做电源管理,一般都是设定功耗,设定出来是多少功耗,每个IPK打出来多少功耗?比如我的屏幕亮度是600ma、800ma不定,做这种电源管理的话,它是不是存在一定的偏差,还是只针对于CPU的频率做CPU方面的电源管理?汪洋:我们帮你做功耗分析,不是做电源管理,本身不做管理。根据实际当前运行的情况,它采样这个数据,得到数据以后,根据这个数据你自己发现里面是不是有异常,根据这个数据分析和优化。提问:主要针对CPU的频率?汪洋:CPU的频率、状态,SUC的状态还有其他的部件,还有系统的状态等,它都会给你提供出来。它不光是CPU,还有一些其他的。提问:关于调试器,底层库之前,像AndroidStudio,如果调之后,错了,具体定位到哪个代码,可不可以定位到源码级?汪洋:可以。提问:基于源码的架构,有的项目我想移到Intel的平台上来,需要做哪些工作?就比较麻烦还是比较简单?汪洋:里面涉及的东西比较多,我碰到的比较大的挑战就是看你的指令,一般来讲,如果你原来的编译,有些要切换编译器,有些数据对齐方式不一样,或者摆的不一样。还有一些其他的,比如底层的指令,比如ARM用的指令,Intel用的是SSSE,现在有解决办法,Intel专门出了一个文件,把一些指令可以自动转化到Intel平台上。你要移植过来,应该困难不大,主要前提都是在C++代码,Java代码不能替代。主持人:谢谢汪洋!刚才是对我们的开发工具做了非常详尽的介绍,接下来我们会谈到跨平台开发,这也是这些年很多开发者很关注的趋势。我们接下来的演讲会讲到基于HTML5跨平台的引擎和跨平台的开发环境,IntelXDK,有请开源技术中心的工程师孙林为大家作介绍。欢迎!孙林:大家好!很久以前,web开发仅仅局限于演示,随着HTML5标准的演进,这个状况大幅度改变。最新的HTML5的标准,对于图形多媒体支持很强,支持了很多工具最新的特性,它还有离线能力,而且还有很强的设备访问能力,比如可以访问设备生产器等。在开发者的资质方面,一方面是有了HTML5这样针对平台开发的游戏引擎,还有一些非常灵活、强大的开发框架。而且利用数百个插件,还可以轻松的集成,网络支付、社交分享等一系列功能。随着标准的演进和web引擎的性能增强,web应用终于有了可以和原生应用一较高低的实力。首先是Android平台的碎片化,这个图是我们针对中国市场做的调查。我们可以首先看到,直到4.4开始,Android才用到这个非常旧的版本,而且无法单独更新。4.4之前有一个非常大的份额,这些都只能使用Android的平台。做过移动开发的人应该有切身的感受,它的性能是非常差的。Android5.0开始才开始引入新的版本,这个版本的更新频率也是远远落后于正常的周期,就是因为Android的包袱很重,所以Google无法对它做剧烈的升级。除了Android的碎片化,还有一个问题,我们为什么选择web?因为开发成本低,开发一次就可以在不同的平台运行。web开发可以跨越硬件门槛,但是还要面临不同的问题,里面不同的功能有很大的差异。进入HTML5的时代之后,对标准的支持频率不一样。web要么对所有平台做一一适配,这样都增加开发者开发和调试的成本。另外一点就是对性能的需求增高,现在web应用不仅局限于日常简单的应用,还深入火爆的游戏市场,这种游戏之中可能会有一些画面比较绚丽,对UI比较精致的游戏,它显然满足不了这样的要求。即使是HTML5API规划不断扩展,但是在访问设备的API,比如访问设备的通讯录方面,还有一些功能,网络支付、社交等功能,这方面目前还没有很好的API的扩展。而我们就是致力于解决这些痛点的新的HTML5引擎。利用这个可以将web引擎切入到自己的应用中,这样的话,在任何版本支持的平台都可以获得一致的浏览体验。这无论是对开发者还是用户都是巨大的好处。这两个特性对图形和多媒体方面会很大的提升预算性能。而且它很注重游戏应用,我们专门提供游戏模式来对游戏引擎有更好的支持,在外面门口的展台就有我们的DEMO,大家可以参观。它提供扩展机制,帮助用户实现一些常用的功能。下面对Crosswalk做一个简单的介绍,它每六周会更新一次版本,每次更新的时候都会引入最新的Crosswalk代码,它紧随最新的W3C标准和HTML5功能,它以BSD协议完全开源免费。主力的平台是很重要的,支持Android4.0以上的版本。我们可以保证在目前市面上各种主流移动设备,包括手机、平板上流畅运行。这个表可以看到Crosswalk目前的影响力,首先它已经支持了各种主流的HTML5的开发框架。截止到2015年7月份,在Googleplay上有超过两千款Crosswalk的应用,而且数量达到百万级以上。我们不仅局限于自己的开发,还有自己的标准化,我们在很多方面推动了标准的进展。下面可以看到右边表格的功能对比,可以看到有没有Crosswalk在功能上,有了Crosswalk功能上有很多补充。我们不仅局限于主浏览器的基本功能,而且浏览器之前将新的技术引入其中。比如这个API,它用于展示用,它在旁边的屏幕上跟当前的游戏设备同样的画面展示,这些展示都是通过无线来做的。而且Crosswalk本身是有些非常激进的功能,这些功能在web是不会开启的,我们也可以开启这些实验性的功能。下面说一下Crosswalk对性能的改进,首先是SIMD,代表单指令,不多数据,利用数据的变形性对多个数据进行相同的操作。目前可以有四组运算,如果说正常的运行需要做4次加法,但是如果用SMID会将这四个数字放入向量之中,然后继续一次运算就可以大大加快运算速度,降低电量的消耗。下面这几个DEMO在外面都有实际演示,第一个是保证相同的运算能力的情况下,我们可以看到用了SIMD,画面可以显示更多的元素。第一个DEMO是在相同的FPS的情况下,第二个是相同画面的情况下,用了SIMD之后,桢数是没有起用的2倍。还要提一下SIMD目前仅只支持Intel的CPU。webCL是基于Khronos组织基于OpenCL标准制定的一款Java为ScriptAPI。第一个DEMO是对画面的平滑化做了处理,这方面可以提高15倍的运算能力。第二个光影效果,在图象处理提高2.3倍的性能提高等。游戏的方案,目前我们谈一下市面上主流游戏开发解决方案,这个图是最上层是游戏引擎和库,中间就是web引擎,这种架构的优化一般来讲有两方面,首先第一方面就是游戏引擎上做优化,这方面因为必须要针对web新能差了,必须在引擎上做优化适应新性能。这个引擎还要针对不同的浏览器做不同的适配,不管怎样,它其实都会影响最终的运算性能。另一方面以性能为基础,它直接照看了web的引擎,直接做ZS的绑定,将上层的ZS的API绑定到底层操作系统的接口。这样有一个问题,丧失灵活性。因为在上层的API,每增加一个新功能都会在上面加对应的支持。有没有一种方案可以有下面的绑定层,同时还能具备灵活的API,这时候就是我们Crosswalk的游戏模式。游戏模式是以第二种方案为基础的,从上往下依次是游戏引擎的KPI,下面是原生游戏引擎。从这里可以看到,它可以直接使用原生游戏引擎。在此之上,我们提供了完整的功能,开发者可以使用所有符合标准的KPI,还有一些插件,游戏里面非常重要的功能,社交分享等,只要加插件就可以轻松实现。目前Crosswalk等进行深入合作,推动了新的游戏引擎,这个游戏引擎的性能已经非常接近,比正常的性能提高8倍以上。基于这个引擎的小怪物,目前发布在了Googleplace上。现在我们谈一下Crosswalk的应用是什么样的,左边是最普通的web应用,它直接使用系统本身的web应用来做的。第二个是Crosswalk应用的模型。这里面包含了很多东西,这个运行里面既有渲染引擎,还有扩展,还有windows8的GS引擎。这种情况下,引用、内容和Crosswalk里面的库文件是绑定在一个系统中,这样可以跳过系统的webview。这是一个应用打包流程,对开发者来讲他需要提供的就是最基本的web内容。Crosswalk提供一个命令行打包工具,开发者只需要一个命令就可以将它自己存的HTML5内容打包成APK放在Android上。我们还提供一个文件,通过这个文件,开发者可以指定Crosswalk的特性。比如说打开或者关闭硬件加速上。下面我们重点说一下Crosswalk的应用如何运行,它是web引擎。第一个模式是最常用、最标准的嵌入模式,每个应用都包含完整的Crosswalk引擎,这样的话,一个优势是应用绑定在一起,开发者对于自己的引擎处理的效果有完整的预估,缺点很明显。因为Crosswalk引擎的体积非常大,有20M左右,极大的增加文件的尺寸。另外一点正好相反,是共享模式,这种模式下,就类似现在通常的安装方式。Crosswalk引擎是作为单纯的APK装在设备上,在设备上所有都可以共享。他相对于最原始的外包内容,只增加几百,这还是非平台基础的。缺点很明显,好比你在很多老旧的机器上没有安装Java,你第一次启动会要你安装,这样首次启动的流程会被打断针对共享模式我们做了优化,就是后台下载模式,这种模式主要针对这种情况,游戏的中心,用户启动这个应用的时候并不一定要玩网络游戏,有可能浏览很多排名,有一段时间之后才会打开网页web游戏,这时候可以用后台下载模式。它的应用还是一样打包的,但是启动的时候,如果这个设备没有安装,它并不会让用户下载,在后台会默默下载,然后默默安装,这样用户实际上在打开网页的界面的时候,使用Crosswalk引擎的时候,它已经部署好了。还有经济模式,它对一般模块进行优化,然后体积缩小一半,在10M左右,它模式做了修改,它有自己的迭代周期,它不会有最新的HTML5的特性。对某些引用,如果是混合应用,有大量的原生代码,在某个界面使用Crosswalk引擎,这种时候我们提供完全和webview一样的KIP,这样开发者来控制和处理这个部分。这时候还可以利用扩展机制来自定义自己的API。最后我们再说一下Intel的XDK,提供设计、开发、调试一站式的开发流,它是一个非常高效的开发平台工具,它可以非常方便的来打包基于Crosswalk的应用或者是混合的应用。除了标准的IED功能之外,它可以模拟不同的设备运行情况,而且还有个Preview功能,通常的IDE,开发者修改代码,它可以重新绕一下。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度新能源电动车研发与生产承包合同
- 2024年度建筑企业融资租赁合同
- 04年物流仓储服务合同范本
- 2024年度农业保险服务合同
- 紧身套衫市场需求与消费特点分析
- 2024年度技术转让合同转让技术范围与技术保密
- 2024年度大数据分析服务合同:某数据公司与某金融机构之间的大数据分析服务合同
- 2024年度混凝土输送泵车租赁合同书
- 蚕丝被市场发展预测和趋势分析
- 2024年度教育培训合同及服务协议
- 2023湖南长沙市食品药品检验所公开招聘普通雇员19人模拟备考预测(共1000题含答案解析)综合试卷
- 浅析1980年代“现代派”小说的历史意蕴及现实意义
- 数值课件第章非线性方程求根
- 马来西亚民俗与禁忌
- 09《马克思主义政治经济学概论(第二版)》第九章
- 图消防安全三自主两公开一承诺公示牌模板
- 农业合作社全套报表(已设公式)-资产负债表-盈余及盈余分配表-成员权益变动表-现金流量表
- TCADERM 5016-2023 骨髓腔输液技术要求
- 学生常见病防治工作制度
- 高速公路施工交通组织专项方案
- 全国教师教学创新团队申报书(范例)
评论
0/150
提交评论