Intel IPP庫使用入門

2021-06-29 16:26:40 字數 2993 閱讀 5164

說明:本文基於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 ...