Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20150831082950.GA11135@openwall.com>
Date: Mon, 31 Aug 2015 11:29:50 +0300
From: Solar Designer <solar@...nwall.com>
To: john-dev@...ts.openwall.com
Subject: Re: PHC: Argon2 on GPU

On Sun, Aug 30, 2015 at 11:56:32PM +0200, Agnieszka Bielec wrote:
> [a@...er run]$ GWS=2048 ./john --test --format=argon2d-opencl --v=4 --dev=4
> Benchmarking: argon2d-opencl [Blake2 OpenCL]...
> memory per hash : 1.50 MB
> Device 4: GeForce GTX TITAN X
> Options used: -I ./kernels -cl-mad-enable -cl-nv-verbose -D__GPU__
> -DDEVICE_INFO=131090 -DDEV_VER_MAJOR=352 -DDEV_VER_MINOR=21
> -D_OPENCL_COMPILER -DBINARY_SIZE=256 -DSALT_SIZE=64
> -DPLAINTEXT_LENGTH=125
> Local worksize (LWS) 64, global worksize (GWS) 2048
> using different password for benchmarking
> DONE
> Speed for cost 1 (t) of 1, cost 2 (m) of 1536, cost 3 (l) of 1
> Many salts:     8110 c/s real, 8031 c/s virtual
> Only one salt:  8031 c/s real, 8110 c/s virtual

I got some improvement upon this now, but still worse than the new best
result for the old TITAN.

[solar@...er run]$ cat try.sh 
#!/bin/sh

for LWS in `seq 84 98`; do
        for m in `seq 10 40`; do
                GWS=$[$LWS * $m]
#               while [ $GWS -lt 1536 ]; do
#                       GWS=$[$GWS * 2]
#               done
                echo $LWS $GWS
                export LWS GWS
                ./john -test -format=argon2d-opencl -dev=4 -v=4
        done
done
[solar@...er run]$ fgrep Many try4c.log | sort -k3 -rn | head
Many salts:     8454 c/s real, 8454 c/s virtual
Many salts:     8448 c/s real, 8448 c/s virtual
Many salts:     8411 c/s real, 8411 c/s virtual
Many salts:     8410 c/s real, 8410 c/s virtual
Many salts:     8406 c/s real, 8475 c/s virtual
Many salts:     8396 c/s real, 8396 c/s virtual
Many salts:     8394 c/s real, 8394 c/s virtual
Many salts:     8389 c/s real, 8319 c/s virtual
Many salts:     8382 c/s real, 8382 c/s virtual
Many salts:     8380 c/s real, 8298 c/s virtual
[solar@...er run]$ fgrep Only try4c.log | sort -k3 -rn | head
Only one salt:  8491 c/s real, 8491 c/s virtual
Only one salt:  8454 c/s real, 8454 c/s virtual
Only one salt:  8448 c/s real, 8448 c/s virtual
Only one salt:  8444 c/s real, 8366 c/s virtual
Only one salt:  8418 c/s real, 8346 c/s virtual
Only one salt:  8411 c/s real, 8411 c/s virtual
Only one salt:  8389 c/s real, 8389 c/s virtual
Only one salt:  8369 c/s real, 8369 c/s virtual
Only one salt:  8367 c/s real, 8367 c/s virtual
Only one salt:  8364 c/s real, 8364 c/s virtual
[solar@...er run]$ fgrep -B7 8491 try4c.log 
88 1936
Benchmarking: argon2d-opencl [Blake2 OpenCL]... 
memory per hash : 1.50 MB
using different password for benchmarking
DONE
Speed for cost 1 (t) of 1, cost 2 (m) of 1536, cost 3 (l) of 1
Many salts:     8344 c/s real, 8344 c/s virtual
Only one salt:  8491 c/s real, 8491 c/s virtual
[solar@...er run]$ fgrep -B7 8454 try4c.log 

93 2046
Benchmarking: argon2d-opencl [Blake2 OpenCL]... 
memory per hash : 1.50 MB
using different password for benchmarking
DONE
Speed for cost 1 (t) of 1, cost 2 (m) of 1536, cost 3 (l) of 1
Many salts:     8454 c/s real, 8454 c/s virtual
Only one salt:  8454 c/s real, 8454 c/s virtual
[solar@...er run]$ fgrep -B7 8448 try4c.log 

96 2112
Benchmarking: argon2d-opencl [Blake2 OpenCL]... 
memory per hash : 1.50 MB
using different password for benchmarking
DONE
Speed for cost 1 (t) of 1, cost 2 (m) of 1536, cost 3 (l) of 1
Many salts:     8448 c/s real, 8448 c/s virtual
Only one salt:  8448 c/s real, 8448 c/s virtual
[solar@...er run]$ fgrep -B7 8444 try4c.log 

95 1520
Benchmarking: argon2d-opencl [Blake2 OpenCL]... 
memory per hash : 1.50 MB
using different password for benchmarking
DONE
Speed for cost 1 (t) of 1, cost 2 (m) of 1536, cost 3 (l) of 1
Many salts:     8366 c/s real, 8444 c/s virtual
Only one salt:  8444 c/s real, 8366 c/s virtual

Re-running these a few times, these seem most stable:

[solar@...er run]$ LWS=93 GWS=2046 ./john --test --format=argon2d-opencl -dev=4 
Benchmarking: argon2d-opencl [Blake2 OpenCL]... 
memory per hash : 1.50 MB
Device 4: GeForce GTX TITAN X
using different password for benchmarking
DONE
Speed for cost 1 (t) of 1, cost 2 (m) of 1536, cost 3 (l) of 1
Many salts:     8454 c/s real, 8525 c/s virtual
Only one salt:  8454 c/s real, 8385 c/s virtual

In fact, this one often reaches 8500+:

[solar@...er run]$ LWS=96 GWS=2112 ./john --test --format=argon2d-opencl -dev=4 
Benchmarking: argon2d-opencl [Blake2 OpenCL]... 
memory per hash : 1.50 MB
Device 4: GeForce GTX TITAN X
using different password for benchmarking
DONE
Speed for cost 1 (t) of 1, cost 2 (m) of 1536, cost 3 (l) of 1
Many salts:     8516 c/s real, 8516 c/s virtual
Only one salt:  8448 c/s real, 8448 c/s virtual

[solar@...er run]$ LWS=96 GWS=2112 ./john --test --format=argon2d-opencl -dev=4 
Benchmarking: argon2d-opencl [Blake2 OpenCL]... 
memory per hash : 1.50 MB
Device 4: GeForce GTX TITAN X
using different password for benchmarking
DONE
Speed for cost 1 (t) of 1, cost 2 (m) of 1536, cost 3 (l) of 1
Many salts:     8516 c/s real, 8448 c/s virtual
Only one salt:  8516 c/s real, 8516 c/s virtual

This is just an experiment.  Obviously, we need to improve the code.

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.