Page 1 of 1

ARL OpenSHMEM for Epiphany

PostPosted: Fri Dec 16, 2016 9:02 pm
by jar
ARL OpenSHMEM for Epiphany has been published on GitHub:

Please provide comments (here or there).

This is the library that was referenced in the papers An OpenSHMEM Implementation for the Adapteva Epiphany Coprocessor and OpenCL + OpenSHMEM Hybrid Programming Model for the Adapteva Epiphany Architecture

Re: ARL OpenSHMEM for Epiphany

PostPosted: Thu Jan 05, 2017 9:05 pm
by jar
I updated the library so that it can be used with the eSDK on the latest 2016.11 Parabuntu image. There are two makefiles now -- one for the eSDK and the new 2016.11 image and another for COPRTHR-2 and the 2015.1 image.

I've also provided a "hello world" dot product example code for using the library with the eSDK.

It's similar to the original dot product example except that it now performs initialization and a non-trivially parallel reduction across all cores. Rather than each core performing a local summation and having the ARM host perform the final summation, this operation is performed in parallel on the Epiphany device.

Re: ARL OpenSHMEM for Epiphany

PostPosted: Fri Jan 06, 2017 12:17 am
by aolofsson
That's awesome! How much work was it to updae to the new abi?

Re: ARL OpenSHMEM for Epiphany

PostPosted: Fri Jan 06, 2017 12:58 pm
by jar
I didn't have any issues with the ABI change. Of the routines written in assembly, I believe I was already using the common set of registers between ABIs.

The main fix had to do with the LDF loader and the _end symbol needed to build the brk/sbrk routines for memory management. Ola pointed me in the right direction.

Memory management should be the only difference between the eSDK/COPRTHR flavors of the library.

If you find any, please report bugs through github.

Re: ARL OpenSHMEM for Epiphany

PostPosted: Wed Jul 05, 2017 3:05 pm
by jar
The software has had many improvements since it was released in December. To summarize the most recent update this last week:

The 'master' branch has added an automatic test and code report generation feature, code timer consolidation, an updated README, two new code examples (diagonal sparse matrix vector multiplication and conjugate gradient) and an examples Makefile.

The 'spec_next' branch has incorporated all of the changes to 'master' and new OpenSHMEM 1.4 features including: extended atomic memory operations, remote memory operations, point-to-point synchronization operations, a calloc routine, and other minor specification changes. Since the full OpenSHMEM v 1.4 specification has not been ratified yet, this new branch was created to incorporate the changes that have passed the committee vote. Once v. 1.4 is ratified, the 'master' branch will merge these changes.

Feedback is welcome.