Skip to content

Commit 279fb84

Browse files
committed
Add support for AMD GPUs via the ProcessAcceleratorROCm
1 parent 6e5e357 commit 279fb84

File tree

4 files changed

+41
-1
lines changed

4 files changed

+41
-1
lines changed

Configuration/StandardSequences/python/Accelerators_cff.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
# used in production
55

66
from HeterogeneousCore.CUDACore.ProcessAcceleratorCUDA_cfi import ProcessAcceleratorCUDA
7+
from HeterogeneousCore.ROCmCore.ProcessAcceleratorROCm_cfi import ProcessAcceleratorROCm

HeterogeneousCore/AlpakaCore/python/ProcessAcceleratorAlpaka.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
class ModuleTypeResolverAlpaka:
44
def __init__(self, accelerators, backend):
5-
# first element is used as the default is nothing is set
5+
# first element is used as the default if nothing is set
66
self._valid_backends = []
77
if "gpu-nvidia" in accelerators:
88
self._valid_backends.append("cuda_async")
9+
if "gpu-amd" in accelerators:
10+
self._valid_backends.append("rocm_async")
911
if "cpu" in accelerators:
1012
self._valid_backends.append("serial_sync")
1113
if len(self._valid_backends) == 0:
@@ -60,11 +62,15 @@ def apply(self, process, accelerators):
6062
if not hasattr(process, "AlpakaServiceCudaAsync"):
6163
from HeterogeneousCore.AlpakaServices.AlpakaServiceCudaAsync_cfi import AlpakaServiceCudaAsync
6264
process.add_(AlpakaServiceCudaAsync)
65+
if not hasattr(process, "AlpakaServiceROCmAsync"):
66+
from HeterogeneousCore.AlpakaServices.AlpakaServiceROCmAsync_cfi import AlpakaServiceROCmAsync
67+
process.add_(AlpakaServiceROCmAsync)
6368

6469
if not hasattr(process.MessageLogger, "AlpakaService"):
6570
process.MessageLogger.AlpakaService = cms.untracked.PSet()
6671

6772
process.AlpakaServiceSerialSync.enabled = "cpu" in accelerators
6873
process.AlpakaServiceCudaAsync.enabled = "gpu-nvidia" in accelerators
74+
process.AlpakaServiceROCmAsync.enabled = "gpu-amd" in accelerators
6975

7076
cms.specialImportRegistry.registerSpecialImportForType(ProcessAcceleratorAlpaka, "from HeterogeneousCore.AlpakaCore.ProcessAcceleratorAlpaka import ProcessAcceleratorAlpaka")
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import FWCore.ParameterSet.Config as cms
2+
3+
import os
4+
5+
class ProcessAcceleratorROCm(cms.ProcessAccelerator):
6+
def __init__(self):
7+
super(ProcessAcceleratorROCm,self).__init__()
8+
self._label = "gpu-amd"
9+
def labels(self):
10+
return [self._label]
11+
def enabledLabels(self):
12+
enabled = (os.system("rocmIsEnabled") == 0)
13+
if enabled:
14+
return self.labels()
15+
else:
16+
return []
17+
def apply(self, process, accelerators):
18+
if not hasattr(process, "ROCmService"):
19+
from HeterogeneousCore.ROCmServices.ROCmService_cfi import ROCmService
20+
process.add_(ROCmService)
21+
22+
if not hasattr(process.MessageLogger, "ROCmService"):
23+
process.MessageLogger.ROCmService = cms.untracked.PSet()
24+
25+
if self._label in accelerators:
26+
process.ROCmService.enabled = True
27+
else:
28+
process.ROCmService.enabled = False
29+
30+
cms.specialImportRegistry.registerSpecialImportForType(ProcessAcceleratorROCm, "from HeterogeneousCore.ROCmCore.ProcessAcceleratorROCm import ProcessAcceleratorROCm")
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from HeterogeneousCore.ROCmCore.ProcessAcceleratorROCm import ProcessAcceleratorROCm as _ProcessAcceleratorROCm
2+
3+
ProcessAcceleratorROCm = _ProcessAcceleratorROCm()

0 commit comments

Comments
 (0)