[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Aplc, Parallella - intercommunication



The "porting Apl to the Parallella" project is moving forward faster than I expected.
There is now an Apl forum under parallel programming, on the Parallella forum : 
	http://forums.parallella.org/viewforum.php 

And I have been given web access to parallella hardware to help with the development.

I think that the easiest way to start joining the Apl on different processors is to use the aplc built in pipes/spawn mechanism, or an equivalent; however 'pipe' and 'dup' are missing in the 'newlib' that Epiphany calls and we need to create an equivalent using the inter-processor memory mesh.

I wish to ask for comments and suggestions re recommended methods of joining processes together, given the unusual interconnection design of this chip. 

This includes the option of multiple Apls making use of the available essentially overlapping address space, provided it can be done in an ordered and safe manner.

I attach a few pages related to the inter-processor interconnection that I have excised from the architecture reference manual.

This discusses a particularly interesting feature as follows, where a process in one core (as given by address 0x8200) is writing directly into the local memory of another core (0x9200). Somewhat scary, but remarkably efficient: no/negligible overhead.

//VecA array at 0x82002000
//VecB array at 0x82004000
//remote_res at 0x92004000
for (i=0; i<100; i++){
loc_sum+=vecA[i]*vecB[i];
}
remote_res =loc_sum;

I have various thoughts, but your comments are very appreciated.

Cheers,
	Beau Webber


-----Original Message-----
From: J.B.W.Webber 
Sent: 28 May 2013 02:33
To: J.B.W.Webber; Peter Welch; 'java-threads@xxxxxxxxxx'; 'occam-com@xxxxxxxxxx'
Subject: Aplc apl to c compiler ported to Parallella

Just for the record, apl is now available on the Parallella.
What is still needed is the harness to link different processes on nodes.

aplc library now running on parallella 1 node simulator :

Parallella epiphany c :
no: sleep microsleep nanosleep pipe dup ttyname 
So I hacked dummy donothing replacement functions
- need to be replaced by specific e- functions or possibly occam structures.

$ aplcc helloworld.apl
$ ./e-aplcc aplc_helloworld.c
$ ../../INSTALL/bin/e-run a.out
Hello World from Aplc

In principle the whole compiler is ported, but everything has to be run on the simulator by calling e-run.

Cheers,
	beau

Attachment: Data transfer between cores.pdf
Description: Data transfer between cores.pdf