[CMake] Using Intel Integrated Performance Primitives (IPP) in CMake

Alexander Neundorf a.neundorf-work at gmx.net
Wed Aug 20 17:17:07 EDT 2008


On Wednesday 20 August 2008, Mike Jackson wrote:
> Just a slow day while we wrap some things up and I was looking
> through the Intel IPP documentation and there are a whole slew of
> optimized string functions that come with the Intel C++ compiler. I
> was wondering a few things about using these within cmake (since
> cmake seems to be parsing lots and lots of strings).
>
> 1) Has anyone tried out the IPP string functions to see if they
> really do generate faster code

Using the IPP functions to decode/encode JPEGs on XScale processors brought a 
really big improvement compared to plain libjpeg (which is not optimized at 
all for that architecture). I have no idea how much can be gained on a x86 in 
string processing functions. I'd expect less.

> 2) If no one has, what would be a good place to try these functions
> out? I am looking in cmSystemTools at the moment. In other words,
> what would be the "low hanging" fruit to try and optimize with these
> functions (if any more optimization can be done)?
> 3) How much friction would there be to have these as an option in the
> cmake code base? 

I'm not speaking for the core cmake developers, but I would think this may 
require relatively much work/maintainance for relatively few users/little 
advantage.

> For those of us with the Intel C++ Compiler at our disposal?
>
> 4) Is the string parsing really any sort of bottle neck in the first
> place?

You could do some cmake profiling. When I was running cmake with callgrind 
(valgrind), string operations showed up quite at the top. Of course this 
doesn't take I/O into account.
Many/most string functions in CMake take a const char* as argument. In most 
cases this is converted from a std::string (cheap) and also converted back to 
a std::string (should be expensive, strlen + malloc ?).
Converting them/adding variants which take const std::string& as argument may 
have a positive effect.

Alex


More information about the CMake mailing list