{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,10,15]],"date-time":"2026-10-15T16:19:00Z","timestamp":1792081140947,"version":"4.4.0"},"reference-count":22,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2022,3,8]],"date-time":"2022-03-08T00:00:00Z","timestamp":1646697600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Archit. Code Optim."],"published-print":{"date-parts":[[2022,6,30]]},"abstract":"<jats:p>We investigate the programming of reactive systems combining closed-loop control with performance-intensive components such as Machine Learning (ML). Reactive control systems are often safety-critical and associated with real-time execution requirements, a domain of predilection for synchronous programming languages. Extending the high levels of assurance found in reactive control systems to computationally intensive code remains an open issue. We tackle it by unifying concepts and algorithms from synchronous languages with abstractions commonly found in general-purpose and ML compilers. This unification across embedded and high-performance computing enables a high degree of reuse of compiler abstractions and code. We first recall commonalities between dataflow synchronous languages and the static single assignment (SSA) form of general-purpose\/ML compilers. We highlight the key mechanisms of synchronous languages that SSA does not cover\u2014denotational concepts such as synchronizing computations with an external time base, cyclic and reactive I\/O, as well as the operational notions of relaxing control flow dominance and the modeling of absent values. We discover that initialization-related static analyses and code generation aspects can be fully decoupled from other aspects of synchronous semantics such as memory management and causality analysis, the latter being covered by existing dominance-based algorithms of SSA-form compilers. We show how the SSA form can be seamlessly extended to enable all SSA-based transformations and optimizations on reactive programs with synchronous concurrency. We derive a compilation flow suitable for both high-performance and reactive aspects of a control application, by embedding the Lustre dataflow synchronous language into the SSA-based MLIR\/LLVM compiler infrastructure. This allows the modeling of signal processing and deep neural network inference in the (closed) loop of feedback-directed control systems. With only minor efforts leveraging the MLIR infrastructure, the generated code matches or outperforms state-of-the-art synchronous language compilers on computationally intensive ML applications.<\/jats:p>","DOI":"10.1145\/3506706","type":"journal-article","created":{"date-parts":[[2022,3,8]],"date-time":"2022-03-08T09:01:51Z","timestamp":1646730111000},"page":"1-25","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["Weaving Synchronous Reactions into the Fabric of SSA-form Compilers"],"prefix":"10.1145","volume":"19","author":[{"given":"Hugo","family":"Pompougnac","sequence":"first","affiliation":[{"name":"Inria, France"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Ulysse","family":"Beaugnon","sequence":"additional","affiliation":[{"name":"Google, France"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Albert","family":"Cohen","sequence":"additional","affiliation":[{"name":"Google, France"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Dumitru Potop","family":"Butucaru","sequence":"additional","affiliation":[{"name":"Inria, France"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2022,3,8]]},"reference":[{"key":"e_1_3_2_2_2","unstructured":"ARINC. 2010. ARINC 653: Avionics Application Software Standard Interface. Part 1\u2014Required Services. Revision 3."},{"key":"e_1_3_2_3_2","doi-asserted-by":"publisher","DOI":"10.1109\/JPROC.2002.805826"},{"key":"e_1_3_2_4_2","volume-title":"Proceedings of the RTSS","author":"Bergerand J. L.","year":"1985","unstructured":"J. L. Bergerand, P. Caspi, D. Pilaud, N. Halbwachs, and E. Pilaud. 1985. Outline of a real time data flow language. In Proceedings of the RTSS."},{"key":"e_1_3_2_5_2","doi-asserted-by":"publisher","DOI":"10.1145\/1375657.1375674"},{"key":"e_1_3_2_6_2","unstructured":"Uday Bondhugula. 2020. High Performance Code Generation in MLIR: An Early Case Study with GEMM. Retrieved from https:\/\/arXiv:2003.00532."},{"key":"e_1_3_2_7_2","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062358"},{"key":"e_1_3_2_8_2","doi-asserted-by":"publisher","DOI":"10.1109\/PACT.1999.807561"},{"key":"e_1_3_2_9_2","doi-asserted-by":"publisher","DOI":"10.1145\/115372.115320"},{"key":"e_1_3_2_10_2","doi-asserted-by":"publisher","DOI":"10.1145\/3178372.3179503"},{"key":"e_1_3_2_11_2","doi-asserted-by":"publisher","DOI":"10.1145\/3328799"},{"key":"e_1_3_2_12_2","doi-asserted-by":"publisher","DOI":"10.1145\/2248418.2248426"},{"key":"e_1_3_2_13_2","volume-title":"Proceedings of the Memocode","author":"Halbwachs N.","year":"2005","unstructured":"N. Halbwachs. 2005. A synchronous language at work: The story of Lustre. In Proceedings of the Memocode."},{"key":"e_1_3_2_14_2","doi-asserted-by":"publisher","DOI":"10.1109\/CVPR.2016.90"},{"key":"e_1_3_2_15_2","doi-asserted-by":"publisher","DOI":"10.1162\/neco.1997.9.8.1735"},{"key":"e_1_3_2_16_2","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062343"},{"key":"e_1_3_2_17_2","doi-asserted-by":"publisher","DOI":"10.1109\/TC.2010.246"},{"key":"e_1_3_2_18_2","unstructured":"https:\/\/mlir.llvm.org\/ 2020 Multi-level Intermediate Representation Compiler Framework (MLIR)"},{"key":"e_1_3_2_19_2","doi-asserted-by":"publisher","DOI":"10.1145\/93548.93578"},{"key":"e_1_3_2_20_2","doi-asserted-by":"publisher","DOI":"10.5555\/1534411"},{"key":"e_1_3_2_21_2","doi-asserted-by":"publisher","DOI":"10.1145\/73560.73562"},{"key":"e_1_3_2_22_2","unstructured":"SSA. 2020. Static Single Assignment Book (in progress). Retrieved from http:\/\/ssabook.gforge.inria.fr\/latest\/book.pdf."},{"key":"e_1_3_2_23_2","unstructured":"The TensorFlow Authors. 2017. Implementation of Control Flow in TensorFlow. Retrievd on 1 Oct. 2021 from http:\/\/download.tensorflow.org\/paper\/white_paper_tf_control_flow_implementation_2017_11_1.pdf."}],"container-title":["ACM Transactions on Architecture and Code Optimization"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3506706","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3506706","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:11:50Z","timestamp":1750191110000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3506706"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,3,8]]},"references-count":22,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2022,6,30]]}},"alternative-id":["10.1145\/3506706"],"URL":"https:\/\/doi.org\/10.1145\/3506706","relation":{},"ISSN":["1544-3566","1544-3973"],"issn-type":[{"value":"1544-3566","type":"print"},{"value":"1544-3973","type":"electronic"}],"subject":[],"published":{"date-parts":[[2022,3,8]]},"assertion":[{"value":"2021-08-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2021-12-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2022-03-08","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}