Difference between revisions of "Modern C Compiler, ROOT, Geant"
(→Figure out your platform: Add different options (e.g. needed for Ganymede/Visar)) |
|||
(15 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
=== Introduction === | === Introduction === | ||
− | So you want a modern C compiler and/or some other tool. As of this writing ( | + | 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 (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. | as the default compiler. This is not recent enough for much of the HEP code ecosystem. | ||
Line 22: | Line 22: | ||
Today on one of the stoomboot worker nodes, it says | Today on one of the stoomboot worker nodes, it says | ||
− | Scientific Linux CERN SLC release 6. | + | Scientific Linux CERN SLC release 6.9 (Carbon) |
Kernel \r on an \m | Kernel \r on an \m | ||
Remember that first line, that tells you the platform, you'll need it shortly. | Remember that first line, that tells you the platform, you'll need it shortly. | ||
− | |||
− | + | Other ways to find which platform you're on include | |
− | + | * cat /proc/version | |
− | + | * lsb_release -a | |
− | + | * uname -a | |
+ | * ls /etc/*release* /etc/*version* | ||
− | + | === Poke around in SFT and find the relevant release and compiler === | |
− | stbc- | + | 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- | + | |
− | + | 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 | |
− | + | [http://lcginfo.cern.ch/ 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- | + | 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 === | === 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. | ||
− | + | $ . /cvmfs/sft.cern.ch/lcg/views/setupViews.sh LCG_91 x86_64-slc6-gcc7-opt | |
− | + | After running that command, you can check that things are set up: | |
− | + | $ gcc --version | |
− | + | gcc (GCC) 7.1.0 | |
− | + | Copyright (C) 2017 Free Software Foundation, Inc. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | gcc (GCC) | ||
− | Copyright (C) | ||
This is free software; see the source for copying conditions. There is NO | This is free software; see the source for copying conditions. There is NO | ||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
+ | $ 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 | |
− | + | $ 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. | |
+ | >>> | ||
+ | $ | ||
+ | |||
+ | === Compile your code === | ||
+ | Now you'll have the right stuff in your path, etc to use that version of gcc. | ||
Enjoy that prize. Don't forget to mention the PDP group in your speech. | Enjoy that prize. Don't forget to mention the PDP group in your speech. |
Latest revision as of 09:47, 25 March 2022
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.
Other ways to find which platform you're on include
- cat /proc/version
- lsb_release -a
- uname -a
- ls /etc/*release* /etc/*version*
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.
$ . /cvmfs/sft.cern.ch/lcg/views/setupViews.sh LCG_91 x86_64-slc6-gcc7-opt After running that command, you can check that things are set up: $ 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. $ 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 $ 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. >>> $
Compile your code
Now you'll have the right stuff in your path, etc to use that version of gcc. Enjoy that prize. Don't forget to mention the PDP group in your speech.