{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,10]],"date-time":"2026-01-10T07:56:05Z","timestamp":1768031765599,"version":"3.49.0"},"reference-count":58,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA1","license":[{"start":{"date-parts":[[2024,4,29]],"date-time":"2024-04-29T00:00:00Z","timestamp":1714348800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"name":"NSF","award":["CCF-2107257, CCF-2118708, CCF-2107042,CCF-2119069,CCF-1908488"],"award-info":[{"award-number":["CCF-2107257, CCF-2118708, CCF-2107042,CCF-2119069,CCF-1908488"]}]},{"name":"DOE U.S. Department of Energy","award":["DE-AC02-06CH11357,DE-SC0022138,DE-SC0022268"],"award-info":[{"award-number":["DE-AC02-06CH11357,DE-SC0022138,DE-SC0022268"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2024,4,29]]},"abstract":"<jats:p>Memory profiling captures programs\u2019 dynamic memory behavior, assisting programmers in debugging, tuning, and enabling advanced compiler optimizations like speculation-based automatic parallelization. As each use case demands its unique program trace summary, various memory profiler types have been developed. Yet, designing practical memory profilers often requires extensive compiler expertise, adeptness in program optimization, and significant implementation effort. This often results in a void where aspirations for fast and robust profilers remain unfulfilled. To bridge this gap, this paper presents PROMPT, a framework for streamlined development of fast memory profilers. With PROMPT, developers need only specify profiling events and define the core profiling logic, bypassing the complexities of custom instrumentation and intricate memory profiling components and optimizations. Two state-of-the-art memory profilers were ported with PROMPT where all features preserved. By focusing on the core profiling logic, the code was reduced by more than 65% and the profiling overhead was improved by 5.3\u00d7 and 7.1\u00d7 respectively. To further underscore PROMPT\u2019s impact, a tailored memory profiling workflow was constructed for a sophisticated compiler optimization client. In 570 lines of code, this redesigned workflow satisfies the client\u2019s memory profiling needs while achieving more than 90% reduction in profiling overhead and improved robustness compared to the original profilers.<\/jats:p>","DOI":"10.1145\/3649827","type":"journal-article","created":{"date-parts":[[2024,4,29]],"date-time":"2024-04-29T17:53:50Z","timestamp":1714413230000},"page":"449-473","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["PROMPT: A Fast and Extensible Memory Profiling Framework"],"prefix":"10.1145","volume":"8","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-8297-7573","authenticated-orcid":false,"given":"Ziyang","family":"Xu","sequence":"first","affiliation":[{"name":"Princeton University, Princeton, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-0765-7913","authenticated-orcid":false,"given":"Yebin","family":"Chon","sequence":"additional","affiliation":[{"name":"Princeton University, Princeton, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-8242-0743","authenticated-orcid":false,"given":"Yian","family":"Su","sequence":"additional","affiliation":[{"name":"Northwestern University, Evanston, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-1450-6817","authenticated-orcid":false,"given":"Zujun","family":"Tan","sequence":"additional","affiliation":[{"name":"Princeton University, Princeton, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4716-9332","authenticated-orcid":false,"given":"Sotiris","family":"Apostolakis","sequence":"additional","affiliation":[{"name":"Google, New York, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9806-7016","authenticated-orcid":false,"given":"Simone","family":"Campanoni","sequence":"additional","affiliation":[{"name":"Northwestern University, Evanston, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-3327-1803","authenticated-orcid":false,"given":"David I.","family":"August","sequence":"additional","affiliation":[{"name":"Princeton University, Princeton, USA"}]}],"member":"320","published-online":{"date-parts":[[2024,4,29]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"Abseil Team. 2023. Abseil\/Abseil-CPP: Abseil Common Libraries (C++). https:\/\/github.com\/abseil\/abseil-cpp"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/3373376.3378458"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/3385412.3386028"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2007.20"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/2365864.2151043"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/3185768.3185771"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/2854038.2854044"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-24723-4_5"},{"key":"e_1_2_1_9_1","unstructured":"D. A. Connors. 1997. Memory Profiling for Directing Data Speculative Optimizations and Scheduling. http:\/\/impact.crhc.illinois.edu\/Shared\/Thesis\/dconnors-thesis.pdf"},{"key":"e_1_2_1_10_1","unstructured":"Albert Danial. 2021. cloc: v1.92. https:\/\/github.com\/AlDanial\/cloc"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/3579990.3580011"},{"key":"e_1_2_1_12_1","unstructured":"DynamoRio Team. 2023. drcachesim. https:\/\/dynamorio.org\/page_drcachesim.html Publication Title: Tracing and analysis framework"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.1997.645817"},{"key":"e_1_2_1_14_1","unstructured":"GCC Team. 2023. GCC the GNU compiler collection. https:\/\/gcc.gnu.org\/"},{"key":"e_1_2_1_15_1","unstructured":"Gregory Popovitch. 2023. GREG7MDP\/parallel-hashmap: A family of header-only very fast and memory-friendly hashmap and BTREE containers.. https:\/\/github.com\/greg7mdp\/parallel-hashmap"},{"key":"e_1_2_1_16_1","volume-title":"Proceedings of the Eigth Workshop on Explicitly Parallel Instruction Computer Architectures and Compiler Technology (EPIC). https:\/\/liberty.princeton.edu\/Publications\/epic10_queues.pdf","author":"Jablin Thomas B","year":"2010","unstructured":"Thomas B Jablin, Yun Zhang, James A Jablin, Jialu Huang, Hanjun Kim, and David I August. 2010. Liberty queues for epic architectures. In Proceedings of the Eigth Workshop on Explicitly Parallel Instruction Computer Architectures and Compiler Technology (EPIC). https:\/\/liberty.princeton.edu\/Publications\/epic10_queues.pdf"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/2254064.2254107"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2012.47"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1109\/HiPC.2017.00045"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2010.49"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1109\/IPDPSW.2013.231"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/71.238302"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2004.1281665"},{"key":"e_1_2_1_24_1","unstructured":"Liberty Research Group. 2022. Collaborative Parallelization Framework Compiler. https:\/\/github.com\/PrincetonUniversity\/cpf"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1122971.1122997"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/1064978.1065034"},{"key":"e_1_2_1_27_1","volume-title":"Lampview: A loop-aware toolset for facilitating parallelization. https:\/\/liberty.princeton.edu\/Publications\/mastersthesis_tmason.pdf","author":"Mason Thomas","year":"2009","unstructured":"Thomas Mason. 2009. Lampview: A loop-aware toolset for facilitating parallelization. https:\/\/liberty.princeton.edu\/Publications\/mastersthesis_tmason.pdf"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-57675-2_1"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2007.35"},{"key":"e_1_2_1_30_1","unstructured":"mTrace Team. 2013. MTRACE. http:\/\/lacasa.uah.edu\/index.php\/software-data\/mtrace-tools-and-traces"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/1254810.1254820"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/1250734.1250746"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2019.8661201"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","unstructured":"Arun Kejariwal Peng Wu and Calin Cascaval. 2008. Compiler-Driven Dependence Profiling to Guide Program Parallelization. In LCPC. 232\u2013248. https:\/\/doi.org\/10.1007\/978-3-540-89740-8_16 10.1007\/978-3-540-89740-8_16","DOI":"10.1007\/978-3-540-89740-8_16"},{"key":"e_1_2_1_35_1","unstructured":"PROMPT Team. 2024. PROMPT memory profiling system. https:\/\/github.com\/PrincetonUniversity\/PROMPT"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2004.1281684"},{"key":"e_1_2_1_37_1","volume-title":"Proceedings of the Workshop on Programming Models for Ubiquitous Parallelism (PMUP). 1\u20135. https:\/\/liberty.princeton.edu\/Publications\/pmup06_pmtsync.pdf","author":"Rangan Ram","year":"2006","unstructured":"Ram Rangan and David I August. 2006. Amortizing software queue overhead for pipelined interthread communication. In Proceedings of the Workshop on Programming Models for Ubiquitous Parallelism (PMUP). 1\u20135. https:\/\/liberty.princeton.edu\/Publications\/pmup06_pmtsync.pdf"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","unstructured":"L. Rauchwerger and D.A. Padua. 1999. The LRPD test: speculative run-time parallelization of loops with privatization and reduction parallelization. 10 2 (1999) 160\u2013180. issn:10459219 https:\/\/doi.org\/10.1109\/71.752782 10.1109\/71.752782","DOI":"10.1109\/71.752782"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-61580-6_20"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1109\/IISWC.2012.6402902"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/778559.778561"},{"key":"e_1_2_1_42_1","unstructured":"Konstantin Serebryany Derek Bruening Alexander Potapenko and Dmitry Vyukov. 2012. AddressSanitizer: A Fast Address Sanity Checker. In 2012 USENIX annual technical conference (USENIX ATC 12). https:\/\/www.usenix.org\/conference\/ usenixfederatedconferencesweek\/addresssanitizer-fast-address- sanity-checker"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/342001.339650"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2015.7054186"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1109\/ISED.2012.11"},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/2909437.2909454"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/1275937.1275943"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2007.38"},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/2259016.2259041"},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2007.37"},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/3519939.3523428"},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2004.37"},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","unstructured":"Ziyang Xu Yebin Chon Yian Su Zujun Tan Sotiris Apostolakis Simone Campanoni and David August. 2024. Artifact for Paper \"PROMPT: A Fast and Extensible Memory Profiling Framework\". https:\/\/doi.org\/10.5281\/zenodo.10783906 10.5281\/zenodo.10783906","DOI":"10.5281\/zenodo.10783906"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/2304576.2304584"},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/2338965.2336756"},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2009.15"},{"key":"e_1_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/1837855.1806667"},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/1152154.1152180"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3649827","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3649827","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T22:54:06Z","timestamp":1750287246000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3649827"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,4,29]]},"references-count":58,"journal-issue":{"issue":"OOPSLA1","published-print":{"date-parts":[[2024,4,29]]}},"alternative-id":["10.1145\/3649827"],"URL":"https:\/\/doi.org\/10.1145\/3649827","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,4,29]]},"assertion":[{"value":"2024-04-29","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}