- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Are you sure you used stdcall on all IPP functions in Delphi?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks,
Chao
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page