{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,12,30]],"date-time":"2025-12-30T23:38:02Z","timestamp":1767137882644,"version":"build-2238731810"},"publisher-location":"Cham","reference-count":26,"publisher":"Springer International Publishing","isbn-type":[{"value":"9783031232190","type":"print"},{"value":"9783031232206","type":"electronic"}],"license":[{"start":{"date-parts":[[2022,1,1]],"date-time":"2022-01-01T00:00:00Z","timestamp":1640995200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"},{"start":{"date-parts":[[2022,1,1]],"date-time":"2022-01-01T00:00:00Z","timestamp":1640995200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2022]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>Code instrumentation is the primary method for collecting fine-grained performance data. As instrumentation introduces an inherent runtime overhead, it is essential to measure only those regions of the code which are most relevant to the analysis. In practice, the typical approach is to define filter lists manually. Prior projects aim to automate this process using static analysis. Specifically, InstRO enables tailored instrumentation via sophisticated user-defined selection of code regions. However, due to the need for whole-program call-graph analysis, its application on large-scale scientific codes is currently impractical. In this work, we present the new instrumentation tool CaPI (short for \u201cCompiler-assisted Performance Instrumentation\u201d), which is targeted towards such large-scale applications. We demonstrate its application on the CFD framework OpenFOAM. Our evaluation shows that a hybrid approach of CaPI and existing profile-guided filtering outperforms profile-guided filtering alone. Furthermore, we identify correctness and usability issues and propose possible avenues to improve CaPI, as well as compiler-assisted instrumentation tools in general.<\/jats:p>","DOI":"10.1007\/978-3-031-23220-6_1","type":"book-chapter","created":{"date-parts":[[2023,1,3]],"date-time":"2023-01-03T02:03:51Z","timestamp":1672711431000},"page":"5-19","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":3,"title":["Compiler-Assisted Instrumentation Selection for\u00a0Large-Scale C++ Codes"],"prefix":"10.1007","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-1641-4342","authenticated-orcid":false,"given":"Sebastian","family":"Kreutzer","sequence":"first","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2020-8939","authenticated-orcid":false,"given":"Christian","family":"Iwainsky","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0002-6330-4816","authenticated-orcid":false,"given":"Jan-Patrick","family":"Lehr","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0003-2711-3032","authenticated-orcid":false,"given":"Christian","family":"Bischof","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2023,1,4]]},"reference":[{"key":"1_CR1","unstructured":"Berris, D.M., Veitch, A., Heintze, N., Anderson, E., Wang, N.: XRay: a function call tracing system (2016). https:\/\/static.googleusercontent.com\/media\/research.google.com\/en\/\/pubs\/archive\/45287.pdf"},{"key":"1_CR2","unstructured":"Bn\u00e0, S., Spisso, I., Olesen, M., Rossi, G.: PETSc4FOAM: a library to plug-in PETSc into the OpenFOAM Framework. PRACE White paper (2020)"},{"issue":"4","key":"1_CR3","doi-asserted-by":"publisher","first-page":"317","DOI":"10.1177\/109434200001400404","volume":"14","author":"BR Buck","year":"2000","unstructured":"Buck, B.R.: An API for runtime code patching. Int. J. High Perform. Comput. Appl. 14(4), 317\u2013329 (2000). https:\/\/doi.org\/10.1177\/109434200001400404","journal-title":"Int. J. High Perform. Comput. Appl."},{"key":"1_CR4","doi-asserted-by":"publisher","unstructured":"Calotoiu, A., et al.: Fast multi-parameter performance modeling. In: 2016 IEEE International Conference on Cluster Computing (CLUSTER), pp. 172\u2013181. IEEE, September 2016. https:\/\/doi.org\/10.1109\/CLUSTER.2016.57","DOI":"10.1109\/CLUSTER.2016.57"},{"key":"1_CR5","doi-asserted-by":"publisher","unstructured":"Calotoiu, A., Hoefler, T., Poke, M., Wolf, F.: Using automated performance modeling to find scalability bugs in complex codes. In: Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis, SC 2013, pp. 45:1\u201345:12. ACM, New York (2013). https:\/\/doi.org\/10.1145\/2503210.2503277","DOI":"10.1145\/2503210.2503277"},{"key":"1_CR6","doi-asserted-by":"publisher","unstructured":"Copik, M., Calotoiu, A., Grosser, T., Wicki, N., Wolf, F., Hoefler, T.: Extracting clean performance models from tainted programs. In: Proceedings of the 26th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP 2021, pp. 403\u2013417. ACM, New York (2021). https:\/\/doi.org\/10.1145\/3437801.3441613","DOI":"10.1145\/3437801.3441613"},{"key":"1_CR7","unstructured":"Daniel, A.: Contributors: CLOC (2006\u20132020). https:\/\/github.com\/AlDanial\/cloc"},{"issue":"5","key":"1_CR8","doi-asserted-by":"publisher","first-page":"83","DOI":"10.1109\/MCISE.2003.1225867","volume":"5","author":"P Dubois","year":"2003","unstructured":"Dubois, P., Epperly, T., Kumfert, G.: Why Johnny can\u2019t build [portable scientific software]. Comput. Sci. Eng. 5(5), 83\u201388 (2003). https:\/\/doi.org\/10.1109\/MCISE.2003.1225867","journal-title":"Comput. Sci. Eng."},{"key":"1_CR9","unstructured":"Free Software Foundation Inc: GCC Program Instrumentation Options (2022). https:\/\/gcc.gnu.org\/onlinedocs\/gcc\/Instrumentation-Options.html"},{"key":"1_CR10","doi-asserted-by":"publisher","unstructured":"Iwainsky, C.: InstRO: a component-based toolbox for performance instrumentation. Ph.D. thesis, TU Darmstadt (2015). https:\/\/doi.org\/10.2370\/9783844045628","DOI":"10.2370\/9783844045628"},{"key":"1_CR11","doi-asserted-by":"publisher","unstructured":"Iwainsky, C., Bischof, C.: Calltree-controlled instrumentation for low-overhead survey measurements. In: Proceedings - 2016 IEEE 30th International Parallel and Distributed Processing Symposium, IPDPS 2016, pp. 1668\u20131677. IEEE, July 2016. https:\/\/doi.org\/10.1109\/IPDPSW.2016.54","DOI":"10.1109\/IPDPSW.2016.54"},{"key":"1_CR12","doi-asserted-by":"publisher","unstructured":"Kn\u00fcpfer, A., et al.: Score-P: a joint performance measurement run-time infrastructure for Periscope, Scalasca, TAU, and Vampir. In: Proceedings of the 5th International Workshop on Parallel Tools for High Performance Computing 2011, pp. 79\u201391 (2012). https:\/\/doi.org\/10.1007\/978-3-642-31476-6_7","DOI":"10.1007\/978-3-642-31476-6_7"},{"key":"1_CR13","doi-asserted-by":"publisher","unstructured":"Lattner, C., Adve, V.: LLVM: a compilation framework for lifelong program analysis & transformation. In: International Symposium on Code Generation and Optimization, CGO 2004, pp. 75\u201386 (2004). https:\/\/doi.org\/10.1109\/CGO.2004.1281665","DOI":"10.1109\/CGO.2004.1281665"},{"key":"1_CR14","doi-asserted-by":"publisher","unstructured":"Lehr, J.P., Bischof, C., Dewald, F., Mantel, H., Norouzi, M., Wolf, F.: Tool-supported mini-app extraction to facilitate program analysis and parallelization. In: 50th International Conference on Parallel Processing. ACM, New York (2021). https:\/\/doi.org\/10.1145\/3472456.3472521","DOI":"10.1145\/3472456.3472521"},{"key":"1_CR15","doi-asserted-by":"publisher","unstructured":"Lehr, J.P., Calotoiu, A., Bischof, C., Wolf, F.: Automatic instrumentation refinement for empirical performance modeling. In: Proceedings of ProTools 2019: Workshop on Programming and Performance Visualization Tools - Held in conjunction with SC 2019: The International Conference for High Performance Computing, Networking, Storage and Analysis, pp. 40\u201347. IEEE, November 2019. https:\/\/doi.org\/10.1109\/ProTools49597.2019.00011","DOI":"10.1109\/ProTools49597.2019.00011"},{"key":"1_CR16","doi-asserted-by":"publisher","unstructured":"Lehr, J.P., H\u00fcck, A., Bischof, C.: PIRA: performance instrumentation refinement automation. In: AI-SEPS 2018 - Proceedings of the 5th ACM SIGPLAN International Workshop on Artificial Intelligence and Empirical Methods for Software Engineering and Parallel Computing Systems, Co-located with SPLASH 2018, pp. 1\u201310. ACM, New York, November 2018. https:\/\/doi.org\/10.1145\/3281070.3281071","DOI":"10.1145\/3281070.3281071"},{"key":"1_CR17","doi-asserted-by":"publisher","unstructured":"Lehr, J.P., H\u00fcck, A., Fischler, Y., Bischof, C.: MetaCG: annotated call-graphs to facilitate whole-program analysis. In: TAPAS 2020 - Proceedings of the 11th ACM SIGPLAN International Workshop on Tools for Automatic Program Analysis, Co-located with SPLASH 2020, pp. 3\u20139. ACM, New York, November 2020. https:\/\/doi.org\/10.1145\/3427764.3428320","DOI":"10.1145\/3427764.3428320"},{"key":"1_CR18","doi-asserted-by":"publisher","unstructured":"Lehr, J.P., Iwainsky, C., Bischof, C.: The influence of HPCToolkit and score-p on hardware performance counters. In: Proceedings of the 4th ACM SIGPLAN International Workshop on Software Engineering for Parallel Systems, SEPS 2017, pp. 21\u201330. ACM, New York (2017). https:\/\/doi.org\/10.1145\/3141865.3141869","DOI":"10.1145\/3141865.3141869"},{"key":"1_CR19","doi-asserted-by":"publisher","unstructured":"Lindlan, K.A., et al.: A tool framework for static and dynamic analysis of object-oriented software with templates. In: Proceedings of the ACM\/IEEE 2000 Conference on Supercomputing, p. 49, November 2000. https:\/\/doi.org\/10.1109\/SC.2000.10052","DOI":"10.1109\/SC.2000.10052"},{"key":"1_CR20","unstructured":"Message Passing Interface Forum: MPI: a message-passing interface standard version 3.1 (2015). https:\/\/www.mpi-forum.org\/docs\/mpi-3.1\/mpi31-report.pdf"},{"key":"1_CR21","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"65","DOI":"10.1007\/978-3-642-23400-2_7","volume-title":"Euro-Par 2011 Parallel Processing","author":"J Mu\u00dfler","year":"2011","unstructured":"Mu\u00dfler, J., Lorenz, D., Wolf, F.: Reducing the overhead of direct application instrumentation using prior static analysis. In: Jeannot, E., Namyst, R., Roman, J. (eds.) Euro-Par 2011. LNCS, vol. 6852, pp. 65\u201376. Springer, Heidelberg (2011). https:\/\/doi.org\/10.1007\/978-3-642-23400-2_7"},{"key":"1_CR22","unstructured":"OpenCFD: OpenFOAM v2106. https:\/\/develop.openfoam.com\/Development\/openfoam\/-\/tree\/OpenFOAM-v2106"},{"key":"1_CR23","unstructured":"OpenFOAM Project: OpenFOAM benchmark problems. https:\/\/develop.openfoam.com\/committees\/hpc\/-\/tree\/develop\/"},{"key":"1_CR24","unstructured":"Sebastian Kreutzer: Score-P Symbol Injector Library (2022). https:\/\/github.com\/sebastiankreutzer\/scorep-symbol-injector"},{"issue":"2","key":"1_CR25","doi-asserted-by":"publisher","first-page":"287","DOI":"10.1177\/1094342006064482","volume":"20","author":"SS Shende","year":"2006","unstructured":"Shende, S.S.: The TAU parallel performance system. Int. J. High Perform. Comput. Appl. 20(2), 287\u2013311 (2006). https:\/\/doi.org\/10.1177\/1094342006064482","journal-title":"Int. J. High Perform. Comput. Appl."},{"key":"1_CR26","doi-asserted-by":"publisher","unstructured":"Weller, H.G., Tabor, G., Jasak, H., Fureby, C.: A tensorial approach to computational continuum mechanics using object-oriented techniques. Comput. Phys. 12(6) (1998). https:\/\/doi.org\/10.1063\/1.168744","DOI":"10.1063\/1.168744"}],"updated-by":[{"DOI":"10.1007\/978-3-031-23220-6_28","type":"correction","label":"Correction","source":"publisher","updated":{"date-parts":[[2023,5,9]],"date-time":"2023-05-09T00:00:00Z","timestamp":1683590400000}}],"container-title":["Lecture Notes in Computer Science","High Performance Computing. ISC High Performance 2022 International Workshops"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-031-23220-6_1","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,5,8]],"date-time":"2023-05-08T09:08:57Z","timestamp":1683536937000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-031-23220-6_1"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022]]},"ISBN":["9783031232190","9783031232206"],"references-count":26,"URL":"https:\/\/doi.org\/10.1007\/978-3-031-23220-6_1","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2022]]},"assertion":[{"value":"4 January 2023","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"9 May 2023","order":2,"name":"change_date","label":"Change Date","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"Correction","order":3,"name":"change_type","label":"Change Type","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"A correction has been published.","order":4,"name":"change_details","label":"Change Details","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"ISC High Performance","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Conference on High Performance Computing","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Hamburg","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Germany","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2022","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"29 May 2022","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2 June 2022","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"37","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"supercomputing2022","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Double-blind","order":1,"name":"type","label":"Type","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"Linklings","order":2,"name":"conference_management_system","label":"Conference Management System","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"53","order":3,"name":"number_of_submissions_sent_for_review","label":"Number of Submissions Sent for Review","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"18","order":4,"name":"number_of_full_papers_accepted","label":"Number of Full Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"0","order":5,"name":"number_of_short_papers_accepted","label":"Number of Short Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"34% - The value is computed by the equation \"Number of Full Papers Accepted \/ Number of Submissions Sent for Review * 100\" and then rounded to a whole number.","order":6,"name":"acceptance_rate_of_full_papers","label":"Acceptance Rate of Full Papers","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"4","order":7,"name":"average_number_of_reviews_per_paper","label":"Average Number of Reviews per Paper","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"5","order":8,"name":"average_number_of_papers_per_reviewer","label":"Average Number of Papers per Reviewer","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"No","order":9,"name":"external_reviewers_involved","label":"External Reviewers Involved","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"For the workshops a 27 papers have been accepted for publication out of a total of 43 submissions.","order":10,"name":"additional_info_on_review_process","label":"Additional Info on Review Process","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}}]}}