|
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.