[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/feed.php on line 173: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
[phpBB Debug] PHP Warning: in file [ROOT]/feed.php on line 174: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
Parallella Community Supercomputing for Everyone 2016-05-30T10:54:18+00:00 https://parallella.org/forums/feed.php?f=43&t=3705 2016-05-30T10:54:18+00:00 2016-05-30T10:54:18+00:00 https://parallella.org/forums/viewtopic.php?t=3705&p=17679#p17679 <![CDATA[Re: Assembly class HERE]]>
I posted from the library and there was an unexpected strike, so my hurry last day... :D welcome in France ;) the quoted URL is fine now.

I read here and there that with RISC the burden is to be taken by the programmer.
However for Epiphany there are no many conventions, search ABI or EABI under the forum or the docs - the architecture manual is a must.
From my memory I get:
r0-r3 = parameter passing ; if more than 4 parameters, it uses the stack
r0-r7 = allows 16-bit instructions (see how in one of the final tables in the arch. manual)

r32-r63: caller saved - well suited for leaf functions, iirc. Use as you like.
r63 may be used for the immediate value -1 (0xFFffFFff): it's handy for mask/bit/integer operations. Compile with -m1reg-r63 for use - it works :)
I did not try r43 that does the same but in my opinion it shoud be obsoleted, it's double usage.

r28-r31: for immediate values, reserved... not clear for who, maybe a future Adapteva use ? In my current attempt I use them for my own wanted immediate values.
r16-r27: free to use.

r8-r15 may give issues, use them in last resort. Callee saved iirc.
r8: nothing particular
r9-r10: used by the system for stack base... seen in objdump, init. part. I avoid them.
r11/r15: there is a change in the ABI, it might be "fp"... I avoid them too, I'm not fully 2016.3.1 yet.
r12: lr = Link Register, very important. You must save it for recursive functions.
r13: sp ? Basically I sub sp, some_value then ldr/str - there is no push/pop - then I add sp, some_value... saving lr and using jalr when using recursivity.
JALR is like a "CALL eax", but it's *your* burden to save the LR.
JR is like a "JMP eax", so you can use it iff the return address is guaranteed unique and you know it
RTS looks like RET but actually it's converted to "JR LR" iirc (you should objdump this for clarity)
r14: ?
ysapir's advice is good, compile and objdump:

I made the small C program recurse.c for that.

I use prefixes to alias the register and to better remember/read what I code:
I_* for Immediates
O_* for fixed Offsets
P_* for Pointers (my new habit, sometimes the Offsets should be adjusted)
R_* for Register values for the fastest possible access: crucial recurrent values
S_* for Stackable, very important to align to even registers for 64-bit values

In short: for a start objdump recurse.c or any tiny C program ; gcc-explorer is a must-have tool too: you dynamically test the code you want :D

Statistics: Posted by DonQuichotte — Mon May 30, 2016 10:54 am


]]>
2016-05-28T21:27:56+00:00 2016-05-28T21:27:56+00:00 https://parallella.org/forums/viewtopic.php?t=3705&p=17677#p17677 <![CDATA[Re: Assembly class HERE]]>
On x86 every register has an intentional purpose:

* AX --> Accumulator
* BX --> Source
* CX --> Counter
* DX --> Destination

How are the RISC register used, is there a certain convention how they are used?

Also the Stack is not very clear, r13 is used but how is something pushed and popped?

Statistics: Posted by Olaf — Sat May 28, 2016 9:27 pm


]]>
2016-05-28T21:01:13+00:00 2016-05-28T21:01:13+00:00 https://parallella.org/forums/viewtopic.php?t=3705&p=17676#p17676 <![CDATA[Re: Assembly class HERE]]>
Deadlines at work so almost no time for Parallella, and too tired to do mental stuff.
But your ARM assembler explanation comes just in time, I was preparing to learn the assembly and did not know where to start yet.

Statistics: Posted by Olaf — Sat May 28, 2016 9:01 pm


]]>
2016-05-27T14:25:50+00:00 2016-05-27T14:25:50+00:00 https://parallella.org/forums/viewtopic.php?t=3705&p=17672#p17672 <![CDATA[Re: Assembly class HERE]]> Statistics: Posted by DonQuichotte — Fri May 27, 2016 2:25 pm


]]>
2016-05-27T12:53:32+00:00 2016-05-27T12:53:32+00:00 https://parallella.org/forums/viewtopic.php?t=3705&p=17670#p17670 <![CDATA[Re: Assembly class HERE]]> Statistics: Posted by MiguelTasende — Fri May 27, 2016 12:53 pm


]]>
2016-05-30T09:44:26+00:00 2016-05-26T15:24:47+00:00 https://parallella.org/forums/viewtopic.php?t=3705&p=17660#p17660 <![CDATA[Re: Assembly class HERE]]>
I've reached 81 Mn/s with full assembly... that's for the good news.

