Date: Sat, 4 Aug 2012 16:21:48 -0500 From: "jfoug" <jfoug@....net> To: <john-dev@...ts.openwall.com> Subject: RE: sunmd5 >From: magnum [mailto:john.magnum@...hmail.com] > >> Also, each round, there is copying from a flat buffer, back into a >> MMX_COEF buffer, for each candidate. I would love to avoid this, but >> since you have no idea if a candidate will use the 1 block, or the >> 25 block crypt on any given round, I do not see any way around that >> issue. > >That sounds expensive. Some cleverness here might be the key. I agree, but I see no way. You have: Outs In[1_PARA] InBig[1_Para]. Now, if para is 12, then we find the 'first' 12 from outs, which use 1 limb, and perform the work in In. Then the next 12, etc, etc. They are NOT contagious, and there is no way to pre-determine which ones, fit into the smalls, UNTIL after the prior step. Once done with the smalls, I process the other items. Each of the Outs, will either be a small or big, but you cannot pre-determine which. I see no speed improvement trying to keep the out in para either. Since out is 'packed', but in will be only some of them, and inbig will only be others. I see no way, unless we can pass in an array of pointers into the SSE para code (that might work). At least there, we would avoid the double copy. That copy is 16*1024*5000*2 bytes per crypt (but done in 32 bit copies. But that is 163GB of copies !!!. Note, at 1024 passwords, taking say 3s, this memcpy bottleneck is over 50GB/s of data moving !!! Yes, if we could come up with better ways, it may help speed shit up. I would love to pass in an array of pointers, if we could do so without losing performance. Even if we made a special intrinsic function to do it. Where we would have issues, is in the .S code (MMX). But this is for another day. Also, I do not want to have 1024/para smalls, and 1024/12 InBig arrays.
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.