Abstract

ROOT has several features which interact with libraries and require implicit header inclusion. This can be triggered by reading or writing data on disk, or user actions at the prompt. Often, the headers are immutable, and reparsing is redundant. C++ Modules are designed to minimize the reparsing of the same header content by providing an efficient on-disk representation of C++ Code. ROOT has released a C++ Modules-aware technology preview, which intends to become the default for the ROOT 6.20 release.In this paper, we will summarize our experience with migrating C++ Modules to LHC experiment’s software codebases, particularly for CMS software (CMSSW). We outline the challenges with adopting C++ Modules for CMSSW, including the integration of C++ Modules support in the CMS build system and we will evaluate the CMSSW performance benefits.

Highlights

  • In High Energy Physics (HEP), experiments such as CMS, produce a large amount of data each second, and we expect to have even more data generated during the Hi-Lumi LHC [1] era

  • The performance study was conducted on the CMSSW build server, where all the CMS software is continuously integrated

  • ROOT Master is the case where ROOT and CMSSW built without C++ Modules, and serves as a baseline

Read more

Summary

Introduction

In High Energy Physics (HEP), experiments such as CMS, produce a large amount of data each second, and we expect to have even more data generated during the Hi-Lumi LHC [1] era. Software for HEP is always striving to archive better performance, which could improve the users data analysis as well the cost optimisation for the HEP resources used in the data centers. ROOT [2] is a core software used in HEP for data analysis and as a backend for LHC experiment’s software such as CMSSW. The cost of header re-parsing can be negligible in small to medium size codebases, but can be critical in larger codebases. In this case compiletime scalability will be affected, even though it will not affect the programs at runtime. ROOT is different – its C++ interpreter Cling [10] processes code at program execution time and avoidance of redundant content re-parsing yields better runtime performance

Background
Header Sanitizing
Modularizing External Dependencies
Automatic Generation of Modulemap Files and Virtual File System Overlay File
Preliminary Performance Results
Conclusion
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.