Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110217010828.GA23504@openwall.com>
Date: Thu, 17 Feb 2011 04:08:28 +0300
From: Solar Designer <solar@...nwall.com>
To: john-users@...ts.openwall.com
Subject: Re: OpenMP patch/DES SSE key setup patch

Tim,

On Thu, Dec 16, 2010 at 01:36:21PM -0600, Tim Yardley wrote:
> I decided to play around with the new DES/OpenMP patch on x86 (32bit)
> architectures with SSE2.  A simple CFLAGS change of adding -msse2 will
> get it to pass your compile checks.  After that though, the code fails
> to actually run correctly.
> 
> a john -test outputs the following:
> 
> Benchmarking: Traditional DES [128/128 BS SSE2]... FAILED (get_hash[0](0))
> Benchmarking: BSDI DES (x725) [128/128 BS SSE2]... FAILED (get_hash[0](0))

I've just tried this with gcc 4.5.0 (a custom build I made last year).
You're correct that -msse2 needs to be added.  I added it to OMPFLAGS:

OMPFLAGS = -fopenmp -msse2

Then john-1.7.6-omp-des-7 compiled and ran just fine, albeit a lot
slower than it does on the same machine with an x86-64 build, as
expected.  I am getting something like 6.5M c/s for 32-bit build vs.
10M c/s for 64-bit with 8 threads on the same Core i7 machine
(quad-core with HT).  This is for DES-based crypt(3).  For LM hashes,
the difference is smaller: either does over 40M c/s, which is unoptimal
in either case (you're better off using john-1.7.6-fast-des-key-setup-3
instead, without OpenMP but maybe with multiple instances).

john-1.7.6-omp-des-4 also builds and works "fine", but shows no speedup
from the use of multiple threads at all.  There must be some data layout
issue only affecting 32-bit builds, since this same patch works well and
sometimes outperforms -omp-des-7 on x86-64 (which is why I keep both
patches on the wiki).

In short, I am unable to reproduce the problem.  WORKSFORME.  But I did
not specifically try "your" version of gcc, etc.  What we do know from
this reliably is that these patches are not "fundamentally" x86-64 only.
(But you do need x86-64 for decent performance anyway.)

...Oh, here's a guess: maybe you forgot to "make clean" after making
some change, such as a Makefile edit?  An inconsistent build can fail
like you describe, of course.

Alexander

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.