{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,20]],"date-time":"2025-06-20T04:08:53Z","timestamp":1750392533412,"version":"3.41.0"},"reference-count":40,"publisher":"Association for Computing Machinery (ACM)","issue":"FSE","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. ACM Softw. Eng."],"published-print":{"date-parts":[[2025,6,19]]},"abstract":"<jats:p>Compilers are crucial software tools that usually convert programs in high-level languages into machine code. A compiler provides hundreds of optimizations to improve the performance of the compiled code, which are controlled by enabled or disabled optimization flags. However, the vast number of combinations of these flags makes it extremely challenging to select the desired settings for compiler optimization flags (i.e., an optimization sequence) for a given target program. In the literature, many auto-tuning techniques have been proposed to select a desired optimization sequence via different strategies across the entire optimization space. However, due to the huge optimization space, these techniques commonly suffer from the widely recognized efficiency problem. To address this problem, in this paper, we propose a preference-driven selection approach PDCAT, which reduces the search space of optimization sequences through three components. In particular, PDCAT first identifies combined optimizations based on compiler documentation to exclude optimization sequences violating the combined constraints, and then categorizes the optimizations into a common optimization set (whose optimization flags are fixed) and an exploration set containing the remaining optimizations. Finally, within the search process, PDCAT assigns distinct enable probabilities to the explored optimization flags and finally selects a desired optimization sequence. The former two components reduce the search space by removing invalid optimization sequences and fixing some optimization flags, whereas the latter performs a biased search in the search space. To evaluate the performance of the proposed approach PDCAT, we conducted an extensive experimental study on the latest version of the GCC compiler with two widely used benchmarks, cBench and PolyBench. The results show that PDCAT significantly outperforms the four compared techniques, including the state-of-art technique SRTuner. Moreover, each component of PDCAT not only contributes to its performance, but also improves the acceleration performance of the compared techniques.<\/jats:p>","DOI":"10.1145\/3715756","type":"journal-article","created":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T15:15:34Z","timestamp":1750346134000},"page":"847-867","source":"Crossref","is-referenced-by-count":0,"title":["PDCAT: Preference-Driven Compiler Auto-tuning"],"prefix":"10.1145","volume":"2","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-8676-4017","authenticated-orcid":false,"given":"Mingxuan","family":"Zhu","sequence":"first","affiliation":[{"name":"Peking University, Beijing, China"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-9990-9120","authenticated-orcid":false,"given":"Zeyu","family":"Sun","sequence":"additional","affiliation":[{"name":"Institute of Software at Chinese Academy of Sciences, Beijing, China"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-8295-303X","authenticated-orcid":false,"given":"Dan","family":"Hao","sequence":"additional","affiliation":[{"name":"Peking University, Beijing, China"}]}],"member":"320","published-online":{"date-parts":[[2025,6,19]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2006.37"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/997163.997196"},{"key":"e_1_2_1_3_1","volume-title":"Bayesian data analysis","author":"Andrews Mark","unstructured":"Mark Andrews and Thom Baguley. 2017. Bayesian data analysis. The Cambridge encyclopedia of child development, 165\u2013169."},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/2628071.2628092"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/3124452"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/2928270"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1109\/ESTIMedia.2014.6962349"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-71489-9"},{"key":"e_1_2_1_9_1","unstructured":"\"cBench\". 2024. https:\/\/ctuning.org\/wiki\/index.php\/CTools: CBench"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/3338906.3338957"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/3363562"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1109\/ASE.2019.00037"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE43902.2021.00110"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2355585.2355594"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/1454115.1454122"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO53902.2022.9741258"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/2908961.2931696"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF00994016"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/1356058.1356080"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1109\/FCCM.2019.00049"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.5555\/1622737.1622748"},{"key":"e_1_2_1_22_1","doi-asserted-by":"crossref","unstructured":"Toru Kisuki P Knijnenburg M O\u2019Boyle and H Wijshoff. 2002. Iterative compilation in program optimization. Citeseer.","DOI":"10.1007\/3-540-45874-3_10"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1002\/wcs.72"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/3124452"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1109\/IMIS.2014.26"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1109\/APCSAC.2008.4625477"},{"key":"e_1_2_1_27_1","volume-title":"Scheduling straight-line code using reinforcement learning and rollouts. Advances in neural information processing Systems, 11","author":"McGovern Amy","year":"1998","unstructured":"Amy McGovern and J Moss. 1998. Scheduling straight-line code using reinforcement learning and rollouts. Advances in neural information processing Systems, 11 (1998), http:\/\/papers.nips.cc\/paper\/1557-scheduling-straight-line-code-using-reinforcement-learning-and-rollouts"},{"key":"e_1_2_1_28_1","volume-title":"International conference on machine learning. 2430\u20132439","author":"Mirhoseini Azalia","year":"2017","unstructured":"Azalia Mirhoseini, Hieu Pham, Quoc V Le, Benoit Steiner, Rasmus Larsen, Yuefeng Zhou, Naveen Kumar, Mohammad Norouzi, Samy Bengio, and Jeff Dean. 2017. Device placement optimization with reinforcement learning. In International conference on machine learning. 2430\u20132439. http:\/\/proceedings.mlr.press\/v70\/mirhoseini17a.html"},{"key":"e_1_2_1_29_1","volume-title":"Dynamic bayesian networks: representation, inference and learning","author":"Murphy Kevin Patrick","unstructured":"Kevin Patrick Murphy. 2002. Dynamic bayesian networks: representation, inference and learning. University of California, Berkeley."},{"key":"e_1_2_1_30_1","unstructured":"Andrew Ng. 2018. Machine learning yearning: Technical strategy for AI engineers in the era of deep learning."},{"key":"e_1_2_1_31_1","unstructured":"\"Numpy\". 2024. https:\/\/numpy.org"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10766-013-0241-1"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO53902.2022.9741263"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-78133-4_15"},{"key":"e_1_2_1_35_1","unstructured":"\"PolyBench\". 2024. https:\/\/sourceforge.net\/p\/polybench\/wiki\/Home\/"},{"key":"e_1_2_1_36_1","unstructured":"\"GNU Project\". 2024. https:\/\/gcc.gnu.org\/releases.html"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-81-322-0491-6_55"},{"key":"e_1_2_1_38_1","unstructured":"\"Available Website\". 2024. https:\/\/github.com\/fse2025any\/PDCAT"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1109\/ASE56229.2023.00209"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/3640330"}],"container-title":["Proceedings of the ACM on Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3715756","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T15:23:04Z","timestamp":1750346584000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3715756"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,6,19]]},"references-count":40,"journal-issue":{"issue":"FSE","published-print":{"date-parts":[[2025,6,19]]}},"alternative-id":["10.1145\/3715756"],"URL":"https:\/\/doi.org\/10.1145\/3715756","relation":{},"ISSN":["2994-970X"],"issn-type":[{"value":"2994-970X","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,6,19]]}}}