Difference between revisions of "Modern C Compiler, ROOT, Geant"

From PDP/Grid Wiki
Jump to navigationJump to search
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.
  
You want that setup.sh file ..  
+
[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.
  
source /cvmfs/sft.cern.ch/lcg/releases/LCG_XXX/gcc/X.Y.Z/x86_64-platform/setup.sh
+
[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
  
Change XXX to the right LCG release tag, X.Y.Z to the right gcc version you found, and "platform" to the right platform you found.
+
^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
  
'''note: csh users need the setup.csh file'''
+
  -?      : print usage
We (PDP) assume that the csh setup works correctly, none of us use csh, hence we don't know for sure ;-)
+
  -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 11: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:

  1. figure out what kind of platform you'll be running on
  2. poke around in SFT to find out what the current release is
  3. run the setup script
  4. 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.