Go support on Epiphany

Go support on Epiphany

Postby stordopoulos » Mon Jan 28, 2013 1:41 am

Greetings,

Great job so far. Can't wait to get my two Parallella boards. What's the status on Go support for the Epiphany architecture?

Since GCC 4.7.0 is supported on Epiphany Go <1.0 is also supported out of the box.

The latest release of GCC, 4.7.1, includes gccgo with support for Go 1. If you need better performance for CPU-bound Go programs, or you need to support processors or operating systems that the gc compiler does not support, gccgo might be the answer.


Does that mean that since GCC is fully supported by Epiphany we'll be able to use full blown Go 1? Will it work as good as a normal x86, ARM architecture?

Last but not least. Epiphany is heavily thread based, just like a GPU. Yet you can program it like a CPU (besides the extra small cache per core). My question here is.

Would Go (goroutines) work nicely with the architecture? Goroutines are renowned for being lighter than thread. Could a Goroutine run on an Epiphany core? Could one goroutine run on 2,3,4 cores at once?

PS: Do you need to hack GCCGO to run on Epiphany? Any test to share?

Thank you.
stordopoulos
 
Posts: 5
Joined: Mon Dec 17, 2012 3:22 am

Re: Go support on Epiphany

Postby simoncook » Tue Jan 29, 2013 5:31 pm

Hi storpodoulos,

Go currently doesn't work on the Epiphany architecture. I have just tried compiling the toolchain with support for go, although epiphany-elf-gccgo was created, it currently cannot be used as (at least) one library needs porting. Currently libffi (http://sourceware.org/libffi) requires some target-specific implementation before it will work and shows the following when trying to build the libraries:

Code: Select all
configure: error: "libffi has not been ported to epiphany-unknown-elf."
make: *** [configure-target-libffi] Error 1


Once implemented, it will be interesting to see if and how Go works. If you (or anyone else) feels like carrying out this port then we would happily include it with the toolchain for all to reap the benefits of.
User avatar
simoncook
 
Posts: 50
Joined: Mon Dec 17, 2012 3:25 am
Location: United Kingdom

Re: Go support on Epiphany

Postby stordopoulos » Wed Jan 30, 2013 3:46 pm

I'm afraid I'm not the person for the job. Go would be perfect for parallella and Adapteva should do their very best to support it out of the box. Since Go is implemented in GCC, Epiphany should support it as well. At least that's my humble opinion. The concurrent stuff in Go and their Epiphany architecture seems like a great "marriage". If anyone is interest in doing that please drop a line here.

Again, in my humble opinion, the people from Adapteva should be the ones to curry the weight since Go is officially under the GCC umbrella.
stordopoulos
 
Posts: 5
Joined: Mon Dec 17, 2012 3:22 am

Re: Go support on Epiphany

Postby 9600 » Wed Jan 30, 2013 8:55 pm

Hi Storpodoulos,

stordopoulos wrote:I'm afraid I'm not the person for the job. Go would be perfect for parallella and Adapteva should do their very best to support it out of the box. Since Go is implemented in GCC, Epiphany should support it as well. At least that's my humble opinion. The concurrent stuff in Go and their Epiphany architecture seems like a great "marriage". If anyone is interest in doing that please drop a line here.

Again, in my humble opinion, the people from Adapteva should be the ones to curry the weight since Go is officially under the GCC umbrella.


There are limited resources in Adapteva and the partners — which includes Embecosm who are developing the SDK — and while it would be great to provide official support for Go and many other languages and frameworks, this would impact the overall quality of support.

We really need to find someone in the community who is willing to take a lead on Go support, and perhaps you can help us find that person! Then we can provide them with as much support as we are able to in order to help get Go up and running on Epiphany.

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 Jan 31, 2013 10:29 pm

I'll be working on this. Is there an emulator I can use to test on?
User avatar
mortdeus
 
Posts: 6
Joined: Thu Jan 31, 2013 10:18 pm

Re: Go support on Epiphany

Postby LamsonNguyen » Fri Feb 01, 2013 4:40 am

Yes, it is included in the SDK, though it only emulates one core, not inter-core communications.
LamsonNguyen
 
Posts: 138
Joined: Sun Dec 16, 2012 7:09 pm

Re: Go support on Epiphany

Postby stordopoulos » Fri Feb 01, 2013 6:43 am

mortdeus wrote:I'll be working on this. Is there an emulator I can use to test on?


@mortdeus, thank you very much for your interest in Epiphany and the Parallella board. Any help is more than welcome. I don't have the skill to help, yet. But I will support Parallella any way I can. Again, thank you.
stordopoulos
 
Posts: 5
Joined: Mon Dec 17, 2012 3:22 am

Re: Go support on Epiphany

Postby Folknology » Fri Feb 01, 2013 10:16 am

@mortdeus Hopefully you know more about this than I, but on a cursory glance it appears that Go has a quite large runtime requirement, due in part to its type system, does this larger runtime have to be replicated into each epiphany core memory in order for Goroutines to run there, or is there some sort of cross runtime magic that means it can sit in the common ARM memory map shared between cores and Arm. I ask because of the 32K limitations of the epiphany core memory which could be a show stopper if sharing isn't possible, I don't have the key knowledge however with Go and its implementations to know if this is the case or not, some insight here would be informative from someone more knowledgeable.

It would certainly be great to see a good CSP implementation running on epiphany.

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

Re: Go support on Epiphany

Postby stordopoulos » Fri Feb 01, 2013 2:08 pm

@Folknology I can't imagine that being the case. Some ARM chips have the same limitation (0-32K) but Go runs fine on them. Specifically the ARMv7 architecture (Cortex- A7,A8,A15).
stordopoulos
 
Posts: 5
Joined: Mon Dec 17, 2012 3:22 am

Re: Go support on Epiphany

Postby mortdeus » Sat Feb 02, 2013 12:44 am

http://golang.org/doc/faq#goroutines

Im still reading the spec, but as far as im aware there is nothing that will be a showstopper for Go. If anything Epiphany will truly shine using Go because of the built in concurrency semantics. Another ambition of mine with this project is to port plan9 to run on epiphany. Especially considering the plan 9 derived research project going on in http://code.google.com/p/nix-os/. It would be interesting to tailor the ideas used in this project to epiphany.

I have a question for anybody from the parallella team working on Linux. Ive been reading a few white paper specifically about tegra and the nix os and it seems like benchmarks suggest that 4 cores are the "sweet spot" in terms of SMP kernel schedulers. Are there any sort of limitations in epiphany like this that are strictly because of the OS's lack of ability to handle that much concurrency? I mean assuming that were truly aiming for 18 million cores. :p

http://lsub.org/ls/export/nixposterabs.pdf
http://www.nvidia.com/object/white-papers.html
User avatar
mortdeus
 
Posts: 6
Joined: Thu Jan 31, 2013 10:18 pm

Next

Return to Go

Who is online

Users browsing this forum: No registered users and 1 guest

cron