說明:本文基於ipp v5.3 update 3 for windows* on ia-32,參考的文件採用安裝包安裝的文件;
文件「userguide_win_ia32.pdf」包含了本文的大部分資訊;
全稱:intel® integrated performance primitives
ia-32:32位處理器包括intel® core™2 duo、pentium® 4、xeon®、celeron®等,這是我們常用的cpu型別;
intel® 64:基於ia-32、帶有64位擴充套件的cpu,作業系統為64位;
intel itanium®:intel itanium® 2 處理器且作業系統為64位;
intel® ixp4xx network processors:包括某些用於嵌入式系統的cpu;
l 訊號處理(signal processing),包括了語音識別、語音流編碼、語音編碼等的函式;
l small matrices realistic rendering,包括了vector、matrix等的處理函式;
l 加解密(cryptography),包括數字認證、公鑰加密等的函式;
開發包安裝後,在安裝目錄下的tools/runtime目錄中有乙個可二次分發的安裝,該程式缺省會根據cpu型號僅安裝合適的執行時庫,但這可以通過命令列來控制;參考該目錄下的「readme.htm」。執行時庫的目的安裝位置為system32。
tools/env/ippenv.bat可用於設定環境變數
ia32/demo/ ippsdemo.exe可用於驗證安裝後路徑是否已經設定
tools/support/iplid.exe可用於獲得版本資訊
本部分參考「releasenotes.htm」;
900mb以上空閒磁碟空間;
windows xp及以上os,vc.net 2003及以上版本的vc,注意不包括vc6。
ipp.h包含了所有需要的ipp標頭檔案,工程中只要include它就可以了;
開發環境:將ipp路徑新增到vc的標頭檔案路徑及庫檔案路徑中即可;
stublib,包含符號而不包含實現,用於裝載dll;
dll,包含處理器分配器(processor dispatchers)及函式實現;
static merged,所有支援的處理器型別的函式實現,如ippsmerged.lib;
static e-merged,所有函式的處理器分配器,如ippsemerged.lib;
ipp提供了多種程式編譯鏈結方式以適用於不同的需求。
動態鏈結可以產生具有最大適應性的程式,它是唯一的不需要隨cpu公升級而重新編譯程式的鏈結方式;
bin/ipp*.dll是分配器(dispatcher)dll;它們在執行時檢查cpu型別並載入合適的cpu特定dll,這樣應用無需考慮具體cpu型號;cpu特定dll命名規律參考下文;
鏈結庫使用stublib目錄下的ipp*.lib;
方法:1, 包含ipp.h;
2, 使用常規的ipp函式名;
3, 與相應的stublib/ipp*.lib檔案鏈結;
某些程式僅依賴於少量的ipp函式,這種情況下可以使用該鏈結方式,以使目標程式僅僅依賴於它所確實用到的ipp庫;具體實現請參考《userguide_win_ia32.pdf》。
使用dispatch功能可使得靜態鏈結的應用程式與動態鏈結一樣,可以在執行時選擇使用合適的、適用於特定cpu型別的函式版本,這能很大地提高程式效能;
方法:1, 包含ipps.h;
2, 呼叫其他ipp函式前呼叫ippstaticinit或ippstaticinitcpu進行初始化;如果不進行初始化,後續函式呼叫將會使用預設的px型別的函式;
3, 使用普通函式名呼叫ipp函式;
4, 需包括lib目錄下鏈結庫e-merged庫、merged庫和ippcorel.lib
如果目標程式僅用於某種特定的cpu,則可以使用這種方式,它是這幾種方式中產生的目標程式最小的方式;
1, 包含tools/staticlib目錄下的cpu型別對應標頭檔案;
2, 包含ipps.h;
3, 鏈結庫僅使用merged庫(ipp*merged.lib)與ippcorel.lib;
header
processora6
intel® pentium® iii processor (sse)
w7pentium 4 processor (sse2)
t7pentium 4 processor with hyper-threading technology and streaming simd extensions 3 (sse3)
v8intel® core™2 duo processors (ssse3)
p8intel® penryn based processors (sse4.1)
pxall other intel® architecture processors
本部分主要參考《uscmanual.pdf》及usc各目錄下的readme文件;
usc是intel在ipp之上封裝提供的乙個用於音訊編譯碼、回聲消除、訊號音過濾、tone音檢測等功能的靜態庫,它隔離了ipp的使用細節,提供了相當簡單的幾個介面函式,使得開發人員無需了解上述這些演算法的具體定義與實現細節,就可以開發出提供相應功能的應用程式;
usc提供的api函式分成基本api(base api)與演算法專用api兩種型別;基本api包括numalloc、memalloc、init、control等函式,其中control提供了乙個通用的設定演算法引數的介面;專用api分成音訊編譯碼、回聲消除等上文中提及的4中型別,如編譯碼的包括encode、decode、getoutstreamsize、setframesize四個函式;
ortp庫使用入門
我們知道,rtp real timetransportprotocol 是用於internet上針對多 資料流的一種傳輸協議 做流 傳輸方面的應用離不開rtp協議 的實現及使用,為了更加快速地在專案中應用rtp協議 實現流 的傳輸,我們一般會選擇使用一些rtp庫,例如使用c 語言編寫的jrtplib...
python PyQt4庫使用入門
開始研究python的gui庫了,畢竟開發個小工具什麼的介面是少不了的 1.圖形庫的選擇 python的圖形庫有很多,我主要查了下列三個的一些資料 tkinter,python配備的標準gui庫,但是功能比較弱,似乎只適合開發非常簡單的介面。wxpython,它是python語言對流行的wxwidg...
入門Django ,使用sqlite資料庫
入門django 使用sqlite資料庫 1.建立工程 django admin startproject project name 2.建立應用 3.開啟admin應用 在settings.py檔案裡新增admin應用 django.contrib.admin 在url.py檔案裡新增 from ...