基于英特爾架構(gòu)的安卓系統(tǒng)開發(fā)專題研討會_第1頁
基于英特爾架構(gòu)的安卓系統(tǒng)開發(fā)專題研討會_第2頁
基于英特爾架構(gòu)的安卓系統(tǒng)開發(fā)專題研討會_第3頁
基于英特爾架構(gòu)的安卓系統(tǒng)開發(fā)專題研討會_第4頁
基于英特爾架構(gòu)的安卓系統(tǒng)開發(fā)專題研討會_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

基于英特爾架構(gòu)的安卓系統(tǒng)開發(fā)專題研討會時間:2015年10月22日地點(diǎn):華僑城洲際酒店大宴會廳2實錄內(nèi)容:主持人:歡迎各位的光臨,大家下午好!這邊是Intel的專場,我們在這邊會跟大家分享Intel我們在移動領(lǐng)域,特別是在安卓系統(tǒng)開發(fā)方面的很多的好的工具和我們經(jīng)驗的分享。今天非常榮幸的請到Intel公司軟件部專門負(fù)責(zé)軟件生態(tài)系統(tǒng),包括很多工具開發(fā)的專家,還有我們Intel移動產(chǎn)品系統(tǒng)專門負(fù)責(zé)產(chǎn)品和生態(tài)系統(tǒng)方面的同事來參加我們的研討會。我看到有很多早早的已經(jīng)坐在這邊了,非常感謝。有一般特別的提示,今天所有下午的講座結(jié)束之后,我們會請大家填反饋,大家剛才注冊的時候可能已經(jīng)收到了掃碼反饋的鏈接,大家填了之后會有機(jī)會參與抽獎。今天的大獎還是非常有吸引力的,是機(jī)遇Intel平臺安卓的手機(jī)和平板各兩部,一共是四個大獎的機(jī)會。希望大家到時候都能夠有機(jī)會參與。首先第一個演講,“Intel支持安卓的軟件開發(fā)工具及性能優(yōu)化工具”,我們有請講師朱孟利,他是Intel高級應(yīng)用工程師。有請!朱孟利:大家下午好!我是Intel軟件與服務(wù)事業(yè)群的應(yīng)用工程師,我叫朱孟利。很高興今天下午大概用半個小時的時間跟大家共同分享一下Intel公司對于支持安卓的一些軟件的開發(fā)工具和性能優(yōu)化的工具。報告的議程分為五部分。1、系統(tǒng)工具。講系統(tǒng)工具之前我們先回顧一下Intel的系統(tǒng)軟件發(fā)展和安卓是怎么結(jié)合的。最早結(jié)合是2012年,安卓發(fā)布了基于X86的一個手機(jī),這是安卓系統(tǒng)第一次運(yùn)行在X86的平臺上。2013年初,安卓X86組織發(fā)布了針對于PC的安卓的ROOM,也是基于Intel架構(gòu)。在2013年底,9月份,Google發(fā)布了安卓5.0,5.0上開始支持64位操作系統(tǒng)。Intel的研發(fā)部門和Google共同研發(fā)推進(jìn)了64位操作系統(tǒng)的發(fā)布。2014年底Intel發(fā)布了針對安卓系統(tǒng)的參考設(shè)計。2015年包括2016年,Intel包括安卓會向物聯(lián)網(wǎng)方面,比如機(jī)器人、智能家居等方面進(jìn)行做進(jìn)一步的探索和發(fā)展。Intel提供的安卓系統(tǒng)定制化工具是什么樣的工具呢?因為Intel提供一整套的參考設(shè)計,如果按照這個參考設(shè)計來設(shè)計的平板,就可以通過這個工具來進(jìn)行操作系統(tǒng)的定制化,比如說你的桌面主題是什么樣子,一些預(yù)裝的軟件,整個項目的項目管理,項目整個包的生成,都可以通過這個工具一站式生成,大大加快了整個項目的進(jìn)度和進(jìn)展。這是系統(tǒng)性的工具。2、Intel架構(gòu)下,應(yīng)用開發(fā)需要有些原則,這個原則和ARM有些差別。首先來看安卓的應(yīng)用分幾個大類:一是安卓的應(yīng)用只是使用Java的應(yīng)用,直接運(yùn)行在Java的虛擬機(jī)上,所以它在Intel架構(gòu)的設(shè)備上不需要做額外的資源的調(diào)整,它只需要做一些顯示的適配和調(diào)整就OK。還有一些應(yīng)用是帶本地開發(fā)庫的,用了安卓NDK的應(yīng)用,用NDK會有一些C++等的共享庫,這些共享庫就需要,比如你從ARM到Intel架構(gòu)就需要做重新編譯的工作,但是你的編譯選項上加Intel的編譯指令,C++、C語言庫要進(jìn)行重新編譯。不同的架構(gòu)的數(shù)據(jù)存儲、傳輸格式和數(shù)據(jù)類型的轉(zhuǎn)換有些差異,這一點(diǎn)也要進(jìn)行注意。還有不斷用的NDK,它還是用了一些更底層的匯編語言編成的應(yīng)用,這些應(yīng)用除了上面講的UI要調(diào)試,然后要注意這些C++庫重新編,這些匯編語言也要應(yīng)用到X86指令集進(jìn)行工作。Java分為兩類,這種安卓的應(yīng)用是不需要編譯,調(diào)整UI,有可能需要調(diào)整整個分配,因為不同設(shè)備的分辨率不一樣,要適應(yīng)更高的分辨率。右邊這種是使用了NDK的API,有C++或者C語言的KPI,它的C語言和這些共享庫都要重新編譯,用到匯編指令也要進(jìn)行移植。3、Intel對于Intel架構(gòu)上進(jìn)行軟件開發(fā)的開發(fā)者是如何的支持方式。首先來講,Intel在全球范圍支持范圍很廣,無論在哪里基于X86做應(yīng)用開發(fā),我們都可以支持到。從支持的方式上來講,大概分為三部分:一是有專門的團(tuán)隊,像havok是專門針對圖像圖形的處理。我在的部門有軟件支持,通用軟件功能的支持等。二是我們提供很多的易用的開發(fā)包,這些開發(fā)包包括開發(fā)工具和共享庫,這些庫的底層,就是英特爾把底層發(fā)揮英特爾芯片特性的功能都實現(xiàn),然后把它包裝成工具包,讓開發(fā)者更容易使用的Intel架構(gòu)的底層硬件的特性。三是開發(fā)者論壇,開發(fā)者論壇可以提交一些技術(shù)上的討論,可以做一些技術(shù)的交流。Intel這邊也會有些專家會在上面去發(fā)布一些新技術(shù)的討論或者一些說明文章。大概是這樣三個層次的支持方式。4、有哪些開發(fā)工具和優(yōu)化工具?這是IntelIntegrated,這是跨系統(tǒng)、跨架構(gòu)的集成工具集,它的主機(jī),就是開發(fā)主機(jī)支持windows7到windows8.1,也支持蘋果的系統(tǒng),目標(biāo)主機(jī),也就是開發(fā)的應(yīng)用程序所在的,比如手機(jī)和平板,它支持安卓的應(yīng)用程序,也支持windows的應(yīng)用程序。Android的應(yīng)用程序也支持幾種。這個應(yīng)用程序的工具包是在softwareI這個網(wǎng)站上公開提供的。它有更好的性能,底層是基于X86有優(yōu)化,針對X86架構(gòu)有優(yōu)化。還有就是說可以更快速、更簡便的開發(fā)應(yīng)用程序。它除了IDE,還包括MediaXDK等,還有圖形性能的調(diào)試工具,同時還可以應(yīng)用到第三方的開發(fā)環(huán)境當(dāng)中去。C++編譯器可以顯著提高基于Intel架構(gòu)的應(yīng)用性能,也支持安卓架構(gòu)的應(yīng)用程序。顯著提高到什么程度呢?和通用的GCC編譯器比較,它可以提高30%的性能,性能指標(biāo)可以提高30%。還有性能分析的工具,就是VTuneAmplifier,它的優(yōu)點(diǎn)是運(yùn)行時系統(tǒng)分析和應(yīng)用狀態(tài)的分析,幫助開發(fā)者找到性能的瓶頸,然后解決這個程序的性能問題。還有圖形性能的分析器,GPA系統(tǒng)分析器。還有一個工具,大家在開發(fā)過程中應(yīng)該有遇到,安卓提供的模擬器實際上它的速度會相對比較慢,這個在程序開發(fā)過程中會浪費(fèi)很多時間,Intel對這部分做了專門的改進(jìn),使用硬件虛擬化的技術(shù)進(jìn)行CPU的模擬,那分別是在Linux、windows、Mac中都做了硬件虛擬優(yōu)化技術(shù),可以使模擬器的速度大大提升。Intel這邊有一個線程構(gòu)建模塊TBB,基于這部分進(jìn)行開發(fā)的應(yīng)用程序,可以幫助你使用優(yōu)化的線程。還有性能單元,基于集成性能單元開發(fā)的工具,可以提高Intel架構(gòu)上應(yīng)用的性能。有些軟件可以直接免費(fèi)下載,有些軟件是需要一定的授權(quán),NDA用戶授權(quán)。這部分只要和英特爾有合作意向的公司就可以和我聯(lián)系,跟Intel的軟件部門進(jìn)行聯(lián)系也可以,可以簽署保密協(xié)議,就是NDA合作保密協(xié)議,簽署協(xié)議之后就可以拿到工具的下載授權(quán)和使用授權(quán)。還有付費(fèi)工具,更專業(yè)的工具,在這個網(wǎng)站,根據(jù)流程就可以購買。5、如果做Intel應(yīng)用平臺的開發(fā),到那里進(jìn)行測試,因為不可能把所有設(shè)備都買到家里,然后開發(fā)Intel平臺的應(yīng)用程序。這是Testin云測試平臺,這個測試平臺是真機(jī)測試,這里大概有4600多部主流的智能終端設(shè)備,這些設(shè)備會及時更新,主流設(shè)備會及時更新上去,提供給開發(fā)者進(jìn)行測試、選擇。這個是自動化測試,在這端只要提交你的應(yīng)用程序到網(wǎng)站,它就會啟動自動安裝、自動運(yùn)行、自動測試的過程,最終會發(fā)一個測試報告給到你的應(yīng)用開發(fā)者,讓應(yīng)用開發(fā)者看測試報告就OK了。這個云測試是24小時不間斷,就是說全天候的服務(wù),全球任何地區(qū)都可以訪問。這邊大概是一個流程,首先要注冊,然后登陸、上傳APK,選擇測試設(shè)備。這個Testin服務(wù),只要您測試X86應(yīng)用程序的開發(fā),可以提供免費(fèi)的測試服務(wù)。網(wǎng)址就是,我在外面看到他們有展臺,大家可以去了解一下。我今天分享的大概就是這些。提問:大家好!我想問,您提到的所有功能在2016年的版本中出來了?因為我之前是做Linux版本的,之前所有的版本我基本都用過,我在外面看介紹還有您的介紹,是不是提到這些新的特性就是在2016的版本中都會納入進(jìn)來?朱孟利:版本的問題要聯(lián)系一下開發(fā)者看怎么更新,我可能現(xiàn)場不能回答你。我回去之后給你回復(fù),您說的是1.6?提問:2016這個版本,您剛才提到的這些新功能,TBB等一系列的新特性是不是都在2016里面包含進(jìn)來?朱孟利:我不是很確定,我要回去確認(rèn)一下。謝謝大家!主持人:接下來我們會請李文炎,也是我們這邊的高級應(yīng)用工程師,為大家介紹“使用英特爾工具最大限度地提高應(yīng)用性能”。有請!李文炎:大家下午好!歡迎大家來參加Intel的論壇接下來我會給大家介紹“如何使用英特爾工具最大限度地提高應(yīng)用性能”。我的分享分了四個主要部分,有些部分和前一位同事介紹內(nèi)容有些重復(fù),我會快速的跳過。我這里會重點(diǎn)介紹到我這里有一個案例,是和我們客戶合作過程中,如何把他們的應(yīng)用在X86平臺上做到性能成倍提升,不是實際代碼,但是也是截取他們的實現(xiàn)原理來做的工作。前面的章節(jié)會講,我們的Android和X86上面的一些不同之處和相同之處,對于技術(shù)的同事來說很好理解,整個這塊,從開發(fā)角度來說,大概是相同的。重點(diǎn)需要提的是不同的地方,大概有這么幾點(diǎn):模擬器是基于真實的X86設(shè)備做的,X86設(shè)備我用的指令集和傳統(tǒng)的,其他ARM指令集有不一樣的地方。相比傳統(tǒng)的技術(shù),通過X86指令集和虛擬機(jī)的技術(shù),整個模擬器可以得到更好的性能。最后面有幾個,其實和這個類似,如果用匯編語言也是需要用X86的指令集做。還值得一提的,是圖形庫等等一塊,Intel做了大量優(yōu)化工作。如果使用到我們優(yōu)化的內(nèi)容,會使你開發(fā)的應(yīng)用得到很好的收益。最后一個算是比較好的兼容性,目前大家使用到的PC或者服務(wù)器這塊,這個主要是用我們Intel的產(chǎn)品,到這個平臺,從你的臺式機(jī)、筆記本到移動設(shè)備的兼容性會得到很好的擴(kuò)展。對于開發(fā)者來說,在X86平臺上面臨的是全新的機(jī)會。對于開發(fā)者來說可以花費(fèi)很少的精力獲得更好的體驗和收益的。對于開發(fā)應(yīng)用來說我們分為兩類,在應(yīng)用這塊有稍微提到,一類是基于虛擬機(jī)的應(yīng)用。這個工作Intel已經(jīng)做了,我們對虛擬機(jī)做了平臺性優(yōu)化,不需要開發(fā)者做相應(yīng)的工作。如果你做本機(jī)的操作,用C語言或者更基層的語言,需要你做相應(yīng)的工作,選用我們的編譯鏈等做相應(yīng)的規(guī)劃,才會使應(yīng)用得到很好的性能。這部分可能比較枯燥,是一個純開發(fā)的過程,如何在X86的模擬機(jī)上搭建Android的開發(fā)環(huán)境,這塊我會快速跳過,可能大家很熟悉。首先我們下載XDK后,有一個截面,我們可以直接選擇下載X86的進(jìn)項,下載之后我們可以創(chuàng)建基于X86的虛擬機(jī)的管理器,在這里面我們把所有的這些配置都可以自己配置,比如CPU類型、存儲大小、內(nèi)存大小等等,這些都可以跟通常的標(biāo)準(zhǔn)操作一樣,把它設(shè)置下來都可以。啟動模擬器之后,我們?nèi)绻M(jìn)去開發(fā)的話,我們一定要登陸模擬器,這時候我們可以通過快捷鍵或者F1進(jìn)入這個模式,然后獲得IP,獲得IP之后然后在里面有一個ADBHOST的選項,把參數(shù)配置進(jìn)去,配置進(jìn)去之后,我們可以在里面得到模擬器的一些信息,看到它的進(jìn)程狀態(tài)以及應(yīng)用進(jìn)程等等信息都可以得到。如何把已經(jīng)開發(fā)好的ARM平臺的應(yīng)用移到X86平臺上來,我們現(xiàn)在有基于高通或者其他開發(fā)的應(yīng)用,如何把它移到X86設(shè)備上來。我們把應(yīng)用首先進(jìn)行分類,大概可以分為三類:純Java的應(yīng)用,虛擬機(jī)的應(yīng)用,這個之外是由Intel做的,開發(fā)者不用管,可以直接在X86平臺上跑。二是你自己做NDK的庫。三是使用了NDK,還用了其他底層的,這時候就必須在匯編里面必須使用合法的X86指令集。對于這三類應(yīng)用通過三類不同的操作來達(dá)到移植的效果。除了把應(yīng)用在兩個不同平臺上跑起來之后,如果在我們的X86平臺上得到更好的性能?我們還需要依靠一些工具,ICC和IPP剛才也有簡單介紹。ICC是Intel做的C++的編譯器,這里是我們關(guān)鍵處理的指令做的優(yōu)化,這個優(yōu)化不需要知道,只要替換原有的就可以。這里我們得到的數(shù)據(jù)是,我們可以對同樣的代碼得到30%的性能提升,這是比較官方的統(tǒng)計結(jié)果。對于IPP這個工具,我們這個集成性能元件,主要是對靈動處理器做了專門優(yōu)化。特別是多媒體這塊做了特別的處理,如果你的開發(fā)應(yīng)用涉及到多媒體,可能我們推薦你使用這樣的東西會得到更好的效果。其他更多關(guān)于如何在Android上應(yīng)用,我們開發(fā)應(yīng)用的范圍,可以在軟件開發(fā)者網(wǎng)站上找尋更多的例子和案例學(xué)習(xí)指導(dǎo)。架構(gòu)已經(jīng)講過,不再贅述,只是說了對于文字的直觀傳輸,對應(yīng)用的分類以及工作量主要在哪塊。如何判斷CPU類型?這對于很多開發(fā)者,包括我們的客戶合作,大家會問的第一個問題是,我在程序里面如何判斷我的設(shè)備是X86的?這里我提供一個比較直觀的方法,首先是我們NDK里面有API接口提供,里面有定義到CPU,如果是X86的話,這個里面判斷出來就是X86的設(shè)備。這里是一個事例,我們寫好它之后,然后這個接口就可以得到這樣的結(jié)果,在我們做預(yù)備役的時候就已經(jīng)知道。如果我們判斷出它是X86的話,我們會把它進(jìn)行相應(yīng)的優(yōu)化,可以從工程化的角度進(jìn)行優(yōu)化,而不是在開發(fā)應(yīng)用里面的工程里面做單獨(dú)的代碼工作。NDK里面的GCC,我們對默認(rèn)的GCC的標(biāo)志,主要是對編譯標(biāo)志的設(shè)置,首先我們需要這個代碼是在什么具體的平臺上,用什么平臺。其次是有沒有使用特別的指令集,CPU的指令集是對強(qiáng)計算或者底層操作頻繁的時候,你用指令集可以替換幾百實質(zhì)幾千行代碼的工作,這是非常好的方法。針對CPU結(jié)構(gòu)的APK打包,我們目前的APK大概有這么幾種,胖二進(jìn)制,我們提供一個APK供所有平臺使用,目前整個中國的市場上以及Google官方所推薦的都是這樣的操作,APK里面有一個目錄上放好所有目前的平臺,比如ARM或者ARMwindows7或者X86,你必須預(yù)先建好所有庫,同樣的庫在不同的平臺下有不同的結(jié)果,放在同樣的平臺下。在不同的設(shè)備會自動加載不同的目錄下的庫文件,帶來的問題是整個APK會變得相當(dāng)臃腫,會變得很大。另外我們對于每個不同的平臺,不同的平臺,把我們的應(yīng)用開發(fā)成多個版本,同一個應(yīng)用就會出現(xiàn)多個版本,多個版本的時候,我們有另外一種方法區(qū)分。從我的開發(fā)經(jīng)驗來說,目前大家不會把這個隨心所欲的自定義,并沒有按照這個標(biāo)準(zhǔn)來自定義,如果我們按照這樣的標(biāo)準(zhǔn),就是按照Google定義的約定來定義,實際上我們也不用做多個APK,是可以做到的。這就是我們目前來解決移植化的設(shè)備,這是我們要做的兩種方法。第四部分大部分和前面同事重復(fù),主要是介紹Intel的軟件工具和優(yōu)化技術(shù)的介紹,這里可能會重點(diǎn)介紹一兩個軟件如何啟動以及使用的過程。目前我們用到的比較多的,就主要是這五個軟件。ICC,就是C++的編譯器。Intel圖形性能分析氣,GPA是比較好的一個工具,如果你做你的應(yīng)用有圖形處理,有特別大的這樣一些,需要看你的代碼處理性能怎么樣的,這個是可以分析你的程序?qū)τ诟鱾€硬件占用的性能,以及它卡在哪個地方。第三個是VTune放大器,這是調(diào)試性能的工具。還有高性能多媒體函數(shù)庫,還有一個是線程構(gòu)建模塊,一個是針對多媒體,一個是多線程處理。這里可能舉了一個例子,如何去做圖形性能分析器去超過它,首先可能需要我們的操作方式,其實很簡單,就是把我們的移動設(shè)備和PC用USB聯(lián)系起來,在主機(jī)系統(tǒng)上裝好GPA,然后對移動設(shè)備的相應(yīng)數(shù)據(jù)進(jìn)行獲取和分析。只要移動設(shè)備和平臺、PC設(shè)備都是基于X86就可以了。我們的主機(jī)目前支持windows全系列的平臺都支持,然后有的個別版本會支持的比較。整個啟動分析器的工具是這樣,因為后面會有其他的演講者詳細(xì)介紹每個步驟的操作以及常規(guī)的問題,我就跳過去,大家可以稍微看一下。最后我可以重點(diǎn)介紹一下使用SSSE3指令集加速語音識別算法的案例,這是目前比較火的領(lǐng)域。目前對于深度學(xué)習(xí)與自然語言處理這塊,不管是圖像領(lǐng)域還是語音識別領(lǐng)域比較火,目前用到最多的,大家都是通過使用GPU做服務(wù)器的運(yùn)算,不可能把語音識別的處理算法放到手機(jī)上做,或者放到平板上做。目前不管是國內(nèi)還是國外的方式,大部分采用云方式,在服務(wù)器端部署了多個服務(wù)器,通常GPU強(qiáng)化這種運(yùn)算,把得到的結(jié)果返給你,這時候就會得到我們想要的結(jié)果。但是依賴于網(wǎng)絡(luò)處理情況,這時候性能體驗并不是很好。我們這里有一個比較經(jīng)濟(jì)的方式,如果你使用的設(shè)備是X86,那我們里面有一個專門針對矩陣計算的,這里面如果做矩陣操作,那么它可以快速幫你替換掉你成百上千的代碼,通過API的調(diào)用。這里的背景介紹也是國內(nèi)某知名語音識別公司的產(chǎn)品,他們最近的概念很火,因為他們采用了這個算法。這個算法里面通常是矩陣計算,而且維度非常大,這里有一個圖,介紹的是語音識別和圖象識別里面,在我們的輸入和輸入之間其實是經(jīng)過了非常大的矩陣運(yùn)算的變化得到當(dāng)前的結(jié)果,這里面是分層和分裂的計算結(jié)果來影響的。這里有一個計算公式,都是向量計算,這塊在我們的代碼里面來操作的話,你必須是很多個在一起才能做到。如果把這樣的指令送到CPU里面操作,你的機(jī)器一定會運(yùn)行不了。這是遇到的普遍問題。Intel有這樣的指令集,這個指令集比較值得一提的是SSSE3,這個沒有被大家廣泛知道。我們會向大家介紹,如果你遇到就可以用我們這里面的矩陣計算API可以大幅度提高計算性能。我們飽和累加成運(yùn)算,我們對于兩個矩陣進(jìn)行對應(yīng)的相加,相鄰相加是對一個矩陣的相鄰元素的相加得到的元素,這兩個操作如果用通常的方法計算是非常麻煩的。這里有一個任務(wù)描述,這個任務(wù)描述是語音識別里面用到的核心操作,是5個向量,都是16維的數(shù)字,分別求他們的累積,這個結(jié)果還是一個矩陣,如果用C偽代碼實現(xiàn),綠色部分是用C偽代碼實現(xiàn)得到的操作。大家可以簡單看一下,這是一個4循環(huán)16次,每個矩陣?yán)锩娑甲隽搜h(huán)運(yùn)算。我們假設(shè)不考慮總線的問題,我們假設(shè)一個運(yùn)算占一個時鐘周期,這時候我們用乘加運(yùn)算作為一個時鐘周期,此代碼要大概4個時鐘周期,這時候整個性能就可以為它為單位1來計算。如果我們把它進(jìn)行指令集來替換,用SSSE3代碼來實現(xiàn),我們需要連續(xù)調(diào)用4次飽和累加的相鄰加的KPI,最終把結(jié)果直接通過線性輸出。這時候再加上流程性的編排,大概時鐘周期最多是13個,這時候我們可以看到這個結(jié)果,最后一個對比,整個運(yùn)算性能可以得到大概5倍以上的效率提升。并且這有一個對于整個計算的算法的介紹,在我們的開發(fā)者上面,我有過詳細(xì)的介紹對這部分,這里是一個鏈接。整個我的介紹大概是這么一個內(nèi)容,介紹了在X86上如何做安卓的移植,和如何使用我們的指令集做優(yōu)化。希望我們通過更多的案例和有的案例和未來更多的案例,來幫助大家得到X86平臺帶來的好處,享受到好處,使你們的應(yīng)用得到很大的收益??偟慕榻B就是這么多。膠片不知道能不能下出來,但是鏈接的內(nèi)容是公開出來的,只要上我們的平臺就可以搜得到,只要搜SSSE3指令加速關(guān)鍵字,在開放社區(qū)里面可以看到。謝謝大家!提問:用ICC替換GCC,GCC的地方有很多開關(guān)實際上和ICC是不一樣的,這種情況有的時候可能參數(shù)已經(jīng)在整個代碼當(dāng)中,如果這種情況下ICCfor安卓會不會有東西自動識別,還是說必須把有問題的地方全部找出來,或者還是有某種意義上的容錯機(jī)制?李文炎:可能需要你自己手工調(diào)整一下,如果你在整個的每個編譯上都做了自己的開關(guān)處置的話。而提問:GCC和ICC的所有開關(guān)不會做相融?李文炎:后面的計劃沒辦法回答你,因為我不是ICC開發(fā)團(tuán)隊的,只是現(xiàn)在是這個狀況。提問:您的意思是說利用已經(jīng)集成在聯(lián)動處理器上的SSSE3,只能說替換一部分DAN的計算工作還是前端的某一些初期的信號處理去支持?李文炎:這里有一個概念,首先是要看你的計算量,我們可能在終端設(shè)備上替換的,我們一般指一線語音識別,現(xiàn)在離線操作只會識別幾十個keyword,它的數(shù)據(jù)計算量大概在幾十的數(shù)字維度就可以做到,如果成百上千的數(shù)字維操作,我想這個移動設(shè)備做不到。這個階段我們做簡單的處理,就不需要再放到云上操作,而是直接在移動設(shè)備上操作。提問:Intel有沒有這樣的平臺,在降低識別精度的情況下,放到移動芯片上或者嵌入芯片上,靈動來實現(xiàn)類似的功能?李文炎:我好像看到有這樣的新聞,Intel有這樣的計劃,但是我不知道什么時候?qū)崿F(xiàn),我確實看到過。提問:如果采用這套方案,可以離線做這個事情,只是效率和精度差一點(diǎn)。李文炎:數(shù)據(jù)量計算,說白了就是如果我們對語音識別或者圖像搜索這塊,主要是矩陣計算,如果你的維度少,那么我們完全是可以放在離線來做,就放到本地來做。但是Intel是什么時候決定做這樣的工作,把這樣的工作集成到我們的某個平臺上來,我只能說我看到這樣的新聞,但是什么時候?qū)崿F(xiàn)我也沒辦法答復(fù)。主持人:謝謝。講到這里大家已經(jīng)有很多問題,我們外面有專門Intel的展臺,我們的講師會在外面,如果有問題,我們可以接下來繼續(xù)交流。下面的演講是目前大家都覺得非常熱門,也非常有興趣的,就是實感技術(shù)。有請陳衎為大家介紹“英特爾實感軟件開發(fā)工具”。歡迎!陳衎:這是一個非常多開發(fā)者所感興趣的話題,可能我不會涉及到很多的技術(shù)細(xì)節(jié),大家可以運(yùn)用自己的想象力來想象一下。今天很高興能夠站在這里和大家來探討一下Intel的實感技術(shù),我是陳衎,來自Intel的軟件服務(wù)部。今天我講的內(nèi)容會從一個概念的階段一直到最后的應(yīng)用場景,希望給大家全方位的角度來調(diào)整實感技術(shù)到底是什么東西。首先我們理解一下什么是Intel的實感技術(shù),按照技術(shù)的發(fā)展過程來看,我們知道我們現(xiàn)在把機(jī)器做的越來越擬人化了,就是我們希望把我們的機(jī)器變成什么樣的東西呢?希望做到我們和機(jī)器打交道的時候,能夠變得和人打交道一樣簡便。最終實現(xiàn)擬人化是非常復(fù)雜的過程,比如人眼睛看世界,人眼睛已經(jīng)非常習(xí)慣三維的視角,除了把接收到的物體三維化之后同樣做很多細(xì)節(jié)的處理,比如視野中成千上萬的物體中準(zhǔn)確抓住某個物體,并實時對它聚焦。聽起來是很簡單的功能,但是背后的運(yùn)算量很復(fù)雜?;谶@樣的考慮,大家可能了解到實感技術(shù)到底要干嘛了。它可以把所有物體三維化,簡單說就是3D攝像頭,與之配套的有很多其他的輔助功能來無限接近于人的眼睛。從這個角度來講,實感技術(shù)就提供這樣的可能,讓機(jī)器至少在視覺方面越來越像人類。這樣的3D攝像頭可以用到哪些產(chǎn)品之上呢?我這邊用一個PPT給大家簡單介紹一下目前實感技術(shù)的兩個分類。在座很多開發(fā)者已經(jīng)接觸過,就是F系列的前置攝像頭,主要應(yīng)用于類PC的產(chǎn)品。今天著重要講的是R系列,就是通常所說的后置攝像頭,圖中列出來,它主要針對平板或者手機(jī)等等這樣的移動產(chǎn)品去打造的攝像頭。R系列有兩個型號,一個是R200,功能更加全面。之后是R100的型號,它提供了更為基礎(chǔ)的功能。接下來我們來看看這樣一個3D攝像頭到底是什么東西。首先看右邊,這里有一個剖面圖,我們看看它的結(jié)構(gòu),可能我們會注意到它有一個紅外的發(fā)射器,然后與它相東營的有左右兩個紅外接收器,這樣子是不是非常像人的兩個眼睛?除了紅外接收器之外,它還有用于獲取色彩、圖形的一個處理器,整套構(gòu)造下來就成了3D攝像頭。要說工作原理,其實也很簡單,人為什么定位到一個物體的具體位置?就是人的眼睛獲取物體位置的時候有一個角度,根據(jù)這個角度的偏差來計算這個物體的具體位置,同樣的,剛才有提到它是有兩個紅外的接受器,通過這個接受器也能同樣獲得一個物體的不同的角度差,從而計算出物體的具體位置。然后你在畫面中的每個點(diǎn)它都能正確獲得精確位置,我們將整個世界就可以三維化?;谒娜S化的特性,我們可以構(gòu)想它可以用來干什么。這些應(yīng)用場景分為五個大的模塊,我們一起看一下?;?D化的特性,我們用它來抓取現(xiàn)實生活中的任意一個物體,將它變成3D模型,進(jìn)而可以用它來重構(gòu)、分享或者直接將它用3D打印機(jī)打印出來。實感技術(shù)可以改變的另外一個行業(yè)就是家裝行業(yè),家裝行業(yè)對3D要求很高的階段,大家希望房子裝修之前就可以直觀看到裝修的效果,我相信實感技術(shù)不管是幫助設(shè)計者還是終端用戶,都是起到良性的作用。它將改變的第三個產(chǎn)業(yè),我們關(guān)注到是電商行業(yè),大家知道現(xiàn)在網(wǎng)上購物會經(jīng)常有糾紛,你買到東西發(fā)現(xiàn)在網(wǎng)上獲得的渠道信息會有些差別,如何填補(bǔ)用戶期望和物體本身的差異呢?我相信實干技術(shù)可以在里面發(fā)揮一定的作用?;氐綇V大用戶群的消費(fèi)產(chǎn)業(yè),比如游戲和教育,實感技術(shù)在里面同樣可以讓這個產(chǎn)業(yè)變得更加充滿活力。最后回到它的基本功能,比如拍照和拍攝視頻來講,我們在里面加入了3D的功能之后,它又會做出哪些改變呢?后面我們會跟大家詳細(xì)探討。雖然說實感技術(shù)有這么強(qiáng)大的功能,讓所有用戶接受它,或者讓開發(fā)者愿意投入到這樣的開發(fā)中來,讓生態(tài)變得更加完善,其實是有很多路要走的。首先要解決的大問題是社會本身的問題,他有這樣的攝像頭,那我們通過什么載體使用它呢?這就是我們在市面上要大規(guī)模的去引入這些搭載了實感技術(shù)200,包括平板、手機(jī)上的設(shè)備。另一方面我們要生態(tài)更加完善的話,除了這些設(shè)備之外,我們需要很多新奇、有趣的應(yīng)用配合這樣的設(shè)備使用。這就是針對開發(fā)者所要做的事。我們也知道對于開發(fā)者來講,如果還希望它去了解實感技術(shù)最底層的細(xì)節(jié)和原理的話,我覺得不現(xiàn)實。對于絕大多數(shù)開發(fā)者來講,他們關(guān)注的只是這個東西怎么用就好了,你提供接口,我讓這個接口實現(xiàn)我的功能,加到我的應(yīng)用程序里面去,這樣就OK了。所以我們之前有了這個實感技術(shù)之后我們做了大量工作,把這些支持實感技術(shù)的這些API整合成XDK,XDK可以支持windows等操作系統(tǒng)。除此以外,為的讓開發(fā)者能夠從對于實感技術(shù)的開發(fā)獲益,我們會做很多的市場宣傳和推廣這樣的市場工作。以上是對實感技術(shù)的簡單介紹。剩下很大的部分就是剛才給大家提到的,就是和大家一起想象一下有了實感技術(shù)之后給我們的生活帶來哪些更深刻的變化。回到剛才講的第一個應(yīng)用場景,就是三維物體的獲取、分享和打印,這樣一個大的模塊。這本身就是實感技術(shù)非?;A(chǔ)的功能,但并不表示它不重要。我們知道現(xiàn)在要獲取一個物體的三維模型是非常專業(yè)的工作,首先要用專業(yè)工具來建模,也有非常豐富的3D處理的經(jīng)驗,以后有了實感技術(shù)之后這個局面就會被改變。大家可以想象一下,比如你看到市面上出售的某個花瓶,你覺得它很漂亮,你希望遠(yuǎn)在其他地方的人也能跟你一樣,同樣感受到它的漂亮,或者直接想再復(fù)制這樣的花瓶,你會怎么做呢?你可以拿著平板然后對著感興趣的花瓶,通過全方位的拍攝之后,這個平板就能夠自動把你獲取的數(shù)據(jù)處理成花瓶的三維模型,你可以創(chuàng)作或者發(fā)給遠(yuǎn)方的朋友和親戚,甚至直接連到打印機(jī)上,然后就可以直接把這個花瓶重新構(gòu)造出來,擺到你家里去。它除了掃描普通的物體之外,同樣可以用來掃描人體。今年年初的時候,我們舉辦過一次IBF在會場上非常受歡迎的展示平臺,廣州一個公司開發(fā)的一個小機(jī)器,那個機(jī)器可以根據(jù)觀眾的外貿(mào)打印一個小擺件,可以當(dāng)作紀(jì)念品帶走。實現(xiàn)這樣的好玩的設(shè)備是什么原理呢?很簡單,兩樣?xùn)|西,3D打印機(jī)和實感技術(shù)攝像頭,通過這個攝像頭把觀眾的面貌給擺下來,然后進(jìn)行處理成三維模型,直接通過打印機(jī)打印出來,然后得到人臉的雕塑,最終再把它做精美一點(diǎn),就成了小擺件。據(jù)說一天使用這個工具的觀眾達(dá)到兩千多人,可見還是一個非常受歡迎的設(shè)備。除了掃描人體、物體之外,同樣具有空間掃描能力。這其實很好理解,比如今天我們在這里舉行的會場,你想得到它的空間參數(shù),同樣只需要拿著平板對著會場掃描一遍,最后它就能夠把這個空間變成一個三維的模型,呈現(xiàn)到你的面前?;诳臻g掃描的功能,我們可以引申到它在家裝產(chǎn)業(yè)上的應(yīng)用。可能有過裝修經(jīng)驗的人都覺得裝修是非常痛苦的事,因為你可能在裝修的初期要花大量時間在效果的設(shè)計上,而且還要請到某些專業(yè)的設(shè)計師來幫你提出建議,然后幫你做效果圖,查看是否滿意這樣子。其實這樣的工作,我們認(rèn)為它是非常耗時的工作,但是有替代辦法,就是實感技術(shù)。比如你現(xiàn)在有一套毛坯房,通過平板把這些毛坯房的空間結(jié)構(gòu)掃描出來,剛才也有提到,它除了把物體三維化之外,還有其他功能,其中比較典型的就是快速測量功能,這是什么意思呢?簡單來講,它能夠快速的計算出你的畫面中任意兩個點(diǎn)之間的距離,也就是說你把一個空間做了3D掃描之后就可以飛快的知道,比如墻高、墻寬,你拿到這些數(shù)據(jù)之后,而且這些數(shù)據(jù)就是房屋本身的真實數(shù)據(jù),拿到這些數(shù)據(jù)之后重新定義你的裝修風(fēng)格,這樣子是不是會變得更加容易呢?我們再進(jìn)一步設(shè)想,如果你有實感技術(shù)的攝像頭,拍下空間結(jié)構(gòu),如果有一個賣家具的賣家,他把家具用攝像頭拍下來,在它的數(shù)據(jù)庫存儲了大量的有的家具的三維數(shù)據(jù),你把兩者結(jié)合起來,拿到他們家具的數(shù)據(jù),然后直接通過簡單的拖動放到你自己房屋構(gòu)造的真實模型中來,是不是可以方便得出你軟裝的效果呢?在家裝中有一個容易被忽略的作用,就是關(guān)于地板的設(shè)計,為什么要單獨(dú)提出設(shè)計地板呢?因為要查看地板的直觀效果是很困難的,不管是用哪種設(shè)計圖設(shè)計。如果用實感技術(shù)的攝像頭,可以把整個空間按照真實的環(huán)境給它建模之后,你再把你的地板做一個模型鋪設(shè)到空間中去,那你對整個房間的整體會有更加直觀的感受,這樣子的話,就會讓你整個地板的設(shè)計也會變得更加貼合你最終的需求。我們看一下它如何改變電商這個行業(yè)。大家知道網(wǎng)上店鋪和實體店鋪的差距在哪兒嗎?就是一個試衣間。大家知道因為實體店現(xiàn)在有一個試衣間,雖然只是很小的空間,但是它可以大大的提升用戶體驗,因為它直接通過試穿可以知道他最終所買產(chǎn)品的屬性是否跟自己合適。那么這一點(diǎn)從現(xiàn)在的意義來講,電商是沒法達(dá)到這樣的效果的。但是如果有了實感技術(shù)攝像頭,它可以用來掃描人體,另一方面可以掃描貨品,兩者結(jié)合起來就可以在家里搭建一個虛擬的試衣間。當(dāng)然這個是已經(jīng)有人做這樣的事,不一定是通過實感技術(shù),但我相信實感技術(shù)會是很好的解決方案。其實它最終的效果就跟實體店的試衣間非常類似,就把你自己的身材數(shù)據(jù)掃描出來放到電腦里面去,再通過接受店家傳送過來的衣服數(shù)據(jù),把兩者拼接起來,就知道最終穿衣服的效果是什么樣的。這對不經(jīng)常逛街,喜歡宅在家里的人來講是很大的福利。同樣對于賣家來講,現(xiàn)在他經(jīng)常面臨的問題是,對于他所展示的物品會需要用到相機(jī)拍攝大量二維圖片,然后通過PS修的很精美,傳到店鋪里,讓用戶了解它的商品。盡管他們花了大量時間,但是用戶還是經(jīng)常退貨,因為用戶覺得買的貨和他想象的不一樣。要解決這些問題,我們一方面要縮短店家花在物體展示所花的時間,我們也要解決客戶對他所購買產(chǎn)品想象的差異問題。用3D掃描技術(shù),我們相信也會改善這個現(xiàn)狀,你把所需要出售的物體掃描,然后建立成3D模型,放到網(wǎng)上展示,用戶只需要拖動鼠標(biāo)就可以全方位了解物品之后,他可能就對這個物品本身會了解的更加詳細(xì)。我們希望實感技術(shù)能夠廣泛應(yīng)用到教育和游戲行業(yè)中來,這邊其實做這樣一件事的軟件廠商已經(jīng)非常多了,但我這里只抓取出兩個比較有典型代表的兩個案例給大家做分享。一個是教育行業(yè)的,大家知道現(xiàn)在網(wǎng)上教育很火熱,但大家所使用的教材絕大部分都還是教科書式的,比如有些有老師在上面講課或者有些文字的教材,然后放到平板上讓小孩子來閱讀。那其實除了它的學(xué)習(xí)地點(diǎn)不一樣之外,跟傳統(tǒng)教育的方式并沒有太大區(qū)別。我們?nèi)绾蝸砀淖冞@個狀況呢?我相信實感技術(shù)在里面大有可為的,大家可以看到左邊這幅圖,它其實畫出了很多標(biāo)線,它要展示什么呢?當(dāng)你講解物理學(xué)知識的時候,你可能以前要制作一個非常抽象的動畫也好或者課間也好,來給大家闡述這樣一個物理原理到底什么情形,你通過它把現(xiàn)實情況中的桌子、椅子或者其他的物品,3D建模之后,直接在下面進(jìn)行編輯,這樣子用來闡述這些原理是不是可以變得更直觀呢?同樣的,你以前學(xué)幾何的時候,可能老師要給你講一個桌子是長方體的東西,可能沒辦法把桌子告訴你哪里是長寬高,如果你用實感技術(shù)掃描桌子,就可以把它放到電子載體上,然后給學(xué)生來做詳盡的講解。其實用實感技術(shù)做游戲的案例就更多了,這邊有一個例子,大家可以看到左邊這幅圖,這到底是什么東西呢?我給大家簡單介紹一下,其實它非常簡單,就是玩家操作火星車,不斷躲避隕石。這個場景非常簡單,但是有趣點(diǎn)在哪兒呢?大家可以注意到它的整個游戲背景是沒有整理的被子而已,只不過把這些被子的表面通過顏色渲染,做出來像火星表面。這個游戲不說好不好玩,但是很有趣,可以把現(xiàn)實場景變成游戲背景,平板移動之后,背景根據(jù)你掃描到的現(xiàn)實生活中的場景時時變化,讓玩家自主的決定他想在什么樣的環(huán)境下玩游戲。從這個角度來,它其實有點(diǎn)類似于現(xiàn)在非常流行的增強(qiáng)現(xiàn)實的概念。我知道也有很多公司做這樣的事情,這邊是非常簡單的例子,如果你基于這樣的技術(shù)可以制造更加復(fù)雜的場景。最后我們再回到作為攝像頭本身的功能上講,拍照和拍攝。雖然拍照和拍攝是非常簡單的功能,但實際上可能也是平板手機(jī)用戶最常用的兩個功能之一,以往我們拍攝一個照片之后,可能你就是拍完以后來看的時候,你能回憶起當(dāng)時的場景,但是某些特殊的照片就沒辦法處理它。以前網(wǎng)上有一個新聞,一個父親非常喜歡自己的女兒,每年生日的時候,給他女兒拍張照片,一直拍到20多歲。這本來很有趣。我們是否可以做的更加有趣一點(diǎn)呢?大家知道實感技術(shù)我們可以拍攝兩點(diǎn)之間的距離,如果你有小孩子,你用實感技術(shù)給小孩子拍照,你可以知道他15歲1.6米,18歲他一下子變成1.7米,你可以直觀的看到這些數(shù)據(jù)。作為父親來講,這也是一件非常開心的事情。既然它具有快速測量的功能,我們就可以做進(jìn)一步的想象,看它是否運(yùn)用到運(yùn)動行業(yè)中來,大家知道運(yùn)動本身是非常動態(tài)的過程,有的數(shù)據(jù)很難獲得,比如圖中所列出來的跳遠(yuǎn)的運(yùn)動,更復(fù)雜的,比如跳高更難測量,因為最高點(diǎn)只是一瞬間,你想知道一個人到底跳多高,你不可能讓他停留在最高點(diǎn)上,等著你測量。如果用實感技術(shù),它可以拍攝一個非常連貫的一系列的照片或者視頻,拍下來之后,只需要再回頭看這段視頻的時候,找到它的最高點(diǎn),那么你就可以快速獲得他到底跳了多高,這讓測量會變得非常簡易。關(guān)于照片的應(yīng)用其實還有一個非常有意思的應(yīng)用,就是對焦功能,剛才講原理提到三維化原理就是準(zhǔn)確的計算某個物體的精確的位置,意思是拍攝完照片之后,已經(jīng)把任何物體的位置給精確的保留在照片之中,這就讓我們重對焦變成可能。你拍攝足球運(yùn)動的時候,當(dāng)時拍的時候是想看清楚帶球運(yùn)動員的表情,你可能對焦到他的臉上,回頭看照片的時候,想知道對方守門員在干什么,拿到照片之后,只要簡單的點(diǎn)擊動作,就可以把焦對到守門員的臉上,你可以清晰看到在場所有人的表情是什么樣,這樣子讓你瀏覽照片的時候會變得更加有趣?;谶@樣的重對焦的功能,還有很多別的應(yīng)用場景。這里有提到動態(tài)的效果,因為它可以任意改變對角的點(diǎn)。如果持續(xù)改變對焦點(diǎn)就可以達(dá)到非常有意思的動態(tài)效果。關(guān)于照片還有很多引申功能,大家會喜歡拍照片進(jìn)行PS,增加很多濾鏡,然后看起來產(chǎn)生不同的效果。左邊有一個小例子,幾個小朋友放風(fēng)箏,可能拍下來之后,你想達(dá)到右下角的效果,讓畫面正中的小男孩的身體彩色,其他人作為背景只是黑白的畫面。借助實感技術(shù),可以讓這個過程變得非常簡單,你把你所關(guān)注的物體圈出來,然其他不關(guān)注的物體全部黑白化,這個動作在以前可能需要非常專業(yè)的PS的工具來完成這個目標(biāo),比如把這個圖像摳下來,做出來之,然后再把圖復(fù)原等等手段?,F(xiàn)在用實感技術(shù),可以配合相應(yīng)的軟件,你只是普通的用戶就可以達(dá)到這樣的效果。大家經(jīng)常拍集體照,有時候你不在里面,你希望你也出現(xiàn)在照片里面,同樣可以借助實感技術(shù),單獨(dú)給自己拍照,然后裁剪出來,然后拖放到里面。這比現(xiàn)在所有的摳圖軟件摳出來好很多。最后關(guān)于照片這塊,可能再給大家多舉一個例子,就是特效方面。拍照之后,大家可能希望制造動態(tài)的效果,比如圖片中下雪的功能,不知道大家是否注意這其中有一只小狗頭上有雪白,這樣的功能可能以前很難想象,因為圖片上面增加特效,因為沒辦法分辨哪些是真實的物體或者近遠(yuǎn)等,只能浮在上面。但是有3D之后就可以實現(xiàn)這些特效。其實跟大家構(gòu)造了這么多想象的應(yīng)用場景,我們更希望的是越來越多的開發(fā)者能夠加入到實感技術(shù)的開發(fā)團(tuán)隊中來,讓他們可以發(fā)揮他們的想象力,創(chuàng)造出更多更有意思的應(yīng)用。關(guān)于實感技術(shù)更多的細(xì)節(jié),大家可以隨時找到Intel相關(guān)的同事進(jìn)行更多的了解,而且在不久的將來,實感技術(shù)的設(shè)備會變得越來越大,對開發(fā)者來講也是非常好的福利。今天我的演講到此結(jié)束。謝謝!主持人:大家聽到實感技術(shù)可以幫大家做很多以前做不到的事情,不知道是否有一些現(xiàn)場的問題?提問:如果一個設(shè)備要使用實感技術(shù)要用哪些東西,是不是要集成特殊的攝像頭?陳衎:現(xiàn)在實感技術(shù)有兩個形式,一個是獨(dú)立的實感技術(shù),就和普通的USB攝像頭類似,直接插到PC上用。另外一個是集成式的,嵌入平板里面,作為攝像頭模塊,在背面作為后置攝像頭。提問:用Intel攝像頭加在平板上可以用?陳衎:是的。提問:對于芯片有沒有要求?陳衎:除了攝像頭本身之外,還有很多支持的軟件,它運(yùn)行是需要硬件支持,它需要跑在Intel的CPU上。在最新的IntelCPU中,它對實感技術(shù)是支持的。提問:關(guān)于你們有一款后置攝像頭,你提到很多家裝的應(yīng)用,后置攝像頭的水平和視角大概多少,還有拍攝出來的圖片能否轉(zhuǎn)換出來已有3D格式?陳衎:關(guān)于3D格式,這塊其實實感技術(shù)輸出的3D格式是支持很多現(xiàn)有的格式,所以如果你需要得到某些更特殊的格式,我相信現(xiàn)在很多軟件可以做轉(zhuǎn)換,3D格式兼容性是非常好的。關(guān)于精確度這塊,您剛才提到關(guān)于視角等等,這塊我覺得應(yīng)該講依賴很多方面,除了實感技術(shù)本身的攝像頭屬性之外,還跟最終的軟件,需要的精確度以及軟件的實現(xiàn)方式等等都有很大的區(qū)別,包括應(yīng)用場景等等。再講個簡單的場景,如果物體隔的很遠(yuǎn),相對來說,你可能不能指望太高,這可能有范圍的。提問:你們現(xiàn)在輸出的,對人進(jìn)行建模的時候有輸出骨架信息嗎?陳衎:比如你要輸出骨架信息的話,其實有另外一個非常詳細(xì)的介紹,那它主要是會應(yīng)用到F200的場景之上。我剛才沒有給大家提到F200和R200在應(yīng)用場景上有做區(qū)分,F(xiàn)200可以精準(zhǔn)是別人的骨骼架構(gòu),為什么這樣做?前置攝像頭經(jīng)常有玩家希望通過手勢控制游戲中的某些人物,比如還有有些手勢動作來控制游戲。這樣子是需要對骨骼進(jìn)行分析、建模的,它應(yīng)該是可以把手建成16還是26個點(diǎn)。提問:自然光光照對它的影響大嗎,因為它是全波段,咱們是紅外做的?陳衎:這部分我沒有這樣的數(shù)據(jù),我可以了解一下。比如說室內(nèi)環(huán)境,包括我們這樣的演示環(huán)境,之前有做過測試,完全沒有問題。如果在非常極端的情況下,比如激光光束或者太陽光直射就沒有這樣的數(shù)據(jù)。提問:實感技術(shù)的產(chǎn)品有沒有說它對處理器有要求?因為我們有一個合作伙伴在開發(fā)的時候,給我提到需要HTML5這個平臺才可以流暢執(zhí)行,在其他的平臺會不會有這方面的限制?功耗,發(fā)熱量怎么樣,還有耗電怎么樣?陳衎:第一個問題很好,HTML5是windows的平臺,關(guān)于靈動這塊,因為它背后有很復(fù)雜的算法運(yùn)行,所以它還是有限制的。當(dāng)然比較幸運(yùn)的,最新Intel的架構(gòu)是以集成之后的所有架構(gòu)都會支持實感技術(shù)。提問:集成所有相關(guān)的算法和功能?陳衎:對。算法如果有需要的話,可以直接從網(wǎng)上下載下來。就是XDK這塊也是需要下載。提問:開發(fā)應(yīng)用是不是要使用Intel的ICC等才能發(fā)揮功能?陳衎:不需要。你知道ICC是完全兼容GCC的。提問:如果要開基于指令集的開關(guān),GCC不可能把相關(guān)的功能整合到GCC平臺上,編譯器上,這個實現(xiàn)不區(qū)分編譯器?陳衎:對,這些我們做過大量優(yōu)化,不管看什么,可能對它來講結(jié)果都沒有太大影響,因為已經(jīng)優(yōu)化過。所以在開發(fā)者的角度來講,你可能不太需要關(guān)注性能這塊。你編譯的過程,你只要考慮你所實現(xiàn)的功能就好了。比如你覺得需要哪些開關(guān)就去開關(guān)它。提問:功耗的耗電和發(fā)熱呢?在平板上沒有散熱空間。陳衎:很快我們有實物出來,功耗和發(fā)熱效果和本身平板的工藝有很大關(guān)系,至于攝像頭本身的功耗。提問:照相可以不關(guān)心這個問題,如果我們開發(fā)一個應(yīng)用,像你剛才里面演示的,連續(xù)的一直開著,比如建模什么的,這上面搭載了什么東西,這就涉及功耗,而且還有那么多傳感器和攝像頭。陳衎:是,還是剛才我的回答,它和平板本身的設(shè)計有關(guān)系,包括你怎么布板,散熱是怎么處理的,這都是有關(guān)系的。攝像頭本身的功耗要講的話,意義不是很大,就算是用同樣的CPU做出來的平板功耗都千差萬別。主持人:非常謝謝陳衎。我們接下來的演講者會跟大家更進(jìn)一步探討有關(guān)Intel的開發(fā)工具,接下來要介紹的這款I(lǐng)ntelSystemStudio是Intel的明星軟件開發(fā)工具,我們特意請到Intel軟件事業(yè)部,但是專門做工具開發(fā)的高級技術(shù)咨詢工程師汪洋來為我們做介紹。歡迎!汪洋:大家好!我和大家一起分享一下我們的開發(fā)工具,叫IntelSystemStudio。前面大家可能聽說了,我們有ICC、IPP、TPP這些工具,在這里我先告知一下,這些工具都是我們IntelSystemStudio的一部分。以前可能聽說過Intel的其他開發(fā)工具。但是這塊我們用到的開發(fā)工具是IntelSystemStudio。今天我給大家分享一下這個工具到底如何幫助我們的開發(fā)人員。我們知道最近幾年智能的聯(lián)網(wǎng)設(shè)備處于爆發(fā)性的增長過程,這就給系統(tǒng)或者是應(yīng)用的開發(fā)人員帶來很大的挑戰(zhàn),系統(tǒng)的復(fù)雜度和人應(yīng)用的復(fù)雜性越來越高。為了解決這樣一個挑戰(zhàn),我們的軟件開發(fā)人員就需要這么一套工具,這套工具必須滿足一些特點(diǎn),必須是很完備的工具,必須涵蓋整個開發(fā)流程,從設(shè)計、開發(fā)、調(diào)試、優(yōu)化。并且這套工具還必須是使用起來非常簡單,很方便使用,快速幫助我們的軟件開發(fā)人員在很復(fù)雜的系統(tǒng)里面解決問題?,F(xiàn)在移動或者嵌入式的環(huán)境下,對功耗和性能的要求非常高,我們必須要有這樣的工具幫助開發(fā)人員來優(yōu)化功耗,提高性能。針對Intel的開發(fā)平臺我們就推出了這么一款工具,叫IntelSystemStudio,主要有幾大好處:一是加速產(chǎn)品的開發(fā)周期,中國很多開發(fā)人員開發(fā)產(chǎn)品,項目很多喜歡短平快的項目。使用工具能夠幫助我們加速開發(fā),縮短開發(fā)周期,盡快使你的產(chǎn)品上市。二是提高系統(tǒng)的穩(wěn)定性以及提高系統(tǒng)的功耗和性能。我們說了要加速開發(fā),并且提高系統(tǒng)的穩(wěn)定性和功耗性能,由我們IntelSystemStudio里面哪些工具來支持呢?我們這邊是把這些工具分成了三大塊,分別是編譯器和庫,分析器和調(diào)試器,我們的工具急于硬件和調(diào)試盒子的調(diào)試器。也有基于開源GDB的調(diào)試器,分別幫助開發(fā)人員調(diào)試底層的或者是驅(qū)動這樣的底層開發(fā)人員來做這種基于硬件的源碼集調(diào)試。第二個調(diào)試是有GDB,基于GDB的開源調(diào)試器,我們在這個基礎(chǔ)上增加很多功能,比如GDB上針對于并行程序進(jìn)行調(diào)試的功能,比如我們在開發(fā)過程中經(jīng)常碰到開發(fā)并行程序的時候噴到數(shù)據(jù)競爭之類的問題,通過這種我們所提供的GDB幫助我們快速定位類似的問題。除了調(diào)試器,我們還有分析器,主要分成兩部分:性能和功耗的分析,這是我后面會要重點(diǎn)講的分析器。第二部分是跟內(nèi)存和線程相關(guān)的分析器,我們經(jīng)常碰到內(nèi)存泄露或者發(fā)現(xiàn)死鎖的問題或者數(shù)據(jù)競爭的問題,這都是通過我們的工具可以幫助我們定位解決。第三大塊是編譯器,我們經(jīng)常提到有Intel的編譯器,有Intel的IPP函數(shù)庫等,這些工具能夠很方便的幫助我們來提高我們的系統(tǒng)或者應(yīng)用程序的性能。這些工具支持的操作系統(tǒng),我們當(dāng)然在傳統(tǒng)的Linux、windows上都支持,Android也是我們主要目標(biāo)之一,還有其他的,都是我們的支持目標(biāo)。我們工具支持的硬件平臺從大河到小河,幾乎所有都提供支持。比如低端的我們的工具業(yè)提供支持,大到靈動這邊的處理器。這套工具主要幫助的開發(fā)人員,只要你在Intel平臺上做嵌入式或者移動的軟件或者是系統(tǒng)開發(fā)的,基本都可以從這套工具里面受益。我們剛才講了有編譯器和庫,還有調(diào)試器等,這是一整套開發(fā)工具集,這里面具體有哪些工具?這個表里面清晰的幫我們列出來,具體的工具以及包括它支持的操作系統(tǒng),以及它支持的開發(fā)平臺,我們知道特別是針對Android來講,我們一般都是使用一種跨平臺的開發(fā)方式。比如說我們的工作環(huán)境還是在windows或者Linux,我們實際是運(yùn)行在Android系統(tǒng)上的。我們的工具也支持跨平臺的開發(fā)方式,就是我們的工具可以既使用在windows平臺上,也可以在Linux平臺上安裝,我們的開發(fā)和數(shù)據(jù)收集或者調(diào)試,都是跨平臺的,通過網(wǎng)絡(luò)或者是ADB來連到設(shè)備上,來遠(yuǎn)程調(diào)試或者數(shù)據(jù)收集。從編譯器和庫來看的話,主要有這么幾個,Intel的編譯器是我們的主打產(chǎn)品之一,還有一些其他的,當(dāng)然你也聽說過,在其他的工具里面,像IntelSystemStudio。這些函數(shù)庫對安卓的支持只有在IntelSystemStudio里面才會提供的。我們有硬件調(diào)試器還有軟件調(diào)試器。從性能和功耗的分析來講有這么幾個產(chǎn)品,大家可能已經(jīng)看到過。這是IntelSystemStudio里面唯一提供的工具,其他的開發(fā)工具里面是沒有的,是幫助我們分析嵌入式和移動設(shè)備的功耗的。我們還有剛才說的對于內(nèi)存和多線程錯誤進(jìn)行檢查和分析的工具。還有三套分析工具是針對GPU做分析的,針對Intel的GPU來進(jìn)行性能的具體分析。這個圖清楚的展示工具里面的具體部分,從開發(fā)、優(yōu)化我們就有編譯器和高性能函數(shù)庫進(jìn)行支持,我們的編譯器是和其他的那些開發(fā)的環(huán)境是可以集成的,比如說在Android目標(biāo)系統(tǒng)當(dāng)中,我們和安卓的XDK等做集成,還可以和安卓最新的AndroidStudio里面做集成,可以很方便的切換。有些人喜歡在windows上開發(fā)Android應(yīng)用,這也是我們支持的目標(biāo)。分析來講的話,我們剛才講了有具體性能的分析等三套工具,調(diào)試有系統(tǒng)集調(diào)試和應(yīng)用集調(diào)試。Intel編譯器大家多少有聽說,為什么要應(yīng)用Intel編譯器?主要的好處是來自于性能,這是編譯器和GCC最新版本,GCC5.1做的對比,也是我們16.0,應(yīng)該是一兩個月前剛剛創(chuàng)新的版本,這些也是針對嵌入式和移動的分析。大家的編譯選項都是屬于最好的編譯的選項的基礎(chǔ)上來做對比,從圖上我們可以看出Intel編譯器比GCC性能好處非常多,我們性能、數(shù)據(jù)大概翻了1倍。Intel編譯器的主要好處來源于哪些?相比GCC或者其他編譯器來講,Intel有非常多針對Intel架構(gòu)的指令集的優(yōu)化,還有高級的優(yōu)化。像Intel提供了一些優(yōu)化,是由Intel編譯器里面的自動向量化來實現(xiàn)的。這個優(yōu)化在其他的編譯器里面,可能也實現(xiàn)了,但是實現(xiàn)都不是非常的好。還有Intel編譯器里面我們業(yè)提供高級優(yōu)化,比如IPO優(yōu)化,編譯器我們知道是.C到.O的過程,我們把原文件編譯成.O,就是二進(jìn)制文件,這個鏈接起來形成可視性文件。這個過程在最終生成.O的優(yōu)化很少了,最主要的優(yōu)化是.O到.C的過程,Intel編譯器可以在生成.O的時候插入特殊的中間代碼,這樣可以做到Linux階段跨文件的優(yōu)化,這樣可以給現(xiàn)在很多項目帶來很多性能提升的關(guān)鍵優(yōu)化。我們講Intel有高性能庫,IPP函數(shù)庫在Intel上面應(yīng)用非常廣泛。Intel自己也提供了很多東西,很多里面都是用IPP庫里面的算法實現(xiàn)的。IPP函數(shù)庫由Intel工程師對底層的函數(shù)來實現(xiàn)的高性能的函數(shù)庫,它支持Intel所有平臺,包括在Android這塊用的比較多的,靈動上用的比較多的。比如最新的靈動,基于這個核的靈動處理器,這個在我們IPP里面都有具體實現(xiàn)。在不同的平臺上,我們的ITP的實現(xiàn)針對于數(shù)據(jù)壓縮來看,我們比其他的要好30%以上。我前段時間也和一些OEM廠商做這種系統(tǒng)的優(yōu)化,我們發(fā)現(xiàn)有的時候去點(diǎn)這個Android里面某些應(yīng)用的時候,它的顯示非常慢,這時候過段時間,你可以感覺到延時,然后才出來一些圖片,我們通過我們的工具定位出來,它其實做PNG的解碼,最終是調(diào)內(nèi)部PNG,然后調(diào)其他的東西,它就是做PNG的解碼,這個解碼在IPP里面有具體的實現(xiàn)。我們就把這個的函數(shù)用IPP的實現(xiàn)替換,很簡單的幾行代碼替換以后,我們的性能就有30%的提升。同樣的操作,用戶體驗相對來講也得到很高的提升。這是屬于IntelSystemStudio里面的滅性產(chǎn)品,是IntelVTuneAmplifier,這是做性能分析的一個必不可少的工具。VTune也支持Android系統(tǒng)的性能分析,Utune作為好的性能分析軟件需要具備幾大關(guān)鍵點(diǎn),其中就說我們是去收集數(shù)據(jù)的,我們性能數(shù)據(jù)可以收集到,但是數(shù)據(jù)的解析也非常重要。數(shù)據(jù)畢竟是數(shù)據(jù),我們需要理解這個數(shù)據(jù)才能有這些數(shù)據(jù)來給我們優(yōu)化提供方向,那么在Utune里面,Intel架構(gòu)會有一個硬件的單元,這個單元是提供了實時的CPU運(yùn)行時候的數(shù)據(jù),Utune會采樣硬件單元然后收集性能數(shù)據(jù),根據(jù)這些性能數(shù)據(jù)映射到運(yùn)行環(huán)境。在Utune里面就可以看到你的CPU時間或者是你的其他性能的數(shù)據(jù)是被映射到你具體的哪個進(jìn)程、那個線程或者哪個模塊,或者是哪個函數(shù)等,這都可以通過Utune實現(xiàn)的。它提供了非常好的數(shù)據(jù)分析的截面,它對于我們收集到的數(shù)據(jù)快速提供熱點(diǎn)的分析,它會根據(jù)我們的排序,比如我們按照函數(shù)或者調(diào)用站配需,快速調(diào)用到這次數(shù)據(jù)收集里面的運(yùn)行時間最長的那個函數(shù),或者可以按照你的進(jìn)程、按照你的線程或者模塊來進(jìn)行定位。Utune里面有非常好的關(guān)鍵時間線,通過這個時間線能夠快速的幫助我們了解到我們現(xiàn)在這次數(shù)據(jù)性能收集過程中的性能數(shù)據(jù)被映射到具體的線程以后,它在時間線上的反映。這次數(shù)據(jù)收集過程中,前面的運(yùn)行都是性能還不錯,中間可能會卡斷,這會反映在時間線上,可能會有突出的峰值。通過我們的時間線,我們可以很方便的分析到我們線程或者我們進(jìn)程的一些行為。另外Utune還有非常強(qiáng)大的過濾的功能,比如整個系統(tǒng)的性能數(shù)據(jù)收集以后,我只想看我關(guān)心的那部分?jǐn)?shù)據(jù),這時候就可以選擇關(guān)心的數(shù)據(jù)對它進(jìn)行過濾。我現(xiàn)在只關(guān)心其中某個函數(shù)在時間線上,它的性能數(shù)據(jù)是怎么樣的,你選擇以后,在這個時間線上就只會顯示哪個函數(shù)所花費(fèi)的CPU的開銷,或者在我的數(shù)據(jù)收集過程當(dāng)中,我只關(guān)心其中的幾秒鐘時間的性能數(shù)據(jù),只要在時間上面選一個區(qū)間,在上面的性能數(shù)據(jù)只顯示5秒鐘之內(nèi)的數(shù)據(jù),這是Utune所提供的非常好的幫助我們解釋性能數(shù)據(jù)的這么一些功能。其中有一個最大的功能,我們找到性能的熱點(diǎn),在哪些模塊、哪些函數(shù),要定位到具體的源碼和匯編代碼里面,你雙擊函數(shù),就可以定位到具體函數(shù)以及函數(shù)定位的源碼,我們一些性能數(shù)據(jù)可以具體映射到某行源碼等。這是實際的例子,我們曾經(jīng)和一些客戶來做了一些關(guān)于Android5.0上對于APK安裝的優(yōu)化,我們知道Android5.0以后做了一件事,在APK安裝的時候會調(diào)編譯器,最終會調(diào)一個進(jìn)程,這個進(jìn)程會把你的APK里面Java的代碼,就是DS文件在安裝的時候編譯城OAT文件。它就是做這么一件事,它在運(yùn)行的時候創(chuàng)建4個線程,這4個線程同時運(yùn)行,Google這樣做有它的好處和道理,但實際上在一些比較低端的平臺上,這么個操作會帶來比較痛苦的用戶體驗,就是我的安裝時間明顯變長了,我們要優(yōu)化安裝時間。通過Utune這樣的工具來看怎么優(yōu)化,這個例子里面我們當(dāng)時可以看到DSOAT這么一個進(jìn)程創(chuàng)建了4個線程,在四核APU上,每個線程都運(yùn)行在四個APU上,通過Utune到硬件CPU的這么一個方式查看,我們可以看到每個線程都會在四個CPU上頻繁的運(yùn)行。這就給我們帶來一個問題,我現(xiàn)在創(chuàng)建了4個線程,總共4個CPU,每個只會運(yùn)行到一個具體的CPU上,現(xiàn)在做頻繁的CPU的切換,這樣必定帶來很大的CPU線程頻繁切換的開銷,這個開銷還是很大的。后來我們做了優(yōu)化,我們把線程和CPU做了綁定,在ART的更新里面做了一個操作,那么以后我們的性能一下子就上去了。安裝時間大概能減少30%。通過優(yōu)化以后,我們可以看到CPU的時間開銷都是綁定在具體的CPU上,不是具體頻繁的切換。這是很典型的例子。IntelSystemStudio里面用的一個工具EnergyProfiler,這是做功耗分析的工具,這個工具其實有兩部分,一個是在我們的Android系統(tǒng)上做功耗數(shù)據(jù)的收集,收集回來的數(shù)據(jù)我們在EnergyProfiler里面查詢和收集。我們收集的文件可以通過Utune打開。我們知道現(xiàn)在的功耗分析很多時候都是用硬件,就是去插線,插在硬件的某些具體的部位來衡量實際功耗。我們用這個采用一種軟件方式幫助開發(fā)人員優(yōu)化功耗,這種方式使用起來非常簡單,不需要特殊的硬件設(shè)備。像這種分析的話,我們知道系統(tǒng)在某個特定狀態(tài)下,每個部件都有自己的狀態(tài)。對于CPU來講,它有自己的運(yùn)行狀態(tài)或者是睡眠狀態(tài),或者運(yùn)行的時候,可以工作在不同的頻率上。我們的工具就是對當(dāng)前系統(tǒng)的部件,比如CPU等的當(dāng)前狀態(tài)進(jìn)行采樣,或者把這些狀態(tài)收集回來,來幫助我們進(jìn)行功耗數(shù)據(jù)的分析??匆粋€例子,這是實際和功耗相關(guān)的例子。以前我們有客戶說在Android平板上用Google默認(rèn)提供的視頻播放器播放視頻,看起來一切正常,但是安裝第三方的視頻播放器以后,它的功耗開銷一下子變大,電池很快被耗光。這種情況不知道是什么原因,他以為是機(jī)器的原因。這種情況怎么辦?我們用IntelEnergyProfiler來看。我們采樣的數(shù)據(jù)采樣30秒鐘在四核機(jī)器上,我們可以看到CPU的頻率,在上面這個圖里面,我們可以看到這個CPU大部分時間是工作在睡眠狀態(tài),一部分時間是533MHZ,下面是第三方的播放器,第三方的播放器明顯頻率一下子上去了,工作在1.5G高頻上,而且時間長。我們看CPU的狀態(tài),在時間線上我們可以明顯看出來,這個淺綠色CPU是一直在工作狀態(tài),深綠色是水面狀態(tài)。CPU在第三方應(yīng)用的基礎(chǔ)上,它有很大一部分時間都是非零的,比上面使用原生的要高。這種情況,我們結(jié)合我們的工具對它進(jìn)行采樣,分析CPU運(yùn)行的時候做什么任務(wù),發(fā)現(xiàn)第三方庫做視頻播放的時候視頻解碼有很多沒有用硬件解碼器,都是用軟件解的。這種情況發(fā)生以后,我們知道第三方的視頻播放器在這種情況肯定開銷功耗很大??匆幌驴蛻舻姆答仯@些工具在外面使用非常廣泛,曾經(jīng)有公司用了我們的工具,做這種性能分析,根據(jù)他們的經(jīng)驗,他們原來找熱點(diǎn),分析熱點(diǎn),可能要花一天時間。但是用我們的工具5分鐘就可以搞定。Intel編譯器可以提高生產(chǎn)效率,我們的編譯器和GCC是兼容的,這種情況客戶反饋說有700萬行的代碼,用我們的編譯器3天時間就可以切換回來,并且有很好的性能提升。對于我們的調(diào)試機(jī)來講,特別是對于一個公司來講,如果你是剛開始要做硬件的底層的一些開發(fā)的話,用調(diào)試器可以快速幫我們解決代碼里面的正確性問題。最后這一頁也是,其中一個做平板的,也是做安卓平板,做APP應(yīng)用,是電子閱讀器,通過我們Utune的工具把功耗降低3倍。最后一個是中國的一個公司,它應(yīng)用我們的工具,主要是Utune、IPP、ICC這些工具,對他們的視頻錄像系統(tǒng)的性能提高了10%。所以使用這些工具好處還是非常明顯。在上個月,我們剛剛開發(fā)了2016版本,支持索非亞的平臺,還有一些其他的平臺也可以支持。windows10也是我們支持的新平臺,Android一直是支持的平臺。小結(jié)一下,這里面工具分成三大塊:調(diào)試器、分析器和編譯器。具體的話,我們有一個網(wǎng)站,這上面可能顯示不太清楚,我們可以百度或者Google上搜索一下IntelSystemStudio,應(yīng)該很方便就可以找到我們的網(wǎng)站,可以試用一下。謝謝!提問:剛才關(guān)于電源管理測試的軟件,它是主要針對于Intel平臺的X86架構(gòu)還是針對所有Android平臺?汪洋:只對Intel。提問:如果做電源管理的話,因為軟件去做電源管理,一般都是設(shè)定功耗,設(shè)定出來是多少功耗,每個IPK打出來多少功耗?比如我的屏幕亮度是600ma、800ma不定,做這種電源管理的話,它是不是存在一定的偏差,還是只針對于CPU的頻率做CPU方面的電源管理?汪洋:我們幫你做功耗分析,不是做電源管理,本身不做管理。根據(jù)實際當(dāng)前運(yùn)行的情況,它采樣這個數(shù)據(jù),得到數(shù)據(jù)以后,根據(jù)這個數(shù)據(jù)你自己發(fā)現(xiàn)里面是不是有異常,根據(jù)這個數(shù)據(jù)分析和優(yōu)化。提問:主要針對CPU的頻率?汪洋:CPU的頻率、狀態(tài),SUC的狀態(tài)還有其他的部件,還有系統(tǒng)的狀態(tài)等,它都會給你提供出來。它不光是CPU,還有一些其他的。提問:關(guān)于調(diào)試器,底層庫之前,像AndroidStudio,如果調(diào)之后,錯了,具體定位到哪個代碼,可不可以定位到源碼級?汪洋:可以。提問:基于源碼的架構(gòu),有的項目我想移到Intel的平臺上來,需要做哪些工作?就比較麻煩還是比較簡單?汪洋:里面涉及的東西比較多,我碰到的比較大的挑戰(zhàn)就是看你的指令,一般來講,如果你原來的編譯,有些要切換編譯器,有些數(shù)據(jù)對齊方式不一樣,或者擺的不一樣。還有一些其他的,比如底層的指令,比如ARM用的指令,Intel用的是SSSE,現(xiàn)在有解決辦法,Intel專門出了一個文件,把一些指令可以自動轉(zhuǎn)化到Intel平臺上。你要移植過來,應(yīng)該困難不大,主要前提都是在C++代碼,Java代碼不能替代。主持人:謝謝汪洋!剛才是對我們的開發(fā)工具做了非常詳盡的介紹,接下來我們會談到跨平臺開發(fā),這也是這些年很多開發(fā)者很關(guān)注的趨勢。我們接下來的演講會講到基于HTML5跨平臺的引擎和跨平臺的開發(fā)環(huán)境,IntelXDK,有請開源技術(shù)中心的工程師孫林為大家作介紹。歡迎!孫林:大家好!很久以前,web開發(fā)僅僅局限于演示,隨著HTML5標(biāo)準(zhǔn)的演進(jìn),這個狀況大幅度改變。最新的HTML5的標(biāo)準(zhǔn),對于圖形多媒體支持很強(qiáng),支持了很多工具最新的特性,它還有離線能力,而且還有很強(qiáng)的設(shè)備訪問能力,比如可以訪問設(shè)備生產(chǎn)器等。在開發(fā)者的資質(zhì)方面,一方面是有了HTML5這樣針對平臺開發(fā)的游戲引擎,還有一些非常靈活、強(qiáng)大的開發(fā)框架。而且利用數(shù)百個插件,還可以輕松的集成,網(wǎng)絡(luò)支付、社交分享等一系列功能。隨著標(biāo)準(zhǔn)的演進(jìn)和web引擎的性能增強(qiáng),web應(yīng)用終于有了可以和原生應(yīng)用一較高低的實力。首先是Android平臺的碎片化,這個圖是我們針對中國市場做的調(diào)查。我們可以首先看到,直到4.4開始,Android才用到這個非常舊的版本,而且無法單獨(dú)更新。4.4之前有一個非常大的份額,這些都只能使用Android的平臺。做過移動開發(fā)的人應(yīng)該有切身的感受,它的性能是非常差的。Android5.0開始才開始引入新的版本,這個版本的更新頻率也是遠(yuǎn)遠(yuǎn)落后于正常的周期,就是因為Android的包袱很重,所以Google無法對它做劇烈的升級。除了Android的碎片化,還有一個問題,我們?yōu)槭裁催x擇web?因為開發(fā)成本低,開發(fā)一次就可以在不同的平臺運(yùn)行。web開發(fā)可以跨越硬件門檻,但是還要面臨不同的問題,里面不同的功能有很大的差異。進(jìn)入HTML5的時代之后,對標(biāo)準(zhǔn)的支持頻率不一樣。web要么對所有平臺做一一適配,這樣都增加開發(fā)者開發(fā)和調(diào)試的成本。另外一點(diǎn)就是對性能的需求增高,現(xiàn)在web應(yīng)用不僅局限于日常簡單的應(yīng)用,還深入火爆的游戲市場,這種游戲之中可能會有一些畫面比較絢麗,對UI比較精致的游戲,它顯然滿足不了這樣的要求。即使是HTML5API規(guī)劃不斷擴(kuò)展,但是在訪問設(shè)備的API,比如訪問設(shè)備的通訊錄方面,還有一些功能,網(wǎng)絡(luò)支付、社交等功能,這方面目前還沒有很好的API的擴(kuò)展。而我們就是致力于解決這些痛點(diǎn)的新的HTML5引擎。利用這個可以將web引擎切入到自己的應(yīng)用中,這樣的話,在任何版本支持的平臺都可以獲得一致的瀏覽體驗。這無論是對開發(fā)者還是用戶都是巨大的好處。這兩個特性對圖形和多媒體方面會很大的提升預(yù)算性能。而且它很注重游戲應(yīng)用,我們專門提供游戲模式來對游戲引擎有更好的支持,在外面門口的展臺就有我們的DEMO,大家可以參觀。它提供擴(kuò)展機(jī)制,幫助用戶實現(xiàn)一些常用的功能。下面對Crosswalk做一個簡單的介紹,它每六周會更新一次版本,每次更新的時候都會引入最新的Crosswalk代碼,它緊隨最新的W3C標(biāo)準(zhǔn)和HTML5功能,它以BSD協(xié)議完全開源免費(fèi)。主力的平臺是很重要的,支持Android4.0以上的版本。我們可以保證在目前市面上各種主流移動設(shè)備,包括手機(jī)、平板上流暢運(yùn)行。這個表可以看到Crosswalk目前的影響力,首先它已經(jīng)支持了各種主流的HTML5的開發(fā)框架。截止到2015年7月份,在Googleplay上有超過兩千款Crosswalk的應(yīng)用,而且數(shù)量達(dá)到百萬級以上。我們不僅局限于自己的開發(fā),還有自己的標(biāo)準(zhǔn)化,我們在很多方面推動了標(biāo)準(zhǔn)的進(jìn)展。下面可以看到右邊表格的功能對比,可以看到有沒有Crosswalk在功能上,有了Crosswalk功能上有很多補(bǔ)充。我們不僅局限于主瀏覽器的基本功能,而且瀏覽器之前將新的技術(shù)引入其中。比如這個API,它用于展示用,它在旁邊的屏幕上跟當(dāng)前的游戲設(shè)備同樣的畫面展示,這些展示都是通過無線來做的。而且Crosswalk本身是有些非常激進(jìn)的功能,這些功能在web是不會開啟的,我們也可以開啟這些實驗性的功能。下面說一下Crosswalk對性能的改進(jìn),首先是SIMD,代表單指令,不多數(shù)據(jù),利用數(shù)據(jù)的變形性對多個數(shù)據(jù)進(jìn)行相同的操作。目前可以有四組運(yùn)算,如果說正常的運(yùn)行需要做4次加法,但是如果用SMID會將這四個數(shù)字放入向量之中,然后繼續(xù)一次運(yùn)算就可以大大加快運(yùn)算速度,降低電量的消耗。下面這幾個DEMO在外面都有實際演示,第一個是保證相同的運(yùn)算能力的情況下,我們可以看到用了SIMD,畫面可以顯示更多的元素。第一個DEMO是在相同的FPS的情況下,第二個是相同畫面的情況下,用了SIMD之后,楨數(shù)是沒有起用的2倍。還要提一下SIMD目前僅只支持Intel的CPU。webCL是基于Khronos組織基于OpenCL標(biāo)準(zhǔn)制定的一款Java為ScriptAPI。第一個DEMO是對畫面的平滑化做了處理,這方面可以提高15倍的運(yùn)算能力。第二個光影效果,在圖象處理提高2.3倍的性能提高等。游戲的方案,目前我們談一下市面上主流游戲開發(fā)解決方案,這個圖是最上層是游戲引擎和庫,中間就是web引擎,這種架構(gòu)的優(yōu)化一般來講有兩方面,首先第一方面就是游戲引擎上做優(yōu)化,這方面因為必須要針對web新能差了,必須在引擎上做優(yōu)化適應(yīng)新性能。這個引擎還要針對不同的瀏覽器做不同的適配,不管怎樣,它其實都會影響最終的運(yùn)算性能。另一方面以性能為基礎(chǔ),它直接照看了web的引擎,直接做ZS的綁定,將上層的ZS的API綁定到底層操作系統(tǒng)的接口。這樣有一個問題,喪失靈活性。因為在上層的API,每增加一個新功能都會在上面加對應(yīng)的支持。有沒有一種方案可以有下面的綁定層,同時還能具備靈活的API,這時候就是我們Crosswalk的游戲模式。游戲模式是以第二種方案為基礎(chǔ)的,從上往下依次是游戲引擎的KPI,下面是原生游戲引擎。從這里可以看到,它可以直接使用原生游戲引擎。在此之上,我們提供了完整的功能,開發(fā)者可以使用所有符合標(biāo)準(zhǔn)的KPI,還有一些插件,游戲里面非常重要的功能,社交分享等,只要加插件就可以輕松實現(xiàn)。目前Crosswalk等進(jìn)行深入合作,推動了新的游戲引擎,這個游戲引擎的性能已經(jīng)非常接近,比正常的性能提高8倍以上。基于這個引擎的小怪物,目前發(fā)布在了Googleplace上?,F(xiàn)在我們談一下Crosswalk的應(yīng)用是什么樣的,左邊是最普通的web應(yīng)用,它直接使用系統(tǒng)本身的web應(yīng)用來做的。第二個是Crosswalk應(yīng)用的模型。這里面包含了很多東西,這個運(yùn)行里面既有渲染引擎,還有擴(kuò)展,還有windows8的GS引擎。這種情況下,引用、內(nèi)容和Crosswalk里面的庫文件是綁定在一個系統(tǒng)中,這樣可以跳過系統(tǒng)的webview。這是一個應(yīng)用打包流程,對開發(fā)者來講他需要提供的就是最基本的web內(nèi)容。Crosswalk提供一個命令行打包工具,開發(fā)者只需要一個命令就可以將它自己存的HTML5內(nèi)容打包成APK放在Android上。我們還提供一個文件,通過這個文件,開發(fā)者可以指定Crosswalk的特性。比如說打開或者關(guān)閉硬件加速上。下面我們重點(diǎn)說一下Crosswalk的應(yīng)用如何運(yùn)行,它是web引擎。第一個模式是最常用、最標(biāo)準(zhǔn)的嵌入模式,每個應(yīng)用都包含完整的Crosswalk引擎,這樣的話,一個優(yōu)勢是應(yīng)用綁定在一起,開發(fā)者對于自己的引擎處理的效果有完整的預(yù)估,缺點(diǎn)很明顯。因為Crosswalk引擎的體積非常大,有20M左右,極大的增加文件的尺寸。另外一點(diǎn)正好相反,是共享模式,這種模式下,就類似現(xiàn)在通常的安裝方式。Crosswalk引擎是作為單純的APK裝在設(shè)備上,在設(shè)備上所有都可以共享。他相對于最原始的外包內(nèi)容,只增加幾百,這還是非平臺基礎(chǔ)的。缺點(diǎn)很明顯,好比你在很多老舊的機(jī)器上沒有安裝Java,你第一次啟動會要你安裝,這樣首次啟動的流程會被打斷針對共享模式我們做了優(yōu)化,就是后臺下載模式,這種模式主要針對這種情況,游戲的中心,用戶啟動這個應(yīng)用的時候并不一定要玩網(wǎng)絡(luò)游戲,有可能瀏覽很多排名,有一段時間之后才會打開網(wǎng)頁web游戲,這時候可以用后臺下載模式。它的應(yīng)用還是一樣打包的,但是啟動的時候,如果這個設(shè)備沒有安裝,它并不會讓用戶下載,在后臺會默默下載,然后默默安裝,這樣用戶實際上在打開網(wǎng)頁的界面的時候,使用Crosswalk引擎的時候,它已經(jīng)部署好了。還有經(jīng)濟(jì)模式,它對一般模塊進(jìn)行優(yōu)化,然后體積縮小一半,在10M左右,它模式做了修改,它有自己的迭代周期,它不會有最新的HTML5的特性。對某些引用,如果是混合應(yīng)用,有大量的原生代碼,在某個界面使用Crosswalk引擎,這種時候我們提供完全和webview一樣的KIP,這樣開發(fā)者來控制和處理這個部分。這時候還可以利用擴(kuò)展機(jī)制來自定義自己的API。最后我們再說一下Intel的XDK,提供設(shè)計、開發(fā)、調(diào)試一站式的開發(fā)流,它是一個非常高效的開發(fā)平臺工具,它可以非常方便的來打包基于Crosswalk的應(yīng)用或者是混合的應(yīng)用。除了標(biāo)準(zhǔn)的IED功能之外,它可以模擬不同的設(shè)備運(yùn)行情況,而且還有個Preview功能,通常的IDE,開發(fā)者修改代碼,它可以重新繞一下。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論