publications: - title: "Automatic streamization in GCC" author: - name: "Antoniu Pop" link: "http://www.cri.ensmp.fr/people/apop/" - name: "Sebastian Pop" link: "https://researchr.org/alias/sebastian-pop" - name: "Jan Sjödin" link: "https://researchr.org/alias/jan-sj%C3%B6din" year: "2009" abstract: "Multi-cores and multi-processors became ubiquitous during the last few years, and the trend is to increase the number of simple, power-efficient, and slower cores per chip. One of the results is that the performance of single-threaded applications did not significantly im- prove, or even declined, on new processors, which heightened the interest in compiler automatic paral- lelization techniques. Our objective is to develop a framework in GCC to transform loops into pipelines of concurrent tasks using streams to communicate and synchronize. This trans- formation can either rely on user hints (pragmas) or on static analysis of control and data dependences. Our fo- cus is to fully automate this transformation, which re- quires an integration with the Graphite polyhedral loop optimization framework and will lead to the develop- ment of runtime optimizations based on this polyhedral representation. This approach is complementary with the existing parallelization passes. This paper presents the steamization technique, the optimizations it enables, the interaction with other optimizations, and the neces- sary extensions to Graphite/PCP (polyhedral compila- tion package) for its integration. " tags: - "Compiler Optimization" - "optimization" - "rule-based" - "synchronization" - "application framework" - "analysis" - "Stream Computing" - "static analysis" - "data-flow" - "compiler" - "data-flow analysis" - "GCC" - "systematic-approach" - "transformation" - "stream processing" researchr: "https://researchr.org/publication/Pop2009" cites: 0 citedby: 0 booktitle: "Proceedings of the 2009 GCC Developers' Summit" kind: "inproceedings" key: "Pop2009" - title: "Design of graphite and the Polyhedral Compilation Package" author: - name: "Jan Sjödin" link: "https://researchr.org/alias/jan-sj%C3%B6din" - name: "Sebastian Pop" link: "https://researchr.org/alias/sebastian-pop" - name: " Harsha Jagasia" link: "https://researchr.org/alias/harsha-jagasia" - name: "Tobias Grosser" link: "https://researchr.org/alias/tobias-grosser" - name: "Antoniu Pop" link: "http://www.cri.ensmp.fr/people/apop/" year: "2009" month: "06" abstract: "Graphite is the loop transformation framework that was introduced in GCC 4.4. This paper gives a detailed description of the design and future directions of this infrastructure. Graphite uses the polyhedral model as the internal representation (GPOLY). The plan is to create a polyhedral compilation package (PCP) that will provide loop optimization and analysis capabilities to GCC. This package will be separated from GIMPLE via an interface language that is restricted to express only what GPOLY can represent. The interface language is a set of data structures that encodes the control flow and memory accesses of a code region. A syntax for the language is also defined to facilitate debugging and testing." note: "A/406/CRI" links: "url": "http://hal-ensmp.archives-ouvertes.fr/hal-00408759/en/" "url": "http://hal-ensmp.archives-ouvertes.fr/hal-00408759/PDF/A-406.pdf" tags: - "model-to-model transformation" - "optimization" - "data-flow language" - "meta-model" - "modeling language" - "testing model transformations" - "transformation language" - "language modeling" - "points-to analysis" - "testing" - "analysis" - "language design" - "data-flow" - "source-to-source" - "debugging" - "model transformation" - "Meta-Environment" - "access control" - "data-flow analysis" - "design" - "transformation" researchr: "https://researchr.org/publication/SJODIN%3A2009%3AHAL-00408759%3A1" cites: 0 citedby: 0 pages: "33-45" booktitle: "Proceedings of the 2009 GCC Developers' Summit" address: "Montréal Canada" kind: "inproceedings" key: "SJODIN:2009:HAL-00408759:1" - title: "ACOTES Project: Advanced Compiler Technologies for Embedded Streaming" author: - name: "Munk, Harm" link: "https://researchr.org/alias/munk%2C-harm" - name: "Ayguad?, Eduard" link: "https://researchr.org/alias/ayguad%3F%2C-eduard" - name: "Bastoul, C?dric" link: "https://researchr.org/alias/bastoul%2C-c%3Fdric" - name: "Carpenter, Paul" link: "https://researchr.org/alias/carpenter%2C-paul" - name: "Chamski, Zbigniew" link: "https://researchr.org/alias/chamski%2C-zbigniew" - name: "Cohen, Albert" link: "https://researchr.org/alias/cohen%2C-albert" - name: "Cornero, Marco" link: "https://researchr.org/alias/cornero%2C-marco" - name: "Dumont, Philippe" link: "https://researchr.org/alias/dumont%2C-philippe" - name: "Duranton, Marc" link: "https://researchr.org/alias/duranton%2C-marc" - name: "Fellahi, Mohammed" link: "https://researchr.org/alias/fellahi%2C-mohammed" - name: "Ferrer, Roger" link: "https://researchr.org/alias/ferrer%2C-roger" - name: "Ladelsky, Razya" link: "https://researchr.org/alias/ladelsky%2C-razya" - name: "Lindwer, Menno" link: "https://researchr.org/alias/lindwer%2C-menno" - name: "Martorell, Xavier" link: "https://researchr.org/alias/martorell%2C-xavier" - name: "Miranda, Cupertino" link: "https://researchr.org/alias/miranda%2C-cupertino" - name: "Nuzman, Dorit" link: "https://researchr.org/alias/nuzman%2C-dorit" - name: "Ornstein, Andrea" link: "https://researchr.org/alias/ornstein%2C-andrea" - name: "Antoniu Pop" link: "http://www.cri.ensmp.fr/people/apop/" - name: "Pop, Sebastian" link: "https://researchr.org/alias/pop%2C-sebastian" - name: "Pouchet, Louis-No?l" link: "https://researchr.org/alias/pouchet%2C-louis-no%3Fl" - name: "Ram?rez, Alex" link: "https://researchr.org/alias/ram%3Frez%2C-alex" - name: "R?denas, David" link: "https://researchr.org/alias/r%3Fdenas%2C-david" - name: "Rohou, Erven" link: "https://researchr.org/alias/rohou%2C-erven" - name: "Rosen, Ira" link: "https://researchr.org/alias/rosen%2C-ira" - name: "Shvadron, Uzi" link: "https://researchr.org/alias/shvadron%2C-uzi" - name: "Trifunovi?, Konrad" link: "https://researchr.org/alias/trifunovi%3F%2C-konrad" - name: "Zaks, Ayal" link: "https://researchr.org/alias/zaks%2C-ayal" year: "2010" abstract: "Streaming applications are built of data-driven, computational components, consuming and producing unbounded data streams. Streaming oriented systems have become dominant in a wide range of domains, including embedded applications and DSPs. However, programming efficiently for streaming architectures is a challenging task, having to carefully partition the computation and map it to processes in a way that best matches the underlying streaming architecture, taking into account the distributed resources (memory, processing, real-time requirements) and communication overheads (processing and delay). These challenges have led to a number of suggested solutions, whose goal is to improve the programmer’s productivity in developing applications that process massive streams of data on programmable, parallel embedded architectures. StreamIt is one such example. Another more recent approach is that developed by the ACOTES project (Advanced Compiler Technologies for Embedded Streaming). The ACOTES approach for streaming applications consists of compiler-assisted mapping of streaming tasks to highly parallel systems in order to maximize cost-effectiveness, both in terms of energy and in terms of design effort. The analysis and transformation techniques automate large parts of the partitioning and mapping process, based on the properties of the application domain, on the quantitative information about the target systems, and on programmer directives. This paper presents the outcomes of the ACOTES project, a 3-year collaborative work of industrial (NXP, ST, IBM, Silicon Hive, NOKIA) and academic (UPC, INRIA, MINES ParisTech) partners, and advocates the use of Advanced Compiler Technologies that we developed to support Embedded Streaming. " note: "10.1007/s10766-010-0132-7" links: "url": "http://dx.doi.org/10.1007/s10766-010-0132-7" tags: - "program partitioning" - "object-oriented programming" - "rule-based" - "program analysis" - "architecture" - "domain analysis" - "analysis" - "parallel programming" - "data-flow programming" - "data-flow" - "C++" - "transformation system" - "compiler" - "programming" - "subject-oriented programming" - "higher-order transformations" - "data-flow analysis" - "partitioning" - "design" - "systematic-approach" - "feature-oriented programming" - "transformation" - "stream processing" - "program transformation" researchr: "https://researchr.org/publication/springerlink%3A10.1007-s10766-010-0132-7" cites: 0 citedby: 0 journal: "International Journal of Parallel Programming" pages: "1-54" kind: "article" key: "springerlink:10.1007-s10766-010-0132-7" - title: "ERBIUM: a deterministic, concurrent intermediate representation for portable and scalable performance" author: - name: "Cupertino Miranda" link: "https://researchr.org/alias/cupertino-miranda" - name: "Philippe Dumont" link: "https://researchr.org/alias/philippe-dumont" - name: "Albert Cohen" link: "http://www-rocq.inria.fr/~acohen/index.html.fr" - name: "Marc Duranton" link: "https://researchr.org/alias/marc-duranton" - name: "Antoniu Pop" link: "http://www.cri.ensmp.fr/people/apop/" year: "2010" doi: "http://doi.acm.org/10.1145/1787275.1787312" links: doi: "http://doi.acm.org/10.1145/1787275.1787312" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/cf/MirandaDCDP10" tags: - "intermediate representation" researchr: "https://researchr.org/publication/MirandaDCDP10" cites: 0 citedby: 0 pages: "119-120" booktitle: "Proceedings of the 7th Conference on Computing Frontiers, 2010, Bertinoro, Italy, May 17-19, 2010" editor: - name: "Nancy M. Amato" link: "https://researchr.org/alias/nancy-m.-amato" - name: "Hubertus Franke" link: "https://researchr.org/alias/hubertus-franke" - name: "Paul H. J. Kelly" link: "https://researchr.org/alias/paul-h.-j.-kelly" publisher: "ACM" isbn: "978-1-4503-0044-5" kind: "inproceedings" key: "MirandaDCDP10" - title: "A stream-computing extension to OpenMP" author: - name: "Antoniu Pop" link: "http://www.cri.ensmp.fr/people/apop/" - name: "Albert Cohen" link: "http://www-rocq.inria.fr/~acohen/index.html.fr" year: "2011" doi: "http://doi.acm.org/10.1145/1944862.1944867" abstract: "This paper introduces an extension to OpenMP3.0 enabling stream programming with minimal, incremental additions that seamlessly integrate into the current specification. The stream programming model decomposes programs into tasks and explicits the flow of data among them, thus exposing data, task and pipeline parallelism. It helps the programmers to express concurrency and data locality properties, avoiding non-portable low-level code and early optimizations. We survey the diverse motivations and constraints converging towards the design of our simple yet powerful language extension, and we present experimental results of a prototype implementation in a public branch of GCC 4.5." links: doi: "http://doi.acm.org/10.1145/1944862.1944867" "url": "http://doi.acm.org/10.1145/1944862.1944867" tags: - "programming languages" - "optimization" - "OpenMP" - "meta programming" - "data-flow language" - "meta-model" - "modeling language" - "language modeling" - "language design" - "Stream Computing" - "parallel programming" - "constraints" - "data-flow programming" - "data-flow" - "survey" - "programming" - "program optimization" - "Meta-Environment" - "GCC" - "incremental" - "design" researchr: "https://researchr.org/publication/Pop%3A2011%3ASEO%3A1944862.1944867" cites: 2 citedby: 0 pages: "5-14" booktitle: "Proceedings of the 6th International Conference on High Performance and Embedded Architectures and Compilers" series: "HiPEAC '11" address: "New York, NY, USA" publisher: "ACM" isbn: "978-1-4503-0241-8" kind: "inproceedings" key: "Pop:2011:SEO:1944862.1944867" - title: "Preserving high-level semantics of parallel programming annotations through the compilation flow of optimizing compilers" author: - name: "Antoniu Pop" link: "http://www.cri.ensmp.fr/people/apop/" - name: "Albert Cohen" link: "http://www-rocq.inria.fr/~acohen/index.html.fr" year: "2010" month: "07" abstract: "This paper presents a technique for representing the high level semantics of parallel programming languages in the intermediate representation of optimizing compilers. The semantics of these languages does not fit well in the intermediate representation of classical optimizing compilers, designed for single-threaded applications, and is usually lowered to threaded code with opaque concurrency bindings through source-to-source compilation or a front-end compiler pass. The semantical properties of the high-level parallel language are obfuscated at a very early stage of the compilation flow. This is detrimental to the effectiveness of downstream optimizations. We define the properties we introduce in this representation and prove that they are preserved by existing optimization passes. We characterize the optimizations that are enabled or interfere with this representation and evaluate the impact of the serial optimizations enabled by this technique for concurrent programs, using a prototype implemented in a branch of GCC 4.6. While we focus on the OpenMP language as a running example, we also analyze how our semantical abstraction can serve the unification of the analyses and optimizations for a variety of parallel programming languages." links: "url": "http://hal.inria.fr/inria-00551518/PDF/paper.pdf" "url": "http://hal.inria.fr/inria-00551518/en/" tags: - "programming languages" - "optimization" - "semantics" - "intermediate representation" - "data-flow language" - "language design" - "parallel programming" - "data-flow programming" - "data-flow" - "source-to-source" - "compiler" - "programming" - "abstraction" - "program optimization" - "open-source" researchr: "https://researchr.org/publication/POP%3A2010%3AINRIA-00551518%3A1" cites: 0 citedby: 0 booktitle: "Proceedings of the 15th Workshop on Compilers for Parallel Computers (CPC'10)" address: "Vienna Autriche" kind: "inproceedings" key: "POP:2010:INRIA-00551518:1" - title: "Erbium: a deterministic, concurrent intermediate representation to map data-flow tasks to scalable, persistent streaming processes" author: - name: "Miranda, Cupertino" link: "https://researchr.org/alias/miranda%2C-cupertino" - name: "Antoniu Pop" link: "http://www.cri.ensmp.fr/people/apop/" - name: "Dumont, Philippe" link: "https://researchr.org/alias/dumont%2C-philippe" - name: "Albert Cohen" link: "http://www-rocq.inria.fr/~acohen/index.html.fr" - name: "Duranton, Marc" link: "https://researchr.org/alias/duranton%2C-marc" year: "2010" doi: "http://doi.acm.org/10.1145/1878921.1878924" abstract: "Tuning applications for multicore systems involve subtle concurrency concepts and target-dependent optimizations. This paper advocates for a streaming execution model, called ER, where persistent processes communicate and synchronize through a multi-consumer processing applications, we demonstrate the scalability and efficiency advantages of streaming compared to data-driven scheduling. To exploit these benefits in compilers for parallel languages, we propose an intermediate representation enabling the compilation of data-flow tasks into streaming processes. This intermediate representation also facilitates the application of classical compiler optimizations to concurrent programs." links: doi: "http://doi.acm.org/10.1145/1878921.1878924" "url": "http://doi.acm.org/10.1145/1878921.1878924" tags: - "programming languages" - "optimization" - "intermediate representation" - "synchronization" - "meta programming" - "data-flow language" - "persistent" - "meta-model" - "modeling language" - "language modeling" - "Stream Computing" - "parallel programming" - "data-flow programming" - "data-flow" - "compiler" - "program optimization" - "Meta-Environment" - "process modeling" - "stream processing" researchr: "https://researchr.org/publication/Miranda%3A2010%3AEDC%3A1878921.1878924" cites: 0 citedby: 0 pages: "11-20" booktitle: "Proceedings of the 2010 international conference on Compilers, architectures and synthesis for embedded systems" series: "CASES '10" address: "New York, NY, USA" publisher: "ACM" isbn: "978-1-60558-903-9" kind: "inproceedings" key: "Miranda:2010:EDC:1878921.1878924" - title: "Improving GNU compiler collection infrastructure for streamization" author: - name: "Antoniu Pop" link: "http://www.cri.ensmp.fr/people/apop/" - name: "Sebastian Pop" link: "https://researchr.org/alias/sebastian-pop" - name: " Harsha Jagasia" link: "https://researchr.org/alias/harsha-jagasia" - name: "Jan Sjödin" link: "https://researchr.org/alias/jan-sj%C3%B6din" - name: "Paul H. J. Kelly" link: "https://researchr.org/alias/paul-h.-j.-kelly" year: "2008" month: "June" doi: "10.1.1.142.2023" abstract: "GNU Compiler Collection (GCC) needs a strategy to sup- port future multicore architectures, which will probably include heterogeneous accelerator-like designs with ex- plicit management of scratchpad memories. Some have further restrictions; for example, SIMD has limited syn- chronization capabilities. Some platforms will probably offer hardware support for streaming, transactions, and speculation. The purpose of this paper is to survey and evaluate some automatic and manual techniques for improving support for such targets in GCC. We focus on translation of se- quential code for such platforms, i.e., the translation to task graphs and their communication and memory ac- cess operations. The paper provides an evaluation of the communication library support on an AMD PhenomT M X4 9550 quad-core processor. We use these experiments to tune the automatic task partitioning algorithm imple- mented in GCC. The paper concludes with recommen- dations for strategic developments of GCC to support a stream programming language and improve the auto- matic generation of streamized tasks. " tags: - "programming languages" - "program partitioning" - "translation" - "memory management" - "architecture" - "Stream Computing" - "graph-rewriting" - "survey" - "code generation" - "compiler" - "programming" - "rewriting" - "GCC" - "partitioning" - "rewriting strategies" - "stream processing" researchr: "https://researchr.org/publication/Pop2008" cites: 0 citedby: 0 pages: "77-86" booktitle: "Proceedings of the 2008 GCC Developers' Summit" kind: "inproceedings" key: "Pop2008" - title: "Advances in Parallel-Stage Decoupled Software Pipelining" author: - name: "Feng Li" link: "https://researchr.org/alias/feng-li" - name: "Antoniu Pop" link: "http://www.cri.ensmp.fr/people/apop/" - name: "Albert Cohen" link: "http://www-rocq.inria.fr/~acohen/index.html.fr" year: "2011" abstract: "Decoupled Software Pipelining (DSWP) is a thread partitioning method enabling compilers to extract pipeline parallelism from sequential programs. Parallel Stage DSWP (PS-DSWP) is an extension that also exploits the data parallelism within pipeline filters. This paper presents a new method, inspired from loop distribution, for automatically extracting pipeline and data parallelism from serial programs. We provide a nested/structured partitioning algorithms based on the hierarchy of control dependences, and with the support of a stream extension of OpenMP as a back-end, we use nested-tasks for generating fine grained and structured stream code, without copying the conditional nodes. We use the Single Static Assignment (SSA) form as an intermediate representation, which could easily generate code for multiple producers and multiple consumers and reduce the complexity of building the scalar dependences." tags: - "program partitioning" - "rule-based" - "intermediate representation" - "SSA" - "DSWP" - "parallel programming" - "data-flow programming" - "data-flow" - "compiler" - "GCC" - "partitioning" researchr: "https://researchr.org/publication/Li-WIR-2011" cites: 0 citedby: 0 pages: "29-36" booktitle: "Proceedings of the Workshop on Intermediate Representations" editor: - name: "Florent Bouchez" link: "http://florent.bouchez.free.fr" - name: "Sebastian Hack" link: "https://researchr.org/alias/sebastian-hack" - name: "Eelco Visser" link: "http://eelcovisser.org" kind: "inproceedings" key: "Li-WIR-2011"