Go support on Epiphany

Re: Go support on Epiphany

Postby mortdeus » Sat Feb 02, 2013 5:52 am

Okay. So having read the spec, ill catch everyone up to date with go.

Regarding the runtime, gc statically compiles the go runtime and any imported dependencies directly into the executable binary. There is no shared libraries and runtime linking or anything like that. Some may object to this due to bloated sizes of executables, however this is done in an optimal way where an entire lib isnt being compiled in. A "special" header is created via all the imported dependencies a go program actually uses. A quick example of this means that, for your package foo to reference an exported variable in bar, which itself is a imported type from package baz. Package foo doesnt need to include the baz package to know what that type is because all that information was compiled into package bar's library (bar.a).

A "hello world" go executable comes out to be about 1 mb in size. (http://play.golang.org/). Which is substantial. You wont be able to load an entire go program into a single e-core and read just from it's local memory like you would be able to using musl-c or uClibc. Here is a go implementation of plan9's version of the cat program with the source and the produced asm pre linkage. https://gist.github.com/4696208 for anybody curious.

In my opinion, running a go executable on a core by core basis is too much overhead and cycles wasted. Instead what im envisioning is that the arm cpu would handle the main goroutine, and then any subsequent goroutines called from main() can be dispatched to an available core and then popped off to be replaced by any other goroutines being handled by the runtime scheduler.

I think its very feasible to implement go for epiphany. Ill post updates here with any news.
User avatar
mortdeus
 
Posts: 6
Joined: Thu Jan 31, 2013 10:18 pm

Re: Go support on Epiphany

Postby Folknology » Sat Feb 02, 2013 12:20 pm

Nice work @mortdeus and a good plan, we will follow your progress with great interest.

regards
Al
User avatar
Folknology
 
Posts: 36
Joined: Mon Dec 17, 2012 3:25 am

Re: Go support on Epiphany

Postby Folknology » Sat Feb 02, 2013 4:20 pm

@mortdeus One more thing, I think main() and the main processor will also have to manage all of the garbage collection on behalf of all cores in order to keep the Epiphany core memory free for goroutines and their data.

This implies a custom memory manager/garbage collector, and go routines themselves may face certain memory restrictions

regards
Al
User avatar
Folknology
 
Posts: 36
Joined: Mon Dec 17, 2012 3:25 am

Re: Go support on Epiphany

Postby mortdeus » Wed Feb 06, 2013 7:54 pm

For anybody who wants to follow my progress on the epiphany port of go's compiler, ive created a repo at github.
https://github.com/mortdeus/ego
User avatar
mortdeus
 
Posts: 6
Joined: Thu Jan 31, 2013 10:18 pm

Re: Go support on Epiphany

Postby Folknology » Wed Feb 06, 2013 10:32 pm

Love the project name 'ego', will be great keeping abreast of this, thanks

regards
Al
User avatar
Folknology
 
Posts: 36
Joined: Mon Dec 17, 2012 3:25 am

Re: Go support on Epiphany

Postby 8l » Sun Feb 10, 2013 9:28 am

although, i don't like the syntax of go, (wish more d programming language combine with go..)

Why I Like Go
https://gist.github.com/freeformz/4746274
8l
 
Posts: 173
Joined: Mon Dec 17, 2012 3:23 am

Re: Go support on Epiphany

Postby Gerald » Wed Apr 24, 2013 8:41 am

Hi,

It would be great to get some feedback from Adapteva if some people like mortdeus are trying to push go forward on the Parallella...
Gerald
 
Posts: 22
Joined: Thu Mar 21, 2013 10:43 am

Re: Go support on Epiphany

Postby 9600 » Wed Apr 24, 2013 12:52 pm

Gerald wrote:Hi,

It would be great to get some feedback from Adapteva if some people like mortdeus are trying to push go forward on the Parallella...


What sort of feedback do you mean? I know that they are delighted that someone is working on Go support.

Cheers,

Andrew
Andrew Back (a.k.a. 9600 / carrierdetect)
User avatar
9600
 
Posts: 997
Joined: Mon Dec 17, 2012 3:25 am

Re: Go support on Epiphany

Postby mortdeus » Thu Apr 25, 2013 1:07 am

Sorry guys for the lack of commitment going into the ego repo on github over the last couple of weeks. Ive been rather busy and waiting for a board I can tinker with. Andrew just set me up with ssh access into a remote parallella board the other day so ive started working on ego again.

BTW, there is a discussion about ego also happening in go's google group mailing list.

https://groups.google.com/forum/?fromgr ... WsVYrK2n0J
User avatar
mortdeus
 
Posts: 6
Joined: Thu Jan 31, 2013 10:18 pm

Re: Go support on Epiphany

Postby elimisteve » Sat Oct 26, 2013 10:25 pm

Anyone know of any recent progress that has been made on Go support for Epiphany? Thanks.
elimisteve
 
Posts: 1
Joined: Sat Oct 26, 2013 10:23 pm

PreviousNext

Return to Go

Who is online

Users browsing this forum: No registered users and 1 guest