Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Thu, 22 Aug 2013 22:26:19 +0100
From: Rafael Waldo Delgado Doblas <lord.rafa@...il.com>
To: john-dev@...ts.openwall.com
Subject: Re: Parallella: Litecoin mining

Hello,

2013/8/22 Solar Designer <solar@...nwall.com>

> How is your SCRATCHBUF_SIZE calculated?  You have:
>
> // ((1023 / TMTO_RATIO) + 1) * 128
>
> #define SCRATCHBUF_SIZE 22464
> #define TMTO_RATIO 6 // Must be > 0
>
> However, when I substitute 6 into the formula in the comment, I get only
> 21888, not 22464.  Is the 22464 number right, and why?  Can you please
> edit this file so that SCRATCHBUF_SIZE uses a formula rather than a
> constant on the #define line?  For example:
>
> #define TMTO_RATIO 6
> #define SCRATCHBUF_SIZE (((1023 / TMTO_RATIO) + 1) * 128)
>
> (if that formula is right).  Any decent optimizing compiler will compute
> this at compile time anyway.
>

Well this formula works fine the (512+64) are for  B and X in the original
code but since these vectors are no longer inside of SCRATCHBUF,
SCRATCHBUF can be decreased safely.


> The code in scrypt_1024_1_1_256_sp() adds 64-byte alignment, so may
> waste up to 63 bytes.  If you do implement any alignment like this, then
> you need to account for it (worse case) in SCRATCHBUF_SIZE.  However,
> please note that, unlike systems with cache, Epiphany does not benefit
> from larger than 8-byte alignment (and it only benefits from 8-byte
> alignment if your code manages to use LDRD/STRD instructions, otherwise
> it only needs 4-byte alignment).  Thus, I suggest that you drop the line
> that implements alignment manually and don't include it in
> SCRATCHBUF_SIZE either, but instead define scratchpad like this:
>
>         char scratchpad[SCRATCHBUF_SIZE] __attribute__ ((aligned (8)));
>
> then you can do simply:
>
>         V = (uint32_t *)scratchpad;
>
> ... or arguably it may be cleaner to use:
>
>         uint32_t scratchpad[SCRATCHBUF_SIZE / 4] __attribute__ ((aligned
> (8)));
>
> and then:
>
>         V = scratchpad;
>
> "__attribute__ ((aligned (8)))" is gcc-specific, but we assume e-gcc for
> the Epiphany code anyway.  (If we were writing more portable code, we
> could use a "union" with a "long long" or a "double" inside it to
> achieve 8-byte alignment.)
>

Ok, I will do that.

Regards,
Rafael

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.