Re: GerH source distro at hebbut.net: HOW TO compile/compare/merge for Bill et al --> + megatest.sh timings on AMD64

"Ger Hobbelt" <[email protected]>
Newsgroups gmane.mail.spam.crm114
Message-ID <[email protected]>
On Sun, Mar 30, 2008 at 9:49 PM, Paolo <[email protected]> wrote:
>  hm, I dunno ... tried shared libs only and it's fine :
>
>  # ldd /usr/src/crm114-20080326-BlameSentansoken/src/crm114
>         libtre.so.4 => /usr/lib/libtre.so.4 (0xb7faf000)
>         libm.so.6 => /lib/tls/libm.so.6 (0x41150000)
>         libreadline.so.5 => /lib/libreadline.so.5 (0xb7f81000)
>         libc.so.6 => /lib/tls/libc.so.6 (0x41019000)
>         /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x41000000)
>         libncurses.so.5 => /lib/libncurses.so.5 (0xb7f42000)

It should, that's what in use on my own box(es). The 'static' build
never worked for me (and with that I mean also the builds from
straight vanilla BillY). Something to recheck,

>  > the .inpout files _must_ be there - the fact that they're not means I
>  > b0rked the releases. Why the .input's? Because _any_ change to those
>
>  yup, there's something screwd - there are several megatest*.sh, in src/
>  and tests/, many *.input but in tests/, but not those QUICKREF/INTRO:

Found the issue; missing in the Makefiles :-(((((

FYI: to keep it 'compatible' with BillY vanilla, the 'master' of
everything is in ./src/ so when Bill hopefully decides to take a stab
at this, he can 'cd src' and do his regular thing (though this time
with '-f Makefile.BillY' ;-) ).

The tests/ and other dirs are periodically updated (manually) by
running the ./distribute_yada_yada_yada.sh shell script available in
the distro - long name I just forgot, but you'll recognize it when you
see it.


>  tests/COLOPHON_mt_ng_reference_3.input
>  tests/FAQ_mt_ng_reference_4.input
>  tests/Makefile
>  tests/Makefile.am
>  tests/Makefile.in
>  ...

Those made it into ./tests/ while there should be some more.

I've been lazing, because all I test regularly is the 'BillY
semi-compatibility', by running

cd src
make test

or other test scenarios in ./src/ itself, while I _should_ have been
running them in ./tests/ too.

As said before, 'make check' has only got a _bit_ of attention since
build 1960, before that, it was just trying to tag along but failing
dramatically.
Even with build 1960, it's still broken.


>  > text files (and I added and fixed a bits in there) will result in
>  > megatest to report (quite) different numbers. You don't want that when
>
>  yes, but not that much - but of course we don't want to compare with
>  different inputs.

I agree, but I find that little differences are sometimes VERY
important. I had only little differences in Bit Entropy output and it
turned out there was some 'little' details totally screwed up when
running on a 64-bit platform.
Anyway, to 'prove' a GerH build is _identical_ to vanilla BillY, I
need it to be able to produce the _exact_ same results as a
megatest_knowngood, even when those results are due to flaws. In its
current form, you'll need to tweak a few #defines to make it so
(Hyperspace for one), but such _identical_ output at least takes away
a _huge_ chunk of reasonable doubt when fixes/changes are presented.
Change one typo in those txt files and you'll _never_ get the results
you had before: 'hard numbers' like 'feature count', etc. - i.e. the
non-floating point counters in crm114 - _will_ be off when you change
the learned inputs, even by one character. I know, because I've been
there. Several times over.

So what I did with the very latest builds is allow me to update those
text files as the documentation they are, while giving the tests their
own strictly defined inputs, so that I can compare outputs properly.
One of the changes there, is that CR vs CRLF line termination is also
very important, especially when you move from a LF-based UNIX
environment to a Win32 CRLF-based env: those tests will _never_ match
up unless you treat your inputs as BINARY _files_. (The results are
still off because it looks like redirected input from file still does
some crlf comversion mumbojumbo on my inputs :-((   now all I need to
find is _where_ the damn thing screws up.)



>  > The ULTRA long run times make me wonder. I've found similar results
>
>  local hdd, it's all bounded to CPU/algo problems, if any: but re-checking
>  now those numbers: (Piii time) / (XP2800 time) ~ 400/17 ~ 24 - so in this
>  test an Athlon XP2800 clocked ~2GHz would be ~24 times faster than a Piii
>  450MHz: I think it's a reasonable figure, so the ~400 mins shouldn't raise
>  a flag here - as long as the ~17 mins run time on the other CPU sounds ok,
>  that is.

Ran 'time make test' to be sure, because I _thought_ it was somewhere
around 5', but on a (to be precise) 3.2 GHz AMD64, SuSe 10.2,
completely UNloaded machine, it took the darn thing real 11m40, user
10m5. Everything local; dedicated fast harddisk for the CSS files and
tests, and all. Turns out NN is even slower than I thought it was.

Close enough?

Overview of timing test series:

real/user times:

a) megatest: the whole thing and nothing but the thing:

11m40 / 10m5

b) megatest: anything 'neural' (NN) kicked out:

0m58 / 0m36

woohoo!

c) megatest: all experimentals kicked, EXCEPT (because I like 'em)
Hyperspace and BitEntropy:

0m49 / 0m27

d) megatest: all experimentals gone, i.e. anything following WINNOW is ditched:

0m39 / 0m26


So either I take a profiler to NN and see if I can come up with
something a little faster (not very likely unless I've a Moment), OR
tell the unsuspecting 'make test' user it's time for a coffee and
there's time for the morning paper to spare.



>  yep, better document/update roughly the expected times - waiting ~7 h for
>  something expected to complete in ~1' raise some doubt ;)
>  And that should take into account per-classifier/cumulative wrt included
>  classifiers - that "1'" was stated when only (now) 'production' classifiers
>  were supposed to run.

See above. I'm of two minds there.


>  > it should do this:
>  > cd src
>  > make megatest_ng
>
>  nope, it does:
>   (cd src && $(MAKE) $(AM_MAKEFLAGS) megatest);
>  then
>   $(srcdir)/megatest.sh 2 > megatest_test.log 2>&1

urgh? The Makefile magic in there is hunky dory, but at _least_ it
should call megatest_ng.sh (note the '_ng'). The '2' argument is a
little addition of mine: it makes the script print those 'output
/.../' statements TWICE, so I get to see them in a diff. Twas rather
difficult to spot _which_ classifier was barfing up _which_ slightly
different hairball, when onlt the diffs in pR are shown, so I made
sure I can now see which classifier test section megatest.* has been
working on at the time.


>  > because megatest_ng is the one using those input files (some really
>  > wicked little differences in input feed when redirecting on UNIX and
>
>  which seem supposed to be in src/
>
>  #--[src/megatest_ng.sh, src/megatest.sh]---
>  ...
>   ./crm114 '-{learn ...:]]+/}' < QUICKREF_mt_ng_reference_1.input
>  ...
>
>  but I think they should be sourced from ../tests/.

See further up: ./src/ is 'master' for ./tests/ so I can stick to
BillY dev environment compatibility. Fat chance, but one can hope. ;-)




-- 
Met vriendelijke groeten / Best regards,

Ger Hobbelt

--------------------------------------------------
web: http://www.hobbelt.com/
 http://www.hebbut.net/
mail: [email protected]
mobile: +31-6-11 120 978
--------------------------------------------------

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.