Getting ready for 2.061

Russel Winder russel at winder.org.uk
Sat Dec 22 09:49:57 PST 2012


On Sat, 2012-12-22 at 17:41 +0100, David Nadlinger wrote:
[…]
> If you ever have time to do some quick profiling, could you 
> please try to figure out why the LDC-generated executable is 
> slower – or if the code you are working on is open source, put 
> some instructions together on how to run the benchmark(s)? The 
> LLVM backend really shouldn't produce slower code than DMD in 
> just about any situation, so most likely we are doing something 
> stupid in LDC.

Can you point me at tools and documentation for profiling that generates
the data that would be useful to you. I am very much an LLVM n00b.  I
just compile and use LDC and compile and install LLVMPy, so all of LLVM
is under the covers for me.

The codes are all published on GitHub
https://github.com/russel/Pi_Quadrature this is an embarrasingly
parallel summation problem, approximating  π by quadrature. This is the
example David used for one of the std.parallelism examples. The codes
use SCons for compile and execution. So to compile and run pi_d_spawn.d:

	scons run_pi_d_spawn

Though you will want to use my "D tools fork" of SCons which is a
Mercurial repository at BitBucket
https://bitbucket.org/russel/scons_d_tooling No need to install SCons
can be executed from the clone by:

	python /path/to/scons-clone/bootstrap.py run_pi_d_spawn

> I'm really interested in this, because apart from target platform 
> support (druntime/ARM is still not there yet, though) and some 
> very few DMD-specific bugs such as the one you seem to hit, there 
> is little reason to use LDC other than for the its code 
> generation.

The pattern of when DMD beats LDC on my machines is weird.  However,
this is all currently just anecdotal evidence, I have not done a proper
experiment that can give any statistical significance to the claims
made.

LDC generally beats DMD by about 2%–4%, but in some cases by
extraordinary amounts, but I think this shows failures in DMD rather
than success of LDC since the LDC time is about what it should be.

The case where I thought DMD was beating LDC may be a misobservation
(i.e. statistics needed) and that it is just that DMD is performing
unusually as well as LDC. This is the pi_d_spawn.d code.

pi_d_threadsGlobalState_array_declarative causes both DMD and LDC to
barf, with the same problem I think.

pi_d_threadsGlobalState_array_iterative.d LDC works and DMD barfs.

pi_d_threadsGlobalState_threadGroup.d DMD behaves weirdly, LDC gets
things right.

This first one of this trio is the 2.059 → 2.060 regression reported if
I remember correctly. Ithought I had reported this last one as well
since I am fairly sure 2.059 did not behave as 2.060 does.

> Oh, and if you get around to doing this before the next LDC 
> release, could you please try it on a Git master build, and if 
> you are on a 32 bit system, ideally use LLVM 3.2+? We had to 
> disable optimizations on earlier LLVM versions for x86 builds of 
> druntime due to a LLVM codegen bug only fixed in 3.2, and the 
> GC-to-stack-promotion pass now activated in master should catch a 
> few cases where we do stupid things like allocating array 
> manifest constants on every entry into function, even if they 
> were only used for meta-programming.

I only ever use Git master, at least until Debian package a useful
version of LDC, then I'll have to make a decision.

I am usually 64-bit Linux, I can also do 64-bit OS X. Windows exists
only in a plane of the multiverse that I never frequent. :-)

> There is still a single known issue which can drastically affect 
> GC performance, though: 
> https://github.com/ldc-developers/ldc/issues/233. There is an 
> easy fix, but it completely breaks shared libraries (but given 
> that those don't work reliably anyway, I think I'll just go with 
> it for the time being…)

:-)



-- 
Russel.
=============================================================================
Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder at ekiga.net
41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel at winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://lists.puremagic.com/pipermail/digitalmars-d-announce/attachments/20121222/d230f9f1/attachment.pgp>


More information about the Digitalmars-d-announce mailing list