Page 1 of 2

OpenMP within the Epiphany now possible

PostPosted: Fri Mar 13, 2015 5:57 pm
by dimako
Hello everybody,

We would like to announce the support of OpenMP within the Epiphany-16 chip! A new version (b2) of the OMPi compiler is now available, with the following changes:

  • Added support for OpenMP within the Epiphany-16; almost all OpenMP 3.1 features are available within the offloaded kernels
  • Enhanced the implementation of OpenMP 4.0 device constructs to offload multiple, independent kernels to Epiphany
  • A lot of bug fixes
You can download the OMPi compiler from http://paragroup.cs.uoi.gr/. Please let us know of any bugs, issues or problems.

Because of a pending publication, we currently provide the binaries only. Full source code will be available most probably next month.

The implementation is based on eSDK v.5.13.9.10. Some key points about the implementation:
  • In order to support multiple, independent kernels as well as parallel teams within the Epiphany, each eCore comprises a different workgroup.
  • Many eSDK routines had to be re-written (e.g. e_barrier(), e_mutex_xxx(), etc).
  • A new mechanism was developed for faster group offloading of SREC files onto the Epiphany.
Some points to keep in mind:
  • Depending on the OpenMP constructs utilized within a kernel, 7KiB to 12KiB of an eCore local memory will be occupied (we expect to optimize this more).
  • Multiple, independent and concurrent kernels may be offloaded as long as up to 16 eCores are employed in total (otherwise the kernels are queued till the required number of eCores becomes available).
  • The implementation is not yet highly optimized and may contain some bugs (please let us know of any!).
More information available in the included README.txt. Don't hesitate to contact us if you have any questions.

Best regards,
Vassilios

Re: OpenMP within the Epiphany now possible

PostPosted: Fri Mar 13, 2015 6:54 pm
by aolofsson
Vassilios,

Incredibly exciting to to see that you are proceeding with work!!! I was just thinking you you guys today intended to reach out.:-)

Two small request:

-We hare rewriting the ESDK from scratch and really want collaboration. I look forward to seeing what you have done wrt to efficient barriers and program load.(note, we have depracted srec load for future only elf formats). The new community effort is located here. It would be great if you one consider contributing back some of the smaller piece (like optimized barrier) once you can publish

https://github.com/parallella/pal

-We need to accelerate the innovation and discovery cycle. Once your articles are accepted, please consider pre-publishing at http://arxiv.org/. Most journals/conferences allow it...and if the journals don't allow it then quite frankly they are idiots!

Cheers,
Andreas

Re: OpenMP within the Epiphany now possible

PostPosted: Wed Mar 18, 2015 2:09 pm
by dimako
Andreas,

thank you for your kind words.
We are going to share all code as soon as possible. Pre-publication material will also be available, for sure.
We certainly would like to help with the general community effort and I believe we will; let's hope I get new students to join the group! 99.9% of this effort has been the work of a PhD and a Master student of mine, and they are finishing soon :(

Vassilios

Re: OpenMP within the Epiphany now possible

PostPosted: Wed Mar 18, 2015 6:39 pm
by aolofsson
Vassilios,
Have the PhD and masters students contact me if they are at all interested in working for Adapteva in Europe.
Andreas

Re: OpenMP within the Epiphany now possible

PostPosted: Sat Mar 28, 2015 8:54 pm
by kloetzl
Thank you for your efforts regarding OpenMP. Unfortunately, I can't even make the examples work. What am I missing?

Code: Select all
parallella@parallella:~/ompi-parallella-b2/examples/demo1$ make
../../ompi/bin/ompicc -O3 demo1.c -o a.out -I /opt/adapteva/esdk/tools/host/include -L /opt/adapteva/esdk/tools/host/lib -le-hal -lrt
/home/parallella/ompi-parallella-b2/ompi/bin/../lib/ompi/default/libort.a(ort_parallella.o): In function `ort_offload_kernel':
ort_parallella.c:(.text+0x129c): undefined reference to `e_load'
/home/parallella/ompi-parallella-b2/ompi/bin/../lib/ompi/default/libort.a(ort_parallella_loader.o): In function `my_e_load_group':
ort_parallella_loader.c:(.text+0xe76): undefined reference to `ee_set_core_config'
ort_parallella_loader.c:(.text+0xeda): undefined reference to `ee_set_core_config'
collect2: error: ld returned 1 exit status
Error: could not perform linking.
Building demo1_d00.srec

Re: OpenMP within the Epiphany now possible

PostPosted: Sat Mar 28, 2015 10:02 pm
by psxlover
Can you try adding "-le-loader" to the LDFLAGS in the Makefile?

Re: OpenMP within the Epiphany now possible

PostPosted: Sun Mar 29, 2015 9:49 am
by kloetzl
That helped. Thanks!

Re: OpenMP within the Epiphany now possible

PostPosted: Mon May 11, 2015 8:54 am
by dimako
Good day everybody,

this is just to inform you that we will be releasing the source code for OMPi soon; academically, our work will be presented in detail at Europar 2015 ;)

BTW, Andreas, we had contacted you more than a month ago but received no reply. Did you get our emails?

You can expect a new post soon. Best regards,
Vassilios

Re: OpenMP within the Epiphany now possible

PostPosted: Mon May 18, 2015 8:20 pm
by illioren
Hello everyone,

Congratulation for the openmp achievement.
I read this was a C only compiler. Any plan for creating a C++ version of it?

Thanks,

Tim.

Re: OpenMP within the Epiphany now possible

PostPosted: Fri May 22, 2015 7:14 am
by dimako
illioren wrote:Hello everyone,

Congratulation for the openmp achievement.
I read this was a C only compiler. Any plan for creating a C++ version of it?

Thanks,

Tim.


Hi Tim,
no, unfortunately it is not in our immediate plans. We are currently improving and extending our OpenMP 4.0 C support to cover more constructs (cancellation, task dependencies, etc).

Best regards,
Vassilios