1 / 12

CINT C++ Interpreter update

CINT C++ Interpreter update. ROOT2001 at Fermi-Lab Masaharu Goto. Agenda. About CINT Progress since ROOT2000 Major Progresses Issues Plans. About CINT. CINT is a C/C++ Interpreter Compiled C/C++ library can be dynamically linked Platform independent (almost all major OS, MPU)

cecil
Download Presentation

CINT C++ Interpreter update

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CINT C++ Interpreterupdate ROOT2001 at Fermi-Lab Masaharu Goto

  2. Agenda • About CINT • Progress since ROOT2000 • Major Progresses • Issues • Plans

  3. About CINT • CINT is a C/C++ Interpreter • Compiled C/C++ library can be dynamically linked • Platform independent (almost all major OS, MPU) • Not perfect, but covers 95%/85% of C/C++ syntax • Since 1996, CINT is used as a macro interpreter and dictionary generator in ROOT framework • Many users world wide

  4. Progress since ROOT2000 • Weekly release • Released every weekend • Revision 5.14.32-90 , 5.15.02 • Many bug fixes and enhancements • Mods serial number : 1276 to 1538 • In case of side-effects, new features can be turned off by defining G__OLDIMPLEMENTATION[ModsNum] in G__ci.h

  5. Major Progresses • New revision number policy and DLL compatibility • Multi-threading (experimental) • New memory allocation system • Variable arguments in interpreted code and x86 architecture • Stub class/function

  6. New revision number policy • Cint revision number will be synchronized with DLL binary compatibility • Benefit • Easy to figure out DLL binary compatibility • (Cint table size became independent from DLL binary compatibility) 5 . 15 . 02 Patch level: changed every release Minor version: changed when DLL has to be recompiled Major version: changed at major architecture change

  7. New revision number policy (2) • In most cases, DLL created by an older minor version can be loaded by newer minor version. But, the other way around is not possible. • DLL created by 5.15.xx could be loaded by 5.16.xx, but not always. If not possible, it is rejected by DLL revision checking mechanism. • DLL created by 5.16.xx will not be loaded by 5.15.xx.

  8. Multi Threading (Experimental) • “True” multi-thread interpretation using a very smart trick proposed by Christoph Bugel and his colleague in TTI-telecom • Copy libcint.so/dll, load them separately and run in multiple threads • Works best on Windows • RedHat6.2 Linux is also supported, but with limitation. • Need special configuration • Refer to $CINTSYSDIR/demo/multilibcint/README.txt

  9. Multi Threading (2) • Can not apply this technique on ROOT/CINT • Problem in Use-Model and platform dependency • Problem in Linux dynamic loader symbol resolution • ROOT static object ? • At this moment, other technique work better • More investigation is needed

  10. Issues • Precompiled STL container in ROOT environment • Problem associated with memory allocation system • Frequent bug reports on following items • Bytecode optimization (Try ‘.O0’ - ‘.O3’ if you have problem) • ‘#pragma link’ statement • RedHat7.0 Linux and Windows2000 support • Minor improvement may be needed • Undetermined multi-thread execution model • Use-Case and OS limitation

  11. Plans • Precompiled STL container in ROOT environment • Find solution during ROOT2001 • Multi-thread investigation • Continue support

  12. Your Bug Report is appreciated • Report bug reports to rootdev@pcroot.cern.ch • roottalk may be overlooked • Please report CINT revision number too • If it is a degrade from previous version, what is the last revision that worked fine. • Your simplified example is very helpful • Thank you very much

More Related