Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sat, 22 Dec 2012 10:19:32 +0530
From: Sayantan Datta <std2048@...il.com>
To: john-dev@...ts.openwall.com
Subject: Re: Opencl build from binary

On Fri, Dec 21, 2012 at 1:21 AM, Claudio André <claudioandre.br@...il.com>wrote:

> Em 19-12-2012 17:28, magnum escreveu:
>
>  I have committed this. I think we should take this opportunity to think
>> about another thing now that we hack around in there anyway: How can we
>> support using multiple devices? Sayantan's mscash2 supports multiple
>> devices already, but only by hacking the format source. We should add
>> proper support using --platform and --device.
>>
>> Maybe we should drop the --platform notation though? On Bull (where
>> nvidia is device #0), that would mean the Tahiti would become device #1
>> instead of "platform 1, device 0" and the CPUs would become device #2.
>> And maybe we should start from 1 instead - I think Hashcat would list
>> them as device 1 and 2 with no platform notation.
>>
>> Having done that, the syntax for multiple devices becomes much easier.
>> You could say --device=1 or --device=1,2 and perhaps even ranges like
>> --device=1-8 for vcl use. If we wanted to we could also support types, so
>> --device=gpus would mean "use all available GPU devices".
>>
>> That's for the options syntax. Now, how would a format use this, or know
>> about this? Should we support using a group of heterogenous devices? What
>> would a well thought out interface to common-opencl.c look like?
>>
>
> Very nice resource to have. I volunteer to help.
>
> - What kind of problems Sayantan faced?
> Are we going to create more threads to control (each) device crypt_all?
>
> Claudio
>

At first when I tried pthreads for controlling each device but for some
reason opencl did not behave as expected. I guess opencl 1.0 specs does not
support multiple threads for scheduling multiple devices. However you can
initialize all the devices within the context , then
use separate  command ques, kernel objects and program objects for multiple
devices.Then enque the kernels and wait for all of them to finish. You will
want all your kernels to finish execution at same time. So distribute the
work accordingly.

Yes it would be a nice idea to support --devices = 1,2,3...., but I think
we should internally map the device numbers to corresponding pairs of
platform_number and device_number inside common-opencl.c .

Regards,
Sayantan

Content of type "text/html" skipped

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.