Cargando…

Optimizing ROOT’s performance using C++ Modules

ROOT comes with a C++ compliant interpreter cling. Cling needs to understand the content of the libraries in order to interact with them. Exposing the full shared library descriptors to the interpreter at runtime translates into increased memory footprint. ROOT’s exploratory programming concepts all...

Descripción completa

Detalles Bibliográficos
Autor principal: Vassilev, Vassil
Lenguaje:eng
Publicado: 2017
Materias:
Acceso en línea:https://dx.doi.org/10.1088/1742-6596/898/7/072023
http://cds.cern.ch/record/2296793
_version_ 1780956904952954880
author Vassilev, Vassil
author_facet Vassilev, Vassil
author_sort Vassilev, Vassil
collection CERN
description ROOT comes with a C++ compliant interpreter cling. Cling needs to understand the content of the libraries in order to interact with them. Exposing the full shared library descriptors to the interpreter at runtime translates into increased memory footprint. ROOT’s exploratory programming concepts allow implicit and explicit runtime shared library loading. It requires the interpreter to load the library descriptor. Re-parsing of descriptors’ content has a noticeable effect on the runtime performance. Present state-of-art lazy parsing technique brings the runtime performance to reasonable levels but proves to be fragile and can introduce correctness issues. An elegant solution is to load information from the descriptor lazily and in a non-recursive way. The LLVM community advances its C++ Modules technology providing an io-efficient, on-disk representation capable to reduce build times and peak memory usage. The feature is standardized as a C++ technical specification. C++ Modules are a flexible concept, which can be employed to match CMS and other experiments’ requirement for ROOT: to optimize both runtime memory usage and performance. Cling technically “inherits” the feature, however tweaking it to ROOT scale and beyond is a complex endeavor. The paper discusses the status of the C++ Modules in the context of ROOT, supported by few preliminary performance results. It shows a step-by-step migration plan and describes potential challenges which could appear.
id oai-inspirehep.net-1638555
institution Organización Europea para la Investigación Nuclear
language eng
publishDate 2017
record_format invenio
spelling oai-inspirehep.net-16385552021-02-09T10:06:25Zdoi:10.1088/1742-6596/898/7/072023http://cds.cern.ch/record/2296793engVassilev, VassilOptimizing ROOT’s performance using C++ ModulesComputing and ComputersROOT comes with a C++ compliant interpreter cling. Cling needs to understand the content of the libraries in order to interact with them. Exposing the full shared library descriptors to the interpreter at runtime translates into increased memory footprint. ROOT’s exploratory programming concepts allow implicit and explicit runtime shared library loading. It requires the interpreter to load the library descriptor. Re-parsing of descriptors’ content has a noticeable effect on the runtime performance. Present state-of-art lazy parsing technique brings the runtime performance to reasonable levels but proves to be fragile and can introduce correctness issues. An elegant solution is to load information from the descriptor lazily and in a non-recursive way. The LLVM community advances its C++ Modules technology providing an io-efficient, on-disk representation capable to reduce build times and peak memory usage. The feature is standardized as a C++ technical specification. C++ Modules are a flexible concept, which can be employed to match CMS and other experiments’ requirement for ROOT: to optimize both runtime memory usage and performance. Cling technically “inherits” the feature, however tweaking it to ROOT scale and beyond is a complex endeavor. The paper discusses the status of the C++ Modules in the context of ROOT, supported by few preliminary performance results. It shows a step-by-step migration plan and describes potential challenges which could appear.oai:inspirehep.net:16385552017
spellingShingle Computing and Computers
Vassilev, Vassil
Optimizing ROOT’s performance using C++ Modules
title Optimizing ROOT’s performance using C++ Modules
title_full Optimizing ROOT’s performance using C++ Modules
title_fullStr Optimizing ROOT’s performance using C++ Modules
title_full_unstemmed Optimizing ROOT’s performance using C++ Modules
title_short Optimizing ROOT’s performance using C++ Modules
title_sort optimizing root’s performance using c++ modules
topic Computing and Computers
url https://dx.doi.org/10.1088/1742-6596/898/7/072023
http://cds.cern.ch/record/2296793
work_keys_str_mv AT vassilevvassil optimizingrootsperformanceusingcmodules