Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
107 Views

IPP 2020.0.0 Gold - doesn't work on some older CPUs

we have upated our product to IPP 2020.0.0 Gold and we got some feedback in our Helpdesk system from customers who have problems on some older processors

i.e.

xeon e3 1225 v3

and

i5-34??

it seems, that the initialization of IPP fails on these systems, unfortunal we don't have access to these sytstems and we can't debug.

Are there any known issues on older processors with IPP 2020?

IPP2019 works on the old processors fine.

 

 

Ralf

0 Kudos
8 Replies
Highlighted
Moderator
107 Views

Ralf, the v.2020 has to work on these systems as well. We know nothing about such kind of problems. Could we have more details? Do you know which IPP routine causes the problem? 

0 Kudos
Highlighted
Beginner
107 Views

 

thanks for your answer.

As i said, i have no access to these production systems for debug. We solved the issue by downgrading to IPP 2019

 

I have no access to a system where the problem occurs atm.

All accessible systems, where we can debug, are working fine with IPP 2020.0.0 Gold, too

 

The issue seems to be in an initialization routine for IPP, that is what i can see from our internal Log-Files.

 

 

Ralf

0 Kudos
Highlighted
Moderator
107 Views

If possible, can you please share the log file? This is important for us to narrow down this issue.

0 Kudos
Highlighted
Beginner
107 Views

the log is from our program, - the entry says only, that it failed to initialize IPP, there are no info about the called functions etc.

If there appears another system with this issue, i'll try to narrow down.

I will let you know as soon as i have more info ...

 

0 Kudos
Highlighted
Moderator
107 Views

which is the first IPP function from this application pipeline? did this application call some Init function?

0 Kudos
Highlighted
Beginner
107 Views

 

here is the init function:

 

void App::initIPP() const

  {

    LogIntend li(LogManager_->SysLog_, "Init IPP");

    ippInit();

    auto lib = ippGetLibVersion();

    IPPLog_->log("Version " + string(lib->Name) + " " + string(lib->Version));

    Ipp64u mask, emask;

 

    /* Get CPU features and features enabled with selected library level */

    auto status = ippGetCpuFeatures(&mask, 0);

    if (ippStsNoErr == status) {

      emask = ippGetEnabledCpuFeatures();

      IPPLog_->log(string("Features supported by CPU\tby IPP\n"));

      IPPLog_->log(string("-----------------------------------------\n"));

      IPPLog_->log(string("  ippCPUID_MMX        = " + strFromInt((mask & ippCPUID_MMX) > 0)));

      IPPLog_->log(string("  ippCPUID_SSE        = " + strFromInt((mask & ippCPUID_SSE) > 0)));

      IPPLog_->log(string("  ippCPUID_SSE2       = " + strFromInt((mask & ippCPUID_SSE2) > 0)));

      IPPLog_->log(string("  ippCPUID_SSE3       = " + strFromInt((mask & ippCPUID_SSE3) > 0)));

      IPPLog_->log(string("  ippCPUID_SSSE3      = " + strFromInt((mask & ippCPUID_SSSE3) > 0)));

      IPPLog_->log(string("  ippCPUID_MOVBE      = " + strFromInt((mask & ippCPUID_MOVBE) > 0)));

      IPPLog_->log(string("  ippCPUID_SSE41      = " + strFromInt((mask & ippCPUID_SSE41) > 0)));

      IPPLog_->log(string("  ippCPUID_SSE42      = " + strFromInt((mask & ippCPUID_SSE42) > 0)));

      IPPLog_->log(string("  ippCPUID_AVX        = " + strFromInt((mask & ippCPUID_AVX) > 0)));

      IPPLog_->log(string("  ippAVX_ENABLEDBYOS  = " + strFromInt((mask & ippAVX_ENABLEDBYOS) > 0)));

      IPPLog_->log(string("  ippCPUID_AES        = " + strFromInt((mask & ippCPUID_AES) > 0)));

      IPPLog_->log(string("  ippCPUID_SHA        = " + strFromInt((mask & ippCPUID_SHA) > 0)));

      IPPLog_->log(string("  ippCPUID_CLMUL      = " + strFromInt((mask & ippCPUID_CLMUL) > 0)));

      IPPLog_->log(string("  ippCPUID_RDRAND     = " + strFromInt((mask & ippCPUID_RDRAND) > 0)));

      IPPLog_->log(string("  ippCPUID_F16C       = " + strFromInt((mask & ippCPUID_F16C) > 0)));

      IPPLog_->log(string("  ippCPUID_AVX2       = " + strFromInt((mask & ippCPUID_AVX2) > 0)));

      IPPLog_->log(string("  ippCPUID_AVX512F    = " + strFromInt((mask & ippCPUID_AVX512F) > 0)));

      IPPLog_->log(string("  ippCPUID_AVX512CD   = " + strFromInt((mask & ippCPUID_AVX512CD) > 0)));

      IPPLog_->log(string("  ippCPUID_AVX512ER   = " + strFromInt((mask & ippCPUID_AVX512ER) > 0)));

      IPPLog_->log(string("  ippCPUID_ADCOX      = " + strFromInt((mask & ippCPUID_ADCOX) > 0)));

      IPPLog_->log(string("  ippCPUID_RDSEED     = " + strFromInt((mask & ippCPUID_RDSEED) > 0)));

      IPPLog_->log(string("  ippCPUID_PREFETCHW  = " + strFromInt((mask & ippCPUID_PREFETCHW) > 0)));

      IPPLog_->log(string("  ippCPUID_KNC        = " + strFromInt((mask & ippCPUID_KNC) > 0)));

    }

  }

 

 

Ralf

0 Kudos
Highlighted
Beginner
107 Views

i have solved the issue on a system with an i3-3220 CPU

 

It was not a problem attributable to Intel IPP 2020.0.0 Gold

 

it was an issue with Intel Media SDK 2019

the code sequence is
 

		mfxVersion ver = { { 1, 1 } };

		mfxSession auxSession;
		const auto result = MFXInit(MFX_IMPL_HARDWARE_ANY, &ver, &auxSession);

 

which works fine with SDK 2018 but generates an access violation in MFXInit with SDK 2019 on some old processors ( i3-3220 has Hardware API-Level 11)

i changed the code to

		mfxVersion ver = { { 13, 1 } };

		mfxSession auxSession;
		const auto result = MFXInit(MFX_IMPL_HARDWARE_ANY, &ver, &auxSession);

and now the code works with Intel Media SDK 2019 on an i3-3220 (no access violation in MFXInit)

 

Ralf

 

0 Kudos
Highlighted
Moderator
107 Views

thanks for letting us know, Ralf

0 Kudos