Externals / LCG_101_ATLAS_4 Update, master branch (2021.11.08.)
Updated all projects to atlasexternals-2.0.119, and LCG_101_ATLAS_4.
The changes wrt. atlasexternals-2.0.118 are the following (atlasexternals@2.0.118...2.0.119):
- Added
FindCUDAToolkit.cmake
andFindcuDNN.cmake
to AtlasLCG, to make these externals usable from LCG releases;- This has an important effect on our nightly build setup, detailed further down.
- Updated the onnxruntime package to build the CUDA capabilities of onnxruntime, when CUDA and cuDNN are available;
- Made it possible to build CORAL and COOL as part of the Athena(Externals) project, if necessary;
- This was used in !47817 (merged) for fixing issues in the production release, but will likely be useful in the master branch as well;
- Introduced the
TDAQ_PLATFORM
environment variable.Findtdaq.cmake
andFindtdaq-common.cmake
respect it when it's set, and set it themselves for the environment setup script.- This is necessary to handle the issue described in ATLINFR-4306.
At the same time removed the unnecessary setting of the ATLAS_COOL_TAG
cache variable from the AthenaExternals
build. To get rod of the issue described in ATLINFR-4315.
As for the CUDA version... Starting with LCG_101_ATLAS_4, the way that we use CUDA must change a little. LCG releases from now on will come with a specific version of CUDA. Which means that we are not allowed to use just any version of it, set up through asetup
, in our build configuration.
In this MR's setup, if we build it without setting up CUDA using asetup
at all, CUDA code in Athena will still be built. This is because AthenaExternals
sets up CUDA for its own runtime environment. (Using FindCUDAToolkit.cmake.) So "by the time" that Athena is built, "this" CUDA version is in the runtime environment, no matter what.
I would recommend that we do one of the following two options:
- Make sure that CUDA version 11.4 would be set up by the nightly/CI configuration, through
asetup
; - Remove any explicit CUDA setup from the nightly/CI configuration.
As it happens, the choice between the two is not as obvious as it may seem. Without asetup
setting up CUDA explicitly, it is not possible to build "our own" CUDA code as part of AthenaExternals
. Only as part of Athena
. If we are sure that we will only ever build "our own" CUDA code as part of this repository, and never as part of atlas/atlasexternals, then we should just stop setting up CUDA through asetup
. But if not, then we should rather make sure that we would always set up the same CUDA version with asetup
, as the one included in the LCG release that we want to build against.
To be clear, I'm not suggesting that asetup
should stop being able to set up CUDA. As we may very well need CUDA later on for non-LCG-based releases.