Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120826085331.GA31185@openwall.com>
Date: Sun, 26 Aug 2012 12:53:31 +0400
From: Solar Designer <solar@...nwall.com>
To: john-dev@...ts.openwall.com
Subject: Re: bitslice DES on GPU

Sayantan,

On Sun, Aug 26, 2012 at 01:41:29PM +0530, Sayantan Datta wrote:
> The base address of K[] array gets changed in the opencl kernel. In the
> DES_bs_init() function the addresses stored in of *KSp[] array are derived
> from the address of key bits array K[]. Now when the key bits array K[] is
> transferred to GPU side the base address of the K[] array gets changed
> thereby rendering the addresses stored in *KSp[] array invalid.

If I understand what you're doing correctly, it's not just a change of
base addresses - rather, it's a different address space (CPU vs. GPU
memory) - or do you mean you'd use some DMA buffer, so you care about
the addresses changing still on the CPU side because the buffer is not
located at the same address where K[] was?  I am just trying to come up
with some guess that would match what you wrote, although this sounds
weird to me.

> I'm thinking to transfer a small section of code which generates the *KSp[]
> values to the kernel which should fix the problem.

I thought we had already discussed that, and you were going to use an
array of 768 indices on the GPU side.  The CPU vs. GPU pointers is not
the actual problem, or rather it's a trivial one (I wish we had it).
The actual problem with pointers (as opposed to indices) is that they'd
need to be distinct for each work-item.

This brings us to:

On Sun, Aug 26, 2012 at 11:18:17AM +0530, Sayantan Datta wrote:
> I'm keeping DES_BS_EXPAND=1.

OK.  As discussed, it makes sense to experiment with different
approaches, so I guess you'll try DES_BS_EXPAND=0 next.  (Also, don't
forget that LM hashes imply an equivalent of DES_BS_EXPAND=0.)

So let's suppose DES_BS_EXPAND=1.  In that case, you could do the
expansion on CPU side, but the reason why you won't is that you want to
keep the key setup finalization on GPU.  That's fine.  However, all you
need on GPU to perform the expansion is that constant array of 768
indices; you don't need any pointers, and you don't want to use pointers
for the same reason that would apply in the DES_BS_EXPAND=0 case (the
pointers would differ between work-items and thus would require a lot
more memory total).

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.