Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 23 Sep 2013 13:00:41 +0200
From: Rafael Waldo Delgado Doblas <>
Subject: Re: Rafael's weekly report #14

Hello Alexander,

2013/9/21 Solar Designer <>

> Rafael,
> On Wed, Sep 18, 2013 at 10:28:16PM +0200, Rafael Waldo Delgado Doblas
> wrote:
> > As I couldn't debug the asm code I cleaned a little bit the code and I
> > added a user friendly way to compile the code.
> I took a look at your committed code as of a few hours ago, and tried
> building and running it (the C code only for now, as I take it the asm
> is in a non-working state anyway).  Here are some observations, in
> arbitrary order:
> 1. EPIPHANY-README is the right kind of documentation, thank you!
> A minor correction: s/SUDO -E/sudo -E/ as otherwise it is unclear that
> you're referring to the uppercase "-E".  Also, maybe wrap the lines at
> 79 chars, as some other documentation files in cgminer appear to do
> (albeit not consistently).

I will do it.

> 3. Somehow the performance is a lot worse than it used to be.  With a
> default build, I got only around 300 h/s; we used to have ~1300 h/s.
> What is causing this slowdown (some compiler flags set for debugging?
> some code change?) and can you please correct it?

Mmm, I checked it and it worked fine to me. Are you compiling with the flag
EPIPHANY_DEBUG? This flag drains a lot of performance because it compute
scrypt with ARM even if you don't use the option -D. I could add a
conditional to avoid compute scrypt with ARM if option -D it's not present
but as this code it's only for debug Epiphany code, I decided don't do it.

> 4. I think epiphany-salsa208.S could nicely stay with the underscore
> between 20 and 8, or did this somehow not work?

Ok I will do it, I renamed this file because anyother uses underscores but
I think that this looks better with the underscore.

> 5. You're still not using any macros in the .S file.  Do you have some
> non-committed version that does use macros (but is buggy, as you
> mentioned)?  Is the committed asm code supposed to be in a working
> state, then (but is just slow)?

Yes it is. As GSoC it's about to finish I commited a working version but I
have another one with macros but still buggy.

6. Your reintroduced C code for salsa20_8() is no longer indented.
> Please correct that.

Wops, I will do it.

> > Today I'm going to debug the asm
> Any luck with that?  It's been another 3 days.  From the amount of time
> this is supposedly taking you, it feels like you're approaching this asm
> problem in some weird way.  When I asked you what the purpose of your
> non-macro-using asm code was, you said that it was a starting point for
> further work on the asm code - if so, you should be able to convert it
> to use of macros step-by-step, with testing after every step, and then
> it'd be fairly easy for you to spot the occasional errors that you'll be
> making (not a lot of code changes to review for each error).
> Personally, I think you'd do it even quicker by starting with extensive
> use of macros instead of the fully expanded version you wrote, but since
> you already have it anyway, you may as well use it to simplify your work
> on the macros.
> After you're using macros to the maximum reasonable extent, sacrificing
> performance even, it should similarly not be too difficult for you to
> start moving to larger macros step-by-step, only as needed for better
> instruction scheduling.  You'd similarly test after making each change,
> so that you don't have a lot of changes to review for any errors
> whenever the changed code fails test.
> Can you describe your approach?

Well I have grouped the R calls by displacement in 4 macros. In order to
compute the columns and rows with the same macro I use a function that
exchange the registers.

> > El 17/09/2013 02:31, "Rafael Waldo Delgado Doblas" <>
> > escribi?:
> > > Problems:
> > > 1. I couldn't find a way to compile cgminer with a-gcc and
> epiphany-scypt
> > > with e-gcc using autotools and only one call to and make. I
> will
> > > write a bash script to do it but would be nicer if someone can help me
> with
> > > this.
> I'm sorry we didn't get around to helping you on this sub-task.
> I think it could be as simple as having some make rules pre-written in
>, but I am not sure.  I am not familiar with autotools.

It's ok, after I checked autotools doc, I couldn't see how to do it then
maybe it's not possible.

BTW, have you fixed your host side C code not to segfault when the
> Epiphany code hasn't been compiled?  Can you make it print a reasonable
> error message, please?

Mmm, I have added this. Doesn't it worked? I will check it ASAP.

	strcpy(fullpath, cgminer_path);
	strcat(fullpath, "epiphany-scrypt.srec");
	if (e_load_group(fullpath, dev, 0, 0, rows, cols, E_FALSE) == E_ERR) {
		applog(LOG_ERR, "Error: Could not load epiphany-scrypt.srec on Epiphany.");
		applog(LOG_ERR, "       Is epiphany-scrypt.srec in cgminer directory?.");
		return false;

>  > > 2. Implemented macros and instruction schedule in epiphany asm but I
> have
> > > some bugs to fix.
> When did you realize you had bugs to fix?  Do you have a code version
> with macros, but without instruction scheduling - as I had requested?
> (I asked that you commit this one first, before instruction scheduling,
> and only then add instruction scheduling with a separate commit.)
> > > Priorities:
> > > 1. Debug asm. Hopefully tomorrow will be fixed.
> Was it?

Unfortunately no, I hadn't time due I had a job interview the last Friday
and I needed to prepare it. I have attached the current buggy code.

>  > > 2. Implement a end user friendly script to compile cgminer.
> OK.  Mostly done.
> > > 3. Move to the new task related with jumbo.
> Actually, I thought that this new task would be more of a "filler" for
> when you're "idle" waiting for my feedback on your current main task, so
> you would not exactly "move" to it after finishing the current task, but
> rather you'd work on both.
> Anyhow, what's the current status on it?

Hello, I have implemented the interleaving of 2 and I copy get_hash* and
binary_hash* functions from lotus5 (changing crypt_key[] array size). I
have doubts about get_hash* and binary_hash* functions why are there 7 and
what do they do?.

Best regards,


[ CONTENT OF TYPE application/octet-stream SKIPPED ]

Powered by blists - more mailing lists

Your e-mail address:

Powered by Openwall GNU/*/Linux - Powered by OpenVZ