The fresh update is under

and all the new files under the *2016...05...26...tar...gz archive

1st you should read README.
I'm open to any question.
I put several versions of C or S files: I think there should be several steps for producing assembly.

Bye

Statistics: Posted by DonQuichotte — Thu May 26, 2016 3:24 pm


]]>
2016-05-23T14:41:06+00:00 2016-05-23T14:41:06+00:00 https://parallella.org/forums/viewtopic.php?t=3705&p=17647#p17647 <![CDATA[Re: Assembly class HERE]]> Statistics: Posted by aolofsson — Mon May 23, 2016 2:41 pm


]]>
2016-05-23T11:04:14+00:00 2016-05-23T11:04:14+00:00 https://parallella.org/forums/viewtopic.php?t=3705&p=17643#p17643 <![CDATA[Re: Assembly class HERE]]> Statistics: Posted by DonQuichotte — Mon May 23, 2016 11:04 am


]]>
2016-05-23T17:39:40+00:00 2016-05-22T23:24:43+00:00 https://parallella.org/forums/viewtopic.php?t=3705&p=17642#p17642 <![CDATA[Re: Assembly class HERE]]> Statistics: Posted by ImperialTurbineSaint — Sun May 22, 2016 11:24 pm


]]>
2016-05-22T12:41:44+00:00 2016-05-22T12:41:44+00:00 https://parallella.org/forums/viewtopic.php?t=3705&p=17638#p17638 <![CDATA[Re: Assembly class HERE]]> I have no background in RISC

Parallella Desktop model
So it has a Zynq SOC (FPGA + ARM A9)
And a Epiphany III processor.

This ARM A9 is a Cortex-A9 Processor:
The ARM A9 is basically a ARMv7-A 32-bit that has more added to it.

The Epiphany III is a second co processor.
It is also a RISC architecture but it has a different assembler instruction set than the ARM A9.

The ARM A9 (2 cores version) in Parallella is used to power Linux.
Linux does not use Epiphany III.
So it is the job of the developer, to create custom code for the Epiphany III RSIC to be uploaded and executed to each Epiphany core.

Statistics: Posted by Olaf — Sun May 22, 2016 12:41 pm


]]>
2016-05-21T22:26:48+00:00 2016-05-21T22:26:48+00:00 https://parallella.org/forums/viewtopic.php?t=3705&p=17634#p17634 <![CDATA[Assembly class HERE]]>
I'm opening this topic for teaching Epiphany assembly - interfaced to C - to whoever wants.
Teaching and being teached: I am a beginner too, and there are lots of questions I still cannot answer.
I think teaching will help me reinforce my learning and may help a few others, hopefully.

I intend to start next week.
The subject is "writing recursive functions in assembly".
:o OK I know... some of you already whisper, that's two hard problems...
I agree, :roll: you'd better NOT begin with this topic :mrgreen:
As Andreas said, and I for the most part agree: there are lots of high quality assembly code in the Parallella examples.
I particularly appreciated e_fft_asm.S... so have a nice reading :) and you're welcome any time.

Why or when should we write in assembly ?
Apart from speed concerns: no way, it's not productive, not portable, not readable, etc.
Speed... when I bought the Parallella I had just speed (per watt) as expectation.
So if I can cut down the execution time by 10 %, I'm in.
The fact is, the assembly version we'll see next week is about 25 % smaller than the C compiler's output.

And I am quite convinced everybody should "think assembly" at least once to improve its C source code:
looking at the C compiler's output helps you reorganize data more efficiently or find out where it is not optimal yet (it's a robust but young compiler).
Look at __builtin_ctz output for example, or think about a 64-bit addition.

That's why I'm opening a second topic, let's call it "Assembly snippets".
It may give hints for the compiler guys, or we can simply integrate these snippets into our own source files.

Homework ;) for next week:
- read the docs if not done - especially the instruction set in the architecture reference on
Recommended: install esdk 2015.1 on your regular computer if possible (Linux x86-64 esdk for example) - even if it's several hours to get it,
you'll get nice tools to debug things faster than on the Parallella itself.
The esdk doc is fairly good.

Statistics: Posted by DonQuichotte — Sat May 21, 2016 10:26 pm


]]>