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.
> 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 ;-)
73 de Jeff
Received on Sat Jun 25 21:45:45 2011