<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#ffffff">
Argh, this is related to the core.cpuid bug. I really don't feel
like kludging a workaround into these benchmarks. Can you please
use 32 instead? Since everything's in single precision, these
benchmarks won't have stack alignment artifacts.<br>
<br>
On 2/26/2011 3:01 PM, Russel Winder wrote:
<blockquote cite="mid:1298750485.27545.277.camel@anglides"
type="cite">
<pre wrap="">On Sat, 2011-02-26 at 14:43 -0500, David Simcha wrote:
</pre>
<blockquote type="cite">
<pre wrap="">I feel like the build process for the benchmarks is so trivial that no
formal process is required. Besides, I know nothing about build
tools because, for anything I write, I tend to keep the build process
so simple and stupid that nothing more than a 2-line script or the
builtin build system for Code::Blocks is required.
</pre>
</blockquote>
<pre wrap="">
OK, I used SCons as it is the right tool for dealing with directories of
independent compilations.
</pre>
<blockquote type="cite">
<pre wrap="">For std.parallelism, as you appear to have figured out, you need to
put it in your Phobos source folder, edit the makefile and recompile
Phobos. Each benchmark is completely self-contained. The way I run
them is to open them in Code::Blocks (or whatever IDE happens to be
available) and hit "build and run". dmd -O -inline -release
someBenchmark.d && ./someBenchmark would also work fine.
</pre>
</blockquote>
<pre wrap="">
I don't go anywhere near recompiling Phobos, I just use what comes in
the distribution. I keep extra stuff in ~/lib/D and use the DPATH,
LIBPATH and LIBS capabilities.
|> scons
/usr/bin/python /home/Checkouts/Mercurial/SCons/bootstrap/src/script/scons.py
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
dmd -I. -I/home/users/russel/lib/D -m64 -c -ofeuclidean.o euclidean.d
gcc -o euclidean euclidean.o -L/home/users/russel/lib.Linux.x86_64 -L/home/users/russel/lib.Linux.x86_64/DMD2/lib64 -lparallelism -lphobos2 -lpthread -lm -lrt
dmd -I. -I/home/users/russel/lib/D -m64 -c -ofmatrixInversion.o matrixInversion.d
gcc -o matrixInversion matrixInversion.o -L/home/users/russel/lib.Linux.x86_64 -L/home/users/russel/lib.Linux.x86_64/DMD2/lib64 -lparallelism -lphobos2 -lpthread -lm -lrt
dmd -I. -I/home/users/russel/lib/D -m64 -c -ofmillionSqrt.o millionSqrt.d
gcc -o millionSqrt millionSqrt.o -L/home/users/russel/lib.Linux.x86_64 -L/home/users/russel/lib.Linux.x86_64/DMD2/lib64 -lparallelism -lphobos2 -lpthread -lm -lrt
dmd -I. -I/home/users/russel/lib/D -m64 -c -ofparallelSort.o parallelSort.d
gcc -o parallelSort parallelSort.o -L/home/users/russel/lib.Linux.x86_64 -L/home/users/russel/lib.Linux.x86_64/DMD2/lib64 -lparallelism -lphobos2 -lpthread -lm -lrt
dmd -I. -I/home/users/russel/lib/D -m64 -c -ofpipelining.o pipelining.d
gcc -o pipelining pipelining.o -L/home/users/russel/lib.Linux.x86_64 -L/home/users/russel/lib.Linux.x86_64/DMD2/lib64 -lparallelism -lphobos2 -lpthread -lm -lrt
scons: done building targets.
|> for f in euclidean matrixInversion millionSqrt parallelSort pipelining ; do echo "========================== $f ==============================" && $f ; done
========================== euclidean ==============================
Serial reduce: 5182 milliseconds.
Parallel reduce with 1 cores: 5183 milliseconds.
========================== matrixInversion ==============================
Inverted a 256 x 256 matrix serially in 63 milliseconds.
Inverted a 256 x 256 matrix using 1 cores in 64 milliseconds.
========================== millionSqrt ==============================
Parallel benchmarks being done with 1 cores.
Did serial millionSqrt in 975 milliseconds.
Did parallel foreach millionSqrt in 1263 milliseconds.
Did parallel map millionSqrt in 979 milliseconds.
========================== parallelSort ==============================
Serial quick sort: 6256 milliseconds.
Parallel quick sort: 6317 milliseconds.
========================== pipelining ==============================
Did serial string -> float, euclid in 2606 milliseconds.
Did parallel string -> float, euclid with 1 cores in 2576 milliseconds.
So we have the problem that the code is failing to observe that I have 8
cores on my machine :-((
</pre>
<pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
phobos mailing list
<a class="moz-txt-link-abbreviated" href="mailto:phobos@puremagic.com">phobos@puremagic.com</a>
<a class="moz-txt-link-freetext" href="http://lists.puremagic.com/mailman/listinfo/phobos">http://lists.puremagic.com/mailman/listinfo/phobos</a></pre>
</blockquote>
<br>
</body>
</html>