Skip to content

AthExHIP, master branch (2020.08.19.)

This MR goes hand-in hand with atlasexternals!718 (merged). Which was collected into atlasexternals-2.0.74 (as the only update over atlasexternals-2.0.73), and which this MR updates all projects to.

The MR introduces a trivial HIP example package. One that I'm (at least...) able to build both using the "AMD" and "NVidia" backends of HIP, using the Docker image gitlab-registry.cern.ch/akraszna/atlas-gpu-devel-env:centos7, built by: https://gitlab.cern.ch/akraszna/atlas-gpu-devel-env (See https://groups.cern.ch/group/atlas-sw-accelerators/Lists/Archive/Flat.aspx?RootFolder=%2Fgroup%2Fatlas%2Dsw%2Daccelerators%2FLists%2FArchive%2FDocker%20images%20for%20GPU%20code%20development&FolderCTID=0x012002006AEEE26D0BA94347B599D9F35439A6D0 for some details about that Docker image.)

To build the package for an AMD backend, I do the following:

cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DATLAS_PACKAGE_FILTER_FILE=../package_filters.txt -DAtlasCMake_DIR=/data/projects/hip/atlasexternals/Build/AtlasCMake -DLCG_DIR=/data/projects/hip/atlasexternals/Build/AtlasLCG -DAtlasHIP_DIR=/data/projects/hip/atlasexternals/Build/AtlasHIP -DCMAKE_HIP_PLATFORM=hcc ../athena/Projects/WorkDir/

While for an NVidia backend I can build with:

cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DATLAS_PACKAGE_FILTER_FILE=../package_filters.txt -DAtlasCMake_DIR=/data/projects/hip/atlasexternals/Build/AtlasCMake -DLCG_DIR=/data/projects/hip/atlasexternals/Build/AtlasLCG -DAtlasHIP_DIR=/data/projects/hip/atlasexternals/Build/AtlasHIP -DCMAKE_HIP_PLATFORM=nvcc ../athena/Projects/WorkDir/

And they even work. 😄

[bash][atlas]:build > ./CMakeFiles/atlas_build_run.sh athena.py AthExHIP/LinearTransformExample_jobOptions.py
Wed Aug 19 13:06:27 UTC 2020
Preloading tcmalloc_minimal.so
Py:Athena            INFO including file "AthenaCommon/Preparation.py"
Py:Athena            INFO using release [WorkDir-22.0.18] [x86_64-centos7-clang12-opt] [AthExHIP-master-20200818/16e2566] -- built on [2020-08-19T1305]
Py:Athena            INFO including file "AthenaCommon/Atlas.UnixStandardJob.py"
Py:Athena            INFO executing ROOT6Setup
Py:Athena            INFO including file "AthenaCommon/Execution.py"
Py:Athena            INFO including file "AthExHIP/LinearTransformExample_jobOptions.py"
Py:Athena            INFO including file "AthenaCommon/runbatch.py"
Py:ConfigurableDb    INFO Read module info for 5541 configurables from 5 genConfDb files
Py:ConfigurableDb    INFO No duplicates have been found: that's good !
ApplicationMgr    SUCCESS 
====================================================================================================================================
                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
                                          running on d75198a7103b on Wed Aug 19 13:06:31 2020
====================================================================================================================================
ApplicationMgr       INFO Application Manager Configured successfully
AthDictLoaderSvc     INFO in initialize...
AthDictLoaderSvc     INFO acquired Dso-registry
ClassIDSvc           INFO  getRegistryEntries: read 3316 CLIDRegistry entries for module ALL
CoreDumpSvc          INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) 
AthenaEventLoopMgr   INFO Initializing AthenaEventLoopMgr - package version AthenaServices-00-00-00
AthHIPExamples:...   INFO Will be using device:
  - name                = Ellesmere [Radeon RX 470/480/570/570X/580/580X/590]
  - totalGlobalMem      = 8589934592
  - maxThreadsPerBlock  = 1024
  - multiProcessorCount = 36
ApplicationMgr       INFO Application Manager Initialized successfully
ApplicationMgr       INFO Application Manager Started successfully
AthenaEventLoopMgr   INFO   ===>>>  start of run 1    <<<===
AthenaEventLoopMgr   INFO   ===>>>  start processing event #1, run #1 0 events processed so far  <<<===
AthenaEventLoopMgr   INFO   ===>>>  done processing event #1, run #1 1 events processed so far  <<<===
...

vs.

[bash][atlas]:build > ./CMakeFiles/atlas_build_run.sh athena.py AthExHIP/LinearTransformExample_jobOptions.py
Wed Aug 19 13:07:46 UTC 2020
Preloading tcmalloc_minimal.so
Py:Athena            INFO including file "AthenaCommon/Preparation.py"
Py:Athena            INFO using release [WorkDir-22.0.18] [x86_64-centos7-clang12-opt] [AthExHIP-master-20200818/16e2566] -- built on [2020-08-19T1306]
Py:Athena            INFO including file "AthenaCommon/Atlas.UnixStandardJob.py"
Py:Athena            INFO executing ROOT6Setup
Py:Athena            INFO including file "AthenaCommon/Execution.py"
Py:Athena            INFO including file "AthExHIP/LinearTransformExample_jobOptions.py"
Py:Athena            INFO including file "AthenaCommon/runbatch.py"
Py:ConfigurableDb    INFO Read module info for 5541 configurables from 4 genConfDb files
Py:ConfigurableDb    INFO No duplicates have been found: that's good !
ApplicationMgr    SUCCESS 
====================================================================================================================================
                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
                                          running on 370ae6565447 on Wed Aug 19 13:07:50 2020
====================================================================================================================================
ApplicationMgr       INFO Application Manager Configured successfully
AthDictLoaderSvc     INFO in initialize...
AthDictLoaderSvc     INFO acquired Dso-registry
ClassIDSvc           INFO  getRegistryEntries: read 3316 CLIDRegistry entries for module ALL
CoreDumpSvc          INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) 
AthenaEventLoopMgr   INFO Initializing AthenaEventLoopMgr - package version AthenaServices-00-00-00
AthHIPExamples:...   INFO Will be using device:
  - name                = GeForce GTX 960
  - totalGlobalMem      = 2099445760
  - maxThreadsPerBlock  = 1024
  - multiProcessorCount = 8
ApplicationMgr       INFO Application Manager Initialized successfully
ApplicationMgr       INFO Application Manager Started successfully
AthenaEventLoopMgr   INFO   ===>>>  start of run 1    <<<===
AthenaEventLoopMgr   INFO   ===>>>  start processing event #1, run #1 0 events processed so far  <<<===
AthenaEventLoopMgr   INFO   ===>>>  done processing event #1, run #1 1 events processed so far  <<<===
...

@ssnyder, I hope this will be the end of adding exceptions for function multi-versioning. 😛

Unfortunately the CI or the nightly will not be able to build the package. 😦 It should still be a good place to store the example, in case we want to more seriously explore using HIP for GPU usage in the offline software.

Pinging @leggett, @fwinkl, @baines.

Edited by Attila Krasznahorkay

Merge request reports