Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Wed, 26 Mar 2014 00:11:37 +0400
From: Solar Designer <solar@...nwall.com>
To: john-users@...ts.openwall.com
Subject: Re: Re: john-1.8.0-Win-32 - john.omp.exe - cores used

PhanTom,

Please consider joining the mailing list and posting via e-mail, instead
of continuing to post via Gmane.

On Tue, Mar 25, 2014 at 07:54:35PM +0000, -. -PhanTom-. - wrote:
> Yup, this one: http://openwall.info/wiki/_media/john/john-1.8.0-Win-32.zip
> 
> Intel i5-4670K (stock), 16Gb RAM, Windows7 Home Premium
> 
> The rest of the tests for the 1.8.0Win32 build shows:
> H:\HA\john-1.8.0-Win-32>john-omp -t
> Will run 4 OpenMP threads
> Benchmarking: descrypt, traditional crypt(3) [DES 128/128 SSE2]... DONE
> Many salts:     4683K c/s real, 4790K c/s virtual
> Only one salt:  4512K c/s real, 4509K c/s virtual
> 
> Benchmarking: bsdicrypt, BSDI crypt(3) ("_J9..", 725 iterations) [DES 128/128 SS
> E2]... DONE
> Many salts:     158831 c/s real, 158879 c/s virtual
> Only one salt:  154524 c/s real, 155210 c/s virtual

This suggests that the build is slightly broken.  Oops.  Specifically,
my guess is that this condition was triggered during build:

#if DES_BS_ASM && defined(_OPENMP) && defined(__GNUC__)
#warning Assembly code and OpenMP are both requested - will provide the former, but not the latter (for DES-based hashes).  This may likely be corrected by enabling SIMD intrinsics with the C compiler (try adding -msse2 to OMPFLAGS).
#endif

but the warning was ignored.  Normally, when building for 32-bit x86 and
wanting OpenMP, one would uncomment this line in the Makefile:

# gcc with OpenMP on 32-bit x86 with SSE2
#OMPFLAGS = -fopenmp -msse2

but I guess this was not done.  I guess only this line was uncommented:

# gcc with OpenMP
#OMPFLAGS = -fopenmp

> Benchmarking: md5crypt [MD5 32/32]... DONE
> Raw:    36132 c/s real, 9882 c/s virtual
> 
> Benchmarking: bcrypt ("$2a$05", 32 iterations) [Blowfish 32/32 X2]... DONE
> Raw:    3618 c/s real, 945 c/s virtual

This shows that OpenMP works for these other hash types, confirming the
guess above.  (For md5crypt, jumbo will give better speeds.)

> The john179j5w build seems to work for all four cores, although the speed is
> not X4 for DES...?
> john179w2 also use all four cores :)

Great.  How much lower than x4 is the speed for DES crypt?  Is it closer
to x4 for BSDI DES (it should be)?

The issue is that with fast(er) hashes, our parallelization with OpenMP
has significant overhead.  Additionally, for our bitslice DES code when
going for OpenMP we switch from hand-optimized non-thread-safe x86+SSE2
assembly code to compiler-generated thread-safe code.

In 1.8+, we recommend the --fork option for those since it has higher
efficiency, but it's not reliably supported on Windows (in fact, it's
disabled by default on Windows, in os.h, because of reported problems).

Overall, you'd get better results on a Unix-like system.  I admit this
is in part because of shortcomings in JtR's support for Windows.

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.