Community
cancel
Showing results for 
Search instead for 
Did you mean: 
ipp_agor
Beginner
113 Views

ippsCIS_32fc_A11 not work

ippsCIS_32fc_A11 not work

platform: Windows (XP), IA-32 ipp v6.0.2.074

code:

typedef complex FCOMPLEX;

typedef complex DCOMPLEX;

int N = 512;

float *arg = ippsMalloc_32f(N);

float *arsin = ippsMalloc_32f(N);

float *arcos = ippsMalloc_32f(N);

FCOMPLEX *arexp = (FCOMPLEX*)ippsMalloc_32fc(N);

double *darg = ippsMalloc_64f(N);

double *darsin = ippsMalloc_64f(N);

double *darcos = ippsMalloc_64f(N);

DCOMPLEX *darexp = (DCOMPLEX*)ippsMalloc_64fc(N);

for (int i = 0; i < N; ++i)

{

arg = 2*3.14*i/N;

darg = 2*3.14*i/N;

};

IppStatus status;

status = ippsSinCos_32f_A11(arg,arsin,arcos,N);

cout<<"ippsSinCos_32f_A11 - status = "<<

cout<

status = ippsCIS_32fc_A11(arg, (Ipp32fc*)arexp, N);

cout<<"ippsCIS_32fc_A11 - status = "<<

cout<
result:

>ippsSinCos_32f_A11 - status = 0

>0.707398 0.706827
CRASH

0 Kudos
6 Replies
Ying_H_Intel
Employee
113 Views

Hello agor,

Thank you for your report. We will look into this.

For workaround,assume you arelinking static library, e.g
ippvmemerged.lib ippvmmerged.lib ippsemerged.lib ippsmerged.liblibcorel.lib
Would you pleasetry toadd the below code at the begin of your program and see if it can work?
//use "px" code
IppStatus sts = ippStaticInitCpu( ippCpuUnknown );//ippGetCpuType()

// Print the version of ipp being used
const IppLibraryVersion* lib = ippvmGetLibVersion();
printf("%s %s %d.%d.%d.%dn", lib->Name, lib->Version,lib->major, lib->minor, lib->majorBuild, lib->build);

Regards,
Ying

ipp_agor
Beginner
113 Views

HelloYing (Intel)

Yes, my test code is alredy linked as static.

I have added code to the begining of the previous code:

IppCpuType cpu = ippGetCpuType();
cout<<"Real CPU type = "<< IppStatus sts = ippStaticInitCpu(ippCpuUnknown);
const IppLibraryVersion* lib = ippvmGetLibVersion();
printf("%s %s %d.%d.%d.%dn", lib->Name, lib->Version,lib->major, lib->minor, lib->majorBuild, lib->build);

result:
Real CPU type = 34
ippvmpxl.lib 6.0 Update 2 build 167.41 6.0.167.628
ippsSinCos_32f_A11 - status = 0
0.707388 0.706825
ippsCIS_32fc_A11 - status = 0
(0.707388,0.706825)
Press any key to continue . . .


change ippCpuUnknown on ippGetCpuType() ( ppStatus sts = ippStaticInitCpu(ippGetCpuType()); )
result:

Real CPU type = 34
ippvmv8l.lib 6.0 Update 2 build 167.41 6.0.167.628
ippsSinCos_32f_A11 - status = 0
0.707398 0.706827
ippsCIS_32fc_A11 - status = 0
(0,0)
Press any key to continue . . .


No crash, but (0,0) not correctly result. I would like tohave more fast version and
it's a pity that it's imposible.

Regards, Igor.

Ying_H_Intel
Employee
113 Views


Agor,

Thank you for your test.I'm able to reproduce problem with MSVC2005 too. There are some problem with cpu-specific optimized code, but "px" code works fine.The issue has been recorded our database and will befixed in further release.

As workaround, you may try:

1) to use px version of CIS_32fc by directly call to _px_ippsCIS_32fc or by removing ippStaticInit function

2) to use CIS_64fc instead CIS_32fc

Thanks
Ying
ipp_agor
Beginner
113 Views

Hello Ying,

>The issue has been recorded our database and will befixed in further release.
OK. Wait... :)

>1) to use px version of CIS_32fc - by directly call to _px_ippsCIS_32fc or by removing ippStaticInit function
px version no interest. I using CIS with FFT (px version is slow).
I think use:
ippsSinCos_32f_A11((arg_array, sin_array, cos_array, len);
ippsRealToCplx_32f(cos_array, sin_array, exp_array, len);


Regards, Igor.

Ying_H_Intel
Employee
113 Views

It is a good solution too. The fixed version will be IPP 6.1 gold (targed to at the latter of Q2). You are welcome to test it by that time
Regards,
Ying
Ying_H_Intel
Employee
113 Views

Hi Igor,

IPP 6.1 Gold is released today. You are welcomed to try it. The install packageis available in Intel registration center<<>>. Or you can get 30-day evaluate version from IPP product website <<>>.

Best Regards,
Ying


Reply