SOMA – An OpenMP Toolchain For Multicore Partitioning

The SOMA (Static OpenMP multicore Allocator) framework has the purpose of analyzing OpenMP applications thanks to the CLang compiler of LLVM and then create static schedules via multicore partitioning. It has has been presented at the ACM SAC 2016 conference in Pisa. SOMA is research tool developed with PhD students Brizzi, Dabisias, and with Prof. Buttazzo of the RETIS Laboratory,

SOMA Structure

The source code has not been released yet due to the need of porting to recent version of CLang, but I have posted some code for OpenMP pragma and structure extraction for CLang.

This is the reference to the this work

Ruffaldi E., Dabisias G., Brizzi F. & Buttazzo G. (2016). SOMA: An OpenMP Toolchain For Multicore Partitioning. In 31st ACM/SIGAPP Symposium on Applied Computing . ACM. (PDF,Slides) DOI: 10.1145/2851613.2851720

BibTeX citation:

@inproceedings{soma2016,
 abstract = {Advancements in multicore platforms enabled the develop- ment of complex embedded systems incorporating algorithms that were typically executed on high-performance worksta- tions. Although many solutions exist today for supporting software development on multicore platforms, they rarely take timing constraints into account. This work presents a toolchain aimed at guaranteeing real-time constraints into parallel OpenMP code. This toolchain, called SOMA uses code profiling for estimating the multicore requirements and produces a static schedule for a set of parallel tasks. The toolchain is implemented using the source-to-source transla- tion capabilities of CLang. Performance results are provided on a computer vision application},
 author = {Ruffaldi, Emanuele and Dabisias, Giacomo and Brizzi, Filippo and Buttazzo, Giorgio},
 booktitle = {31st ACM/SIGAPP Symposium on Applied Computing},
 howpresented = {oral},
 keyword = {multicore,OpenMP,pdf:2016_C_RuffaldiMP},
 link = {http://},
 doi = {10.1145/2851613.2851720},
 publisher = {ACM},
 title = {SOMA: An OpenMP Toolchain For Multicore Partitioning},
 year = {2016}
}