Community
cancel
Showing results for 
Search instead for 
Did you mean: 
114 Views

Problem with the IPP Data Compression running on a Quad Core processor

I developed an applicationwhich use IPP Data Compression. The first code (which load the IPPDC library) is based on Delphi sample IPP Image Processing, available on IPP samples.

In this code, the ippdcGetLibVersion (ippiGetLibVersion on the sample)returns name = ippdcp8-6.0.dll+ if running at a Quad Core processor. Thisfile doesn t exist. I copy the ippdcp8-6.0.dll to ippdcp8-6.0.dll+ and it worked, but I need to know if this iscorrect.

Can you help me?

Rafael de Medeiros

0 Kudos
10 Replies
Thomas_Jensen1
Beginner
114 Views

Are you sure you used stdcall on all IPP functions in Delphi?

114 Views

Yes. Iam sure.

function ippGetLibVersion: PIppLibraryVersion; stdcall;

The configuration is 2 Intel Xeon E5506 2,13GHz Quad Core and the function IPPGetCPUType returns decimal 37 (hex 25 - ippCpuNehalem)

Ying_H_Intel
Employee
114 Views

Hello,

I noticed you are calling IPP 6.0 dlls. How about try the latest IPP vesion: IPP 6.1 update 3?

You can downloadthe install package and sampleby following the instructionon http://software.intel.com/en-us/articles/ipp-downloads-registration-and-licensing/

Pleaselet us know if anyresult.

Thanks

Yign

114 Views

Hello,

Same problem with version 6.1. I emphasize that this problemoccurs only in this case.

This code is running in other 1000 clients without problem.

This is the sample of my code

result := LoadLibrary('ippdc-6.1.dll');
if (result <> 0) then begin
@tmpGetLibVersion := GetProcAddress(result,'ippdcGetLibVersion');
if (tmpGetLibVersion <> nil) then begin
version := tmpGetLibVersion;
loadedFullName := version.Name;

// In this point, the version.name = ippdcp8-6.1.dll+

FreeLibrary(Result);
Result := LoadLibrary(PChar(path + loadedFullName));
if (result <> 0) then begin
// Success
end else begin
loadedFullName := ComposeFullDllName(name, ipp_version);
// erro, load the old libray
result := LoadLibrary('ippdc-6.1.dll');
end;
end;
end;
end;

Thanks

Rafael

matthieu_darbois
New Contributor III
114 Views

Hi,

you don't have to unload ippdc-6.1.dll and try load ippdcp8-6.1.dll. Just go on with ippdc-6.1.dll

When you call functions in ippdc-6.1.dll, they are automatically mapped to the functions in the most suited DLL (in this case ippdcp8-6.1.dll)

You never have to worry about loading optimized DLL with IPP. You just load the dispatch DLL (the one with no xx extension). The rest of the work is already handled by Intel.

Regards,

Matthieu

114 Views

Hi Matthieu, Thanks foryou reply.

I understand this, but why the Delphi sample at the IPPSamples (w_ipp-samples_p_6.0.0.117\ipp-samples\language-interface\delphi\src) do this?

Thanks,

Rafael

Vladimir_Dudnik
Employee
114 Views

Hello,

you do notneed to rename IPP files. The symbols '+' in string returned by ippdcGetLibVersion does not refer to file name. It is a notion that library may have tick-tock dispatcher in addition to traditional IPP dispatching mechanism.

Regards,
Vladimir

matthieu_darbois
New Contributor III
114 Views

Hi,

As I don't use Delphi, I didn't see these samples. Why Intel is providing this like that ? Just loading the dispatch should be sufficient. Someone from Intel could clarify this point ?

Matthieu

Albert_Stepanov
New Contributor I
114 Views

Hi,

When this sample was created there was only one dispatching mechanism. So '+' symbols in string were absent. And loading and unloading of libraries were developed in this sample to specify explicitly which processor-specific library should be loaded (Menu|Tools|Options...) and compare them performance.

Rafael, you can add following strings inyour code to remove symbols not relating to file name:

loadedFullName := version.Name;

indx := Pos('+', loadedFullName);

Delete(loadedFullName, indx, Length(loadedFullName)+1-indx);

If anything you think I can help you, please feel free to tell me.

Regards,

Albert

Chao_Y_Intel
Employee
114 Views

For those who are using the sample, the fixed is includedin IPP 6.1 update 5 release.

Thanks,
Chao

Reply