Intel IPPライブラリのインストールとテストvs 2015-win 10-ipp 2020
2508 ワード
参考ブログ:1.https://blog.csdn.net/csdn409517589/article/details/87881749 2.https://blog.csdn.net/DJason43/article/details/80171079?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
1.Intel IPPライブラリのインストール
1.Intel IPPライブラリのインストール
公式サイトで必要なIPPバージョンを登録してダウンロードするか、ネット上でIPPSを探してダウンロードし、説明通りにインストールします.
2.テスト
2.1.プロジェクト設定——IPPライブラリを自動的に開く
— —Intel Performance Library—Use Intel @Ipp—>Default Linking Method;
2.2.ヘッダファイルを参照--#include"ipp.h"
これにより、IPP関数を正常に使用できます.
2.3.プロジェクト設定-手動関連ライブラリ関数
チュートリアルポイント参照
4.スペクトルの計算
4.1.関数機能の説明
信号のスペクトルを計算し,主にIPP関数ライブラリにおける高速フーリエ変換(FFT)相関関数といくつかの一般的な乗算,加算などの基本演算を用いた.FFTを計算して、主にippsFFTInitAlloc_を使いますC()とippsFFTFwd_CToC()の2つの関数で、ippsFFTInitAlloc_C()関数は変数空間を初期化し、関連キャッシュを開くために使用され、ippsFFTFwd_CToC()関数はFFTの計算を実現するために用いられる.関連関数の紹介と入出力インタフェースの定義は公式ドキュメントippsmanで行うことができる.pdfで見つかりました.
4.2.スペクトル計算関数
int CalculateSpectrumByReal(int* rData, int samplePoint, float* specturmData, int &outSpecturmDataLength,
int winOpt, int fftOrder)/* */
{
IppStatus status;
int segement,fftPoint;
IppsFFTSpec_R_32f* spec;
fftPoint = (int)pow(2.0,fftOrder); //FFT
outSpecturmDataLength = fftPoint/2; //
if (fftOrder < 10)
{
return -2; //FFT ,FFT 10
}
else if (samplePoint < fftPoint)
{
return -1; //
}
Ipp32f *fData = ippsMalloc_32f(samplePoint);//
Ipp32f *x = ippsMalloc_32f(fftPoint);
Ipp32f *X = ippsMalloc_32f(fftPoint+2);
Ipp32f *mag = ippsMalloc_32f(outSpecturmDataLength); // abs()
memset(fData,0,sizeof(Ipp32f)*samplePoint);
memset(x,0,sizeof(Ipp32f)*fftPoint);
memset(X,0,sizeof(Ipp32f)*(fftPoint+2));
memset(mag,0,sizeof(Ipp32f)*outSpecturmDataLength);
memset(specturmData,0,sizeof(Ipp32f)*outSpecturmDataLength);
ippsConvert_32s32f(rData,fData,samplePoint);
status = ippsFFTInitAlloc_R_32f(&spec,fftOrder,IPP_FFT_DIV_INV_BY_N,ippAlgHintNone);
segement = (int)(samplePoint/fftPoint); // FFT
for (int i=0;i
2.1.プロジェクト設定——IPPライブラリを自動的に開く
— —Intel Performance Library—Use Intel @Ipp—>Default Linking Method;
2.2.ヘッダファイルを参照--#include"ipp.h"
これにより、IPP関数を正常に使用できます.
2.3.プロジェクト設定-手動関連ライブラリ関数
チュートリアルポイント参照
4.スペクトルの計算
4.1.関数機能の説明
信号のスペクトルを計算し,主にIPP関数ライブラリにおける高速フーリエ変換(FFT)相関関数といくつかの一般的な乗算,加算などの基本演算を用いた.FFTを計算して、主にippsFFTInitAlloc_を使いますC()とippsFFTFwd_CToC()の2つの関数で、ippsFFTInitAlloc_C()関数は変数空間を初期化し、関連キャッシュを開くために使用され、ippsFFTFwd_CToC()関数はFFTの計算を実現するために用いられる.関連関数の紹介と入出力インタフェースの定義は公式ドキュメントippsmanで行うことができる.pdfで見つかりました.
4.2.スペクトル計算関数
int CalculateSpectrumByReal(int* rData, int samplePoint, float* specturmData, int &outSpecturmDataLength,
int winOpt, int fftOrder)/* */
{
IppStatus status;
int segement,fftPoint;
IppsFFTSpec_R_32f* spec;
fftPoint = (int)pow(2.0,fftOrder); //FFT
outSpecturmDataLength = fftPoint/2; //
if (fftOrder < 10)
{
return -2; //FFT ,FFT 10
}
else if (samplePoint < fftPoint)
{
return -1; //
}
Ipp32f *fData = ippsMalloc_32f(samplePoint);//
Ipp32f *x = ippsMalloc_32f(fftPoint);
Ipp32f *X = ippsMalloc_32f(fftPoint+2);
Ipp32f *mag = ippsMalloc_32f(outSpecturmDataLength); // abs()
memset(fData,0,sizeof(Ipp32f)*samplePoint);
memset(x,0,sizeof(Ipp32f)*fftPoint);
memset(X,0,sizeof(Ipp32f)*(fftPoint+2));
memset(mag,0,sizeof(Ipp32f)*outSpecturmDataLength);
memset(specturmData,0,sizeof(Ipp32f)*outSpecturmDataLength);
ippsConvert_32s32f(rData,fData,samplePoint);
status = ippsFFTInitAlloc_R_32f(&spec,fftOrder,IPP_FFT_DIV_INV_BY_N,ippAlgHintNone);
segement = (int)(samplePoint/fftPoint); // FFT
for (int i=0;i
int CalculateSpectrumByReal(int* rData, int samplePoint, float* specturmData, int &outSpecturmDataLength,
int winOpt, int fftOrder)/* */
{
IppStatus status;
int segement,fftPoint;
IppsFFTSpec_R_32f* spec;
fftPoint = (int)pow(2.0,fftOrder); //FFT
outSpecturmDataLength = fftPoint/2; //
if (fftOrder < 10)
{
return -2; //FFT ,FFT 10
}
else if (samplePoint < fftPoint)
{
return -1; //
}
Ipp32f *fData = ippsMalloc_32f(samplePoint);//
Ipp32f *x = ippsMalloc_32f(fftPoint);
Ipp32f *X = ippsMalloc_32f(fftPoint+2);
Ipp32f *mag = ippsMalloc_32f(outSpecturmDataLength); // abs()
memset(fData,0,sizeof(Ipp32f)*samplePoint);
memset(x,0,sizeof(Ipp32f)*fftPoint);
memset(X,0,sizeof(Ipp32f)*(fftPoint+2));
memset(mag,0,sizeof(Ipp32f)*outSpecturmDataLength);
memset(specturmData,0,sizeof(Ipp32f)*outSpecturmDataLength);
ippsConvert_32s32f(rData,fData,samplePoint);
status = ippsFFTInitAlloc_R_32f(&spec,fftOrder,IPP_FFT_DIV_INV_BY_N,ippAlgHintNone);
segement = (int)(samplePoint/fftPoint); // FFT
for (int i=0;i