On Jun 23, 2011, at 1:04 PM, Miller, Vincent (Rick) wrote:

> I had not loaded berkely-db because I thought I had read somewhere that there 
> was a bundled berkley-db with RPM5.  I have since loaded Berkley-DB 5.1.x 
> from FreeBSD ports and was able to get the compile to move along further.
> 

Good.

> It failed later when attempting to link against libgomp which is not 
> installed on the system.  I am planning to reconfigure disabling OpenMP, 
> unless it provides a feature we might be able to utilize.  Can you clarify 
> the features OpenMP provides to RPM5?
> 

RPM is headed towards multi-threaded installs.

One way to achieve parallelism would be to use OpenMP.

When looking at feasibility, I parallelized the loop over multiple digests
(not the digest algorithms per se which are nearly impossible to parallelize)
used by RPM and benchmarked rpm digest (which can run >100 digests
in parallel directly off of input/output buffers) and measured a 7x speed-up
on a 4-way.

Since a 7x speedup from a single #pragma is a quite remarkable gain,
I parallelized --verify to see how much gain might be achieved in a
non-artificial "real world" case. The results there were less impressive
(~1.5x faster from a primitive implementation, since improved to ~2x
back in Jabuary in rpm-5.4.0).

The refactoring cost to use OpenMP #pragma in RPM code would
be considerable, and so likely OpenMP will NOT be used when
RPM becomes multi-threaded.

So the "feature" provided by using OpenMP in 5.3.1 is that --verify
would run ~1.6x faster on SMP.

I personally wouldn't bother too much with OpenMP on FreeBSD based
on my experiences compiling and using RPM on Mac OS X, where attempting
to use GOMP and GCC is a rather rugged wilderness trek, paddling upstream and 
swatting
lots and lots of mosquitoes while trying to avoid more dangerous fauna.

YMMV of course ;-)

hth

73 de Jeff

Reply via email to