Do you want to publish a course? Click here

C++ Modules in ROOT and Beyond

56   0   0.0 ( 0 )
 Added by Oksana Shadura
 Publication date 2020
and research's language is English




Ask ChatGPT about the research

C++ Modules come in C++20 to fix the long-standing build scalability problems in the language. They provide an io-efficient, on-disk representation capable to reduce build times and peak memory usage. ROOT employs the C++ modules technology further in the ROOT dictionary system to improve its performance and reduce the memory footprint. ROOT with C++ Modules was released as a technology preview in fall 2018, after intensive development during the last few years. The current state is ready for production, however, there is still room for performance optimizations. In this talk, we show the roadmap for making the technology default in ROOT. We demonstrate a global module indexing optimization which allows reducing the memory footprint dramatically for many workflows. We will report user feedback on the migration to ROOT with C++ Modules.



rate research

Read More

98 - Yuka Takahashi 2018
ROOT is a data analysis framework broadly used in and outside of High Energy Physics (HEP). Since HEP software frameworks always strive for performance improvements, ROOT was extended with experimental support of runtime C++ Modules. C++ Modules are designed to improve the performance of C++ code parsing. C++ Modules offers a promising way to improve ROOTs runtime performance by saving the C++ header parsing time which happens during ROOT runtime. This paper presents the results and challenges of integrating C++ Modules into ROOT.
The ROOT software framework is foundational for the HEP ecosystem, providing capabilities such as IO, a C++ interpreter, GUI, and math libraries. It uses object-oriented concepts and build-time components to layer between them. We believe additional layering formalisms will benefit ROOT and its users. We present the modularization strategy for ROOT which aims to formalize the description of existing source components, making available the dependencies and other metadata externally from the build system, and allow post-install additions of functionality in the runtime environment. components can then be grouped into packages, installable from external repositories to deliver post-install step of missing packages. This provides a mechanism for the wider software ecosystem to interact with a minimalistic install. Reducing intra-component dependencies improves maintainability and code hygiene. We believe helping maintain the smallest base install possible will help embedding use cases. The modularization effort draws inspiration from the Java, Python, and Swift ecosystems. Keeping aligned with the modern C++, this strategy relies on forthcoming features such as C++ modules. We hope formalizing the component layer will provide simpler ROOT installs, improve extensibility, and decrease the complexity of embedding in other ecosystems
We present a general approach to a modular frame theory in C*-algebras and Hilbert C*-modules. The investigations rely on the idea of geometric dilation to standard Hilbert C*-modules over unital C*-algebras that possess orthonormal Hilbert bases, and of reconstruction of the frames by projections and by other bounded modular operators with suitable ranges. We obtain frame representations and decomposition theorems, as well as similarity and equivalence results for frames. Hilbert space frames and quasi-bases for conditional expectations of finite index on C*-algebras appear as special cases. Using a canonical categorical equivalence of Hilbert C*-modules over commutative C*-algebras and (F)Hilbert bundles the results find a reintepretation for frames in vector and (F)Hilbert bundles. Fields of applications are investigations on Cuntz-Krieger-Pimsner algebras, on conditional expectations of finite index, on various ranks of C*-algebras, on classical frame theory of Hilbert spaces (wavelet and Gabor frames), and others. 2001: In the introduction we refer to related publications in detail.
We introduce a notion of Krein C*-module over a C*-algebra and more generally over a Krein C*-algebra. Some properties of Krein C*-modules and their categories are investigated.
The ROOT I/O (RIO) subsystem is foundational to most HEP experiments - it provides a file format, a set of APIs/semantics, and a reference implementation in C++. It is often found at the base of an experiments framework and is used to serialize the experiments data; in the case of an LHC experiment, this may be hundreds of petabytes of files! Individual physicists will further use RIO to perform their end-stage analysis, reading from intermediate files they generate from experiment data. RIO is thus incredibly flexible: it must serve as a file format for archival (optimized for space) and for working data (optimized for read speed). To date, most of the technical work has focused on improving the former use case. We present work designed to help improve RIO for analysis. We analyze the real-world impact of LZ4 to decrease decompression times (and the corresponding cost in disk space). We introduce new APIs that read RIO data in bulk, removing the per-event overhead of a C++ function call. We compare the performance with the existing RIO APIs for simple structure data and show how this can be complimentary with efforts to improve the parallelism of the RIO stack.
comments
Fetching comments Fetching comments
mircosoft-partner

هل ترغب بارسال اشعارات عن اخر التحديثات في شمرا-اكاديميا