Difference between revisions of "Modern C Compiler, ROOT, Geant"
Line 107: | Line 107: | ||
=== Run the setup script === | === Run the setup script === | ||
+ | The views script will set things up for you. Note that as of this writing, it doesn't work correctly with zsh but does with bash. We will submit a bug report. | ||
− | + | [templon@stbc-i2 lcg]$ . /cvmfs/sft.cern.ch/lcg/views/setupViews.sh LCG_91 x86_64-slc6-gcc7-opt | |
+ | [templon@stbc-i2 lcg]$ gcc --version | ||
+ | gcc (GCC) 7.1.0 | ||
+ | Copyright (C) 2017 Free Software Foundation, Inc. | ||
+ | This is free software; see the source for copying conditions. There is NO | ||
+ | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
− | + | [templon@stbc-i2 lcg]$ ROOT | |
+ | bash: ROOT: command not found | ||
+ | [templon@stbc-i2 lcg]$ root | ||
+ | *** DISPLAY not set, setting it to lena.nikhef.nl:0.0 | ||
+ | PopupLogo, XOpenDisplay failed | ||
− | + | ^C[templon@stbc-i2 lcg]$ root -h | |
+ | Usage: root [-l] [-b] [-n] [-q] [dir] [[file:]data.root] [file1.C ... fileN.C] | ||
+ | Options: | ||
+ | -b : run in batch mode without graphics | ||
+ | -n : do not execute logon and logoff macros as specified in .rootrc | ||
+ | -q : exit after processing command line macro files | ||
+ | -l : do not show splash screen | ||
+ | -x : exit on exception | ||
+ | dir : if dir is a valid directory cd to it before executing | ||
+ | --notebook : execute ROOT notebook | ||
− | ''' | + | -? : print usage |
− | + | -h : print usage | |
+ | --help : print usage | ||
+ | -config : print ./configure options | ||
+ | -memstat : run with memory usage monitoring | ||
+ | |||
+ | [templon@stbc-i2 lcg]$ root -b | ||
+ | ------------------------------------------------------------ | ||
+ | | Welcome to ROOT 6.10/06 http://root.cern.ch | | ||
+ | | (c) 1995-2017, The ROOT Team | | ||
+ | | Built for linuxx8664gcc | | ||
+ | | From tag v6-10-06, 19 September 2017 | | ||
+ | | Try '.help', '.demo', '.license', '.credits', '.quit'/'.q' | | ||
+ | ------------------------------------------------------------ | ||
+ | |||
+ | root [0] .q | ||
+ | [templon@stbc-i2 lcg]$ python | ||
+ | Python 2.7.13 (default, May 9 2017, 16:41:38) | ||
+ | [GCC 7.1.0] on linux2 | ||
+ | Type "help", "copyright", "credits" or "license" for more information. | ||
+ | >>> | ||
+ | [templon@stbc-i2 lcg]$ | ||
=== Compile your code === | === Compile your code === |
Revision as of 09:03, 28 November 2017
Introduction
So you want a modern C compiler and/or some other tool. As of this writing (28 November 2017) the stoomboot interactive nodes have
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
as the default compiler. This is not recent enough for much of the HEP code ecosystem.
Modern C compilers can be found in a repository called "SFT" which is maintained by CERN, and distributed via something called CVMFS which is installed on stoomboot machines and most of the desktop machines (older ones may not have it). You can check whether you have it with:
ls /cvmfs/sft.cern.ch
if you don't get an error (and it says "lcg") then you're good. What you'll need to do to set up the compiler is:
- figure out what kind of platform you'll be running on
- poke around in SFT to find out what the current release is
- run the setup script
- compile your code and win the Nobel Prize.
Figure out your platform
You'll generally need to compile for a specific platform; go (one of) the machine(s) on which you'll be running your code and type
cat /etc/issue
Today on one of the stoomboot worker nodes, it says
Scientific Linux CERN SLC release 6.9 (Carbon) Kernel \r on an \m
Remember that first line, that tells you the platform, you'll need it shortly.
Poke around in SFT and find the relevant release and compiler
stbc-i2:lcg> . /cvmfs/sft.cern.ch/lcg/views/setupViews.sh Usage: setupViews <LCG_directory> <arch-os-complier> where <LCG_directory> can be any of these LCG_71 LCG_71root6 LCG_72a LCG_79 LCG_81c LCG_81d LCG_81e LCG_81f LCG_82rootaas2 LCG_82rootaas3 LCG_82rootaas4 LCG_82rootaas5 LCG_82rootaas6 LCG_83 LCG_84 LCG_84swan1 LCG_84swan2 LCG_84swan3 LCG_84swan4 LCG_85 LCG_85a LCG_85b LCG_85swan1 LCG_85swan2 LCG_85swan3 LCG_86 LCG_87 LCG_88 LCG_88Py3 LCG_89 LCG_89python3 LCG_90 LCG_90a LCG_90python3 LCG_91 LCG_91python3 LCG_gaudiext20170622 LCG_latest LCG_rootext20161010 LCG_rootext20161129 LCG_rootext20170508 LCG_rootext20170929 LCG_rootext20171122 dev3 dev3arch dev3python3 dev4 devgeantv geantv ml/1.0 and <arch-os-complier> depends on what is available in <LCG_directory> stbc-i2:lcg>
Each of these LCG_* tags is a release of a bunch of software such as Tensorflow, Python, ROOT, scikitlearn, etc. To find out what is available inside each release (including versions) you can take a look at this page.
The release exists in several versions, each one a specific combination of unix platform (red hat, ubuntu, etc) and C compiler version, as you can only be certain that software will work together if it's all been compiled on the same platform with the same C compiler. The views script will tell you which platform is available, if you select a LCG release:
stbc-i2:lcg> . /cvmfs/sft.cern.ch/lcg/views/setupViews.sh LCG_91 Available <arch-os-complier> for LCG_91 : x86_64-centos7-gcc62-dbg x86_64-centos7-gcc62-opt x86_64-centos7-gcc7-dbg x86_64-centos7-gcc7-opt x86_64-slc6-gcc62-dbg x86_64-slc6-gcc62-opt x86_64-slc6-gcc7-dbg x86_64-slc6-gcc7-opt x86_64-ubuntu1604-gcc54-dbg x86_64-ubuntu1604-gcc54-opt
Going back to the previous section, we had CERN SLC 6.9 so this is the "slc6" platform ... C compilers available are gcc 6.2 or 7 ... and you can either have the software compiled with debugging enabled (dbg) or with optimisation turned on (opt).
Run the setup script
The views script will set things up for you. Note that as of this writing, it doesn't work correctly with zsh but does with bash. We will submit a bug report.
[templon@stbc-i2 lcg]$ . /cvmfs/sft.cern.ch/lcg/views/setupViews.sh LCG_91 x86_64-slc6-gcc7-opt [templon@stbc-i2 lcg]$ gcc --version gcc (GCC) 7.1.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[templon@stbc-i2 lcg]$ ROOT bash: ROOT: command not found [templon@stbc-i2 lcg]$ root
- DISPLAY not set, setting it to lena.nikhef.nl:0.0
PopupLogo, XOpenDisplay failed
^C[templon@stbc-i2 lcg]$ root -h Usage: root [-l] [-b] [-n] [-q] [dir] [[file:]data.root] [file1.C ... fileN.C] Options:
-b : run in batch mode without graphics -n : do not execute logon and logoff macros as specified in .rootrc -q : exit after processing command line macro files -l : do not show splash screen -x : exit on exception dir : if dir is a valid directory cd to it before executing --notebook : execute ROOT notebook
-? : print usage -h : print usage --help : print usage -config : print ./configure options -memstat : run with memory usage monitoring
[templon@stbc-i2 lcg]$ root -b
------------------------------------------------------------ | Welcome to ROOT 6.10/06 http://root.cern.ch | | (c) 1995-2017, The ROOT Team | | Built for linuxx8664gcc | | From tag v6-10-06, 19 September 2017 | | Try '.help', '.demo', '.license', '.credits', '.quit'/'.q' | ------------------------------------------------------------
root [0] .q [templon@stbc-i2 lcg]$ python Python 2.7.13 (default, May 9 2017, 16:41:38) [GCC 7.1.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> [templon@stbc-i2 lcg]$
Compile your code
Now you'll have the right stuff in your path, etc to use this version of gcc:
stbc-022:x86_64-slc6> gcc --version gcc (GCC) 4.9.3 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. stbc-022:x86_64-slc6> g++ --version g++ (GCC) 4.9.3 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Enjoy that prize. Don't forget to mention the PDP group in your speech.