SL6, gcc 4.8.2 testing and progress


[Albeit the status of remote facilities is unclear, this deployment was completed on time without major issues]


This blog documents the path toward a new ROOT and new compiler version for STAR. The tasks are inter-dependent as we would like to
  1. Release new coding references in light of new C++ standards and langage constructs - 2015/06/24
  2. Make and release a stable library version reference - 2014/07/14
  3. Test the reference lirbrary under on a node where a new compiler is installed and make sure it is validated + test lib with patch and see if it works (mixed compilation) - this would be testing backward compatibility of code.
  4. Test with a new ROOT version (under the old same compiler)
  5. Test the reference library with the new ROOT version and the new compiler
  6. Call one off-BNL site to verify all works for forward compatiblity
  7. Switch the environment at BNL to the new gcc (i.e. farm upgrade and rebuild). Since the compiler should be forward/backward compatible, a rebuild can be incremental (least disruptions).
  8. Give the green light to move (+ declare SL5 env with older compiler dead)

A few steps are described below:
  • Mid 2014, discussed migration forward ...
  • 2014/07 - cons modified to account for compiling with a new compiler and swicthing to C++11 syntax. Idea is to swicth C++ "standard" as soon as gcc 4.4 .
  • 2014/07 - C++11 compiler tested by some software cooridnators - based on those who tested an older version (4.4.7 with the compitler option std=c++0x) - received only couple feedback from the EMC2 team and the HLT coordinator.
     
  • Discussed compiler to be used early 2015 - requested from the RACF.
    Both SL5 and SL6 requested.
    The decision was to go with 4.8.2 from devtoolset (or re-packaged) as the compiler would be forward and backward compatible (providing only the special 4.8.2 compier i used) and SL7.0 is released with 4.8.2 by default )making a possible SL7 transition easier). Compatibility is important to make sure we can recompile old libraries (Embedding for example) and have the resulting exe/.so run on older systems. Compatibility with SL7 would extend lifetime of our code.
    Choice of gcc was explained and presented in numerous S&C meetings (mostly as AOB).
     
  • 2015/03/10 - Moved forward. Compiler installed on rplay18 (SL6) and rplay15 (SL5) as devtoolset - upon testing, the use of "scl" seemed to cause issues with some installer. We repackaged the compiler and deployed in /opt/gcc instead - this showed to work fine but installed in /opt/gcc, it was still not suitable for installation of OPTSTAR. Requested to install again as "default compiler" (i.e. in /usr/bin etc ...).
     
  • Realized cart/horse issue - new C++11 coding standard for STAR are needed.
    Moving to the new compiler opens the door for C++11 syntax and having rules prior not only seemed like a needed step but an opportunity to revamp our 20 years coding standards.
    • 2014/10/31 - Assembled a commitee to deliver new standards. Thomas Ullrich as chair. Charges C++11 and STAR coding standard commitee charges. Draft report expected mid-December.
    • 2014/12/01 - delays notice from chair.
    • 2015/03 - Draft deliverred and passed to core team members for comments (Dmitry, Dmitri, Victor, ...) + ROOT tema meber + 1 member of the ISO standard commitee member
    • 2015/04 - second iteration from the commitee incorporated the feedback and concerns. New document deliverred.
    • 2015/05 - passed to the software coordinators for comments. Gave June 6th as deadline (reminder here).
    • 2015/06 - No feedback from software cooridnators, released the document to STAR for comments. Gave 2 weeks feedback.
    • 2015/06/24 - Feedback period closed. New standards adopted. Asked the commitee for final version (received on the same day of the closing announcement / some minor formatting issues exsist but could be fixed later). [X]
       
  • 2015/06/29 - Got back to the RCF again, requested the compiler to not be in /opt/gcc nor within the devstooolset directory tree but as default compiler. Still some interaction with the envrionemtn detected.
  • 2015/07/10 - Opened node to software coodinators who asked + a few more + core team members who asked. Recommended NOT to use scl command (i.e. not to use "scl enable devtoolset-2 tcsh" from devtoolset) as this confuses some installer as previously noted.
     
Steps branch from here into two activities - we document below the General actions, new GCC related items and new ROOT items and their timeline.
  • General
    • 07/21 Several makers removed from "dev" to simplify the work - HbtMaker, FlowMaker, FlowAnalysisMaker and the StrangeMuDstMaker (work was done before to wrap code with pre-compiler directive to include/exclude code - time to clean-up and make that jump has arrived)
    • ...
       
  • New GCC
    • 07/10 - Noted missing link (Dmitry) and fixed. Noticed one more issue with the isntalllation fixed the same day.  Db code compilation confirmed (Dmitry).
    • 07/13 - PicoDST code confirmed compiling (Mustafa).
    • 07/14 - SL15g library, our base reference library, is released [X]. Validation was pending due to HFT/SST/Sti related code issues which made the initial target date for evaluation, end of June, to be missed (date shifted due to V-days).
      More inconsistencies found but not compiler related (Hongwei) - decision is to rebuild the node and make sure all is fine from a fresh build.
    • 07/15 Two test jobs from SL15g being run - first sign we have identical results and first backward compatibility test done (one more needs to be done).
    • 07/16 Node rebuilt, seems to be fine with all needed features.
    • 07/20 Daily AutoBuild established (rather than a manual one) to help coordinators to converge.
    • 07/21 Feedback from coordinator points at the old __TIME__ and __DATE__ issues (some fixed a while back).
    • ...
       
  • New ROOT
    • 07/17 ROOT 5.34.30 released for testing - one problem with TGeant reported to Victor. Fixed by Jason 07/21.
    • 07/20 Fedback on Vc by Fisyak - there may be an issue with format compatibility as per distributed by ROOT (TBC). This will be addressed in the _1 STAR patched version at a later time (already pre-compiled with the same option, will include patches as more feedback will come).
    • 07/21 "dev' compilation tested against ROOT 5.34.30 release - plan is different than the usual procedure: will create/test SL15h with the new ROOT release and if validates, will release "dev" with the new ROOT version and move on.
    • 07/22 SL15h library being assembled.
    • ...