Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <df2f7ca261911f9c3c9bd2eed130324f@smtp.hushmail.com>
Date: Wed, 19 Dec 2012 20:28:37 +0100
From: magnum <john.magnum@...hmail.com>
To: john-dev@...ts.openwall.com
Subject: Re: Opencl build from binary

On 19 Dec, 2012, at 18:01 , Claudio André <claudioandre.br@...il.com> wrote:
> Em 18-12-2012 17:39, magnum escreveu:
>> From a quick look at opencl_cryptsha512_fmt.c in your repo, I wonder why you didn't make more of it shared? The format could just call opencl_build_kernel() and the common code could use the binary if available, transparent to the format. However, I guess we need some kind of version-control. Or is there already? I didn't look very closely. It could be like
> 
> I tried to do something not invasive in common-opencl. Now one (only if he wants to use new functionality) have to change source code:
> 
> From:
> opencl_init("$JOHN/cryptmd5_kernel.cl", ocl_gpu_id, platform_id);
> 
> To:
> opencl_init_dev(ocl_gpu_id, platform_id);
> opencl_build_kernel_save("$JOHN/cryptmd5_kernel.cl", ocl_gpu_id, magumOptions=NULL, saveBinary=1, warnAboutCompilation=1);

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?

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.