|
|
Message-ID: <3de8b03148d58ef55d22e92e89027406@smtp.hushmail.com>
Date: Mon, 27 May 2013 23:27:28 +0200
From: magnum <john.magnum@...hmail.com>
To: john-dev@...ts.openwall.com
Subject: Re: OMP for raw formats
On 27 May, 2013, at 23:08 , <jfoug@....net> wrote:
> I think we can work around AMD's slow thread switching, by making the OMP code never to have to task switch. This was done in dynamic, and I think we can do this in fast raw formats also. This likely will get little to no gain on slow formats.
>
> To do this, we need to change the for loop from:
>
> #pragma omp parallel for
> for (i = 0 ; i < count; += MAX_KEYS_PER_CRYPT)
>
> to:
>
> int inc = (count / omp_t) + 1;
> #pragma omp parallel for
> for (i = 0; i < count; i += inc) {
> /* inside the threads workload */
> for (j = 0; j < inc; ++j)
> process_item(i*cnt+j)
> }
>
> So if we 8 threads, and 1024 items, it will start 8 threads, and give each thread 129 items to work on (last thread will only get 121 items). Thus, there is no thread switching. That should help.
I always assumed OMP would do this transparently (eg. having thread 0 do the first n of the loop sequentially as opposed to some kind of leap frogging) but that would of course be depending on what compiler you run.
> NOTE, this is if I understand what OMP is doing under the hood, which may not be correct.
>
> I am going to give this a shot on raw-MD5 and see what it does (core i7). But if there is no slowdown on intel, and it gets things working on AMD, then it is a win/win.
I just tried dynamic_0 on Bull, non-OMP and OMP. Pretty mediocre results with multiple cores *but* there is not a lot of regression for 1x, which is most important. So hopefully you are right. I also tried bumping BLOCK_LOOPS by 10 just to see what happens but that was worse.
I hate it when we need to optimize differently for intel and AMD.
magnum
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.