Thread Previous • Date Previous • Date Next • Thread Next |
On Tue, Oct 06, 2009 at 09:31:27PM +0100, Garth N. Wells wrote: > > > Johan Hake wrote: > > On Tuesday 06 October 2009 22:18:04 Anders Logg wrote: > >> On Tue, Oct 06, 2009 at 09:13:45PM +0100, Garth N. Wells wrote: > >>> Anders Logg wrote: > >>>> On Tue, Oct 06, 2009 at 10:05:24PM +0200, Johan Hake wrote: > >>>>> On Tuesday 06 October 2009 21:58:29 Andy Ray Terrel wrote: > >>>>>> On Tue, Oct 6, 2009 at 2:43 PM, Anders Logg <logg@xxxxxxxxx> wrote: > >>>>>>> On Tue, Oct 06, 2009 at 02:28:40PM -0500, Andy Ray Terrel wrote: > >>>>>>>> Sorry for being dense but computing the SHA1 hash for what > >>>>>>>> essentially is a string compare seems a bit overkill. > >>>>>>> I want to avoid a call to strcmp in a piece of code that needs to be > >>>>>>> fast. What I do (it seems to work now) is to compute the 20 byte > >>>>>>> SHA-1 hash from the ~40 byte finite element signature which is > >>>>>>> typically something like > >>>>>>> > >>>>>>> FiniteElement('Lagrange', 'triangle', 1) > >>>>>>> > >>>>>>> I then cast the SHA-1 hash to an 8 byte void* and use that for > >>>>>>> comparison. This may not be very safe but this is not exactly > >>>>>>> cryptography. The number of possible hashes is the same as the > >>>>>>> address space so it should be fine. > >>>>>> Yes I guess if you have a large number of comparisons it might be > >>>>>> faster. I forget there are a lot of signature checks for the > >>>>>> function space stuff. > >>>>>> > >>>>>> Computing the hash is O(n) just like strcmp, it really depends on the > >>>>>> constants. I would just do the timing before I said anything. > >>>>> Would it be an idea to extend ufc::finite_element with a > >>>>> hash_signature()? Then you can compute the hash using hashlib in > >>>>> python during code creation. > >>>>> > >>>>> Johan > >>>> Sounds like a good idea. Only it requires changes to DOLFIN, UFC, FFC > >>>> and SyFi... > >>>> > >>>> Are there any objections to this? > >>> I'm not sure that this is a good idea. It complicates UFC. > > > > Complicates? One function returning a string? > > How would I write it by hand? It's common for new methods that the > UFC-compliant code is hand generated. You can just put in any number you want and pick something you think is unique enough for your element. This would work: return 1247237129123; It doesn't have to be a hash of the signature, just something "unique". -- Anders > Garth > > But I agree with Anders that it > > requires a lot to change and that it therefore is a good thing to think about > > it. > > > >> It's either that or using boost. I'm looking at both options. > >> > >> Calling boost is simpler since it requires the smallest change. If we > >> decide to go with that option now, we can keep this in mind for the > >> next update of UFC. > > > > Sounds good. > > > > Johan > > > >> > >>> Garth > >>> > >>>>>> I looked there are a lot of libraries out there for this but OpenSSL > >>>>>> is by far the most pervasive. > >>>>>> > >>>>>> -- Andy > >>>>>> > >>>>>>>> On Tue, Oct 6, 2009 at 2:18 PM, Anders Logg <logg@xxxxxxxxx> wrote: > >>>>>>>>> I'm contemplating adding a dependency to OpenSSL for computing > >>>>>>>>> hashes of things like element signatures. > >>>>>>>>> > >>>>>>>>> This is what breaks Kristian's code. Comparing element pointers > >>>>>>>>> does not work since the UFC class creates its own elements which > >>>>>>>>> are different from the ones existing in FunctionSpace classes. > >>>>>>>>> > >>>>>>>>> Would there be any difficulties with depending on OpenSSL? Are > >>>>>>>>> there simpler alternatives for a function that takes a string a > >>>>>>>>> returns a message digest like the SHA1 function in OpenSSL? > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> -----BEGIN PGP SIGNATURE----- > >>>>>>>>> Version: GnuPG v1.4.9 (GNU/Linux) > >>>>>>>>> > >>>>>>>>> iEYEARECAAYFAkrLmCAACgkQTuwUCDsYZdEk3ACgl7+tHjclHzLesh+g/1vOzIo9 > >>>>>>>>> tJsAn1fHGu+dzyA/ndNpy88/RFWNTbEB > >>>>>>>>> =24AA > >>>>>>>>> -----END PGP SIGNATURE----- > >>>>>>>>> > >>>>>>>>> _______________________________________________ > >>>>>>>>> DOLFIN-dev mailing list > >>>>>>>>> DOLFIN-dev@xxxxxxxxxx > >>>>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev > >>>>>>>> _______________________________________________ > >>>>>>>> DOLFIN-dev mailing list > >>>>>>>> DOLFIN-dev@xxxxxxxxxx > >>>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev > >>>>>>> -----BEGIN PGP SIGNATURE----- > >>>>>>> Version: GnuPG v1.4.9 (GNU/Linux) > >>>>>>> > >>>>>>> iEYEARECAAYFAkrLndAACgkQTuwUCDsYZdFlWACePT0FglJU+NTPnOBXi/h7WcHC > >>>>>>> E5EAn2vinxerlg6jTNuA4T+0Kp+CFuhz > >>>>>>> =68Dm > >>>>>>> -----END PGP SIGNATURE----- > >>>>>>> > >>>>>>> _______________________________________________ > >>>>>>> DOLFIN-dev mailing list > >>>>>>> DOLFIN-dev@xxxxxxxxxx > >>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev > >>>>>> _______________________________________________ > >>>>>> DOLFIN-dev mailing list > >>>>>> DOLFIN-dev@xxxxxxxxxx > >>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev > >>>>> _______________________________________________ > >>>>> DOLFIN-dev mailing list > >>>>> DOLFIN-dev@xxxxxxxxxx > >>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev > >>>>> > >>>>> ---------------------------------------------------------------------- > >>>>> -- > >>>>> > >>>>> _______________________________________________ > >>>>> DOLFIN-dev mailing list > >>>>> DOLFIN-dev@xxxxxxxxxx > >>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev > >>> _______________________________________________ > >>> DOLFIN-dev mailing list > >>> DOLFIN-dev@xxxxxxxxxx > >>> http://www.fenics.org/mailman/listinfo/dolfin-dev > > _______________________________________________ > > DOLFIN-dev mailing list > > DOLFIN-dev@xxxxxxxxxx > > http://www.fenics.org/mailman/listinfo/dolfin-dev > > > _______________________________________________ > DOLFIN-dev mailing list > DOLFIN-dev@xxxxxxxxxx > http://www.fenics.org/mailman/listinfo/dolfin-dev
Attachment:
signature.asc
Description: Digital signature
Thread Previous • Date Previous • Date Next • Thread Next |