ATLAS Offline Software
Loading...
Searching...
No Matches
AthCUDAServicesConfig Namespace Reference

Functions

 GPUSystemInfoSvcCfg (flags)
 HostMemoryResourceToolCfg (flags, **kwargs)
 DeviceMemoryResourceToolCfg (flags, **kwargs)
 ManagedMemoryResourceToolCfg (flags, **kwargs)
 MemoryResourcesToolCfg (flags, **kwargs)
 SingleStreamToolCfg (flags, **kwargs)
 PerEventStreamToolCfg (flags, **kwargs)
 PerComponentStreamToolCfg (flags, **kwargs)
 PerEventAndComponentStreamToolCfg (flags, **kwargs)
 StreamToolCfg (flags, **kwargs)
 SyncCopyToolCfg (flags, **kwargs)
 AsyncCopyToolCfg (flags, **kwargs)
 CopyToolCfg (flags, **kwargs)
 CopiesToolCfg (flags, **kwargs)

Function Documentation

◆ AsyncCopyToolCfg()

AsyncCopyToolCfg ( flags,
** kwargs )
Asynchronous copy object provider tool

Definition at line 326 of file AthCUDAServicesConfig.py.

326def AsyncCopyToolCfg(flags, **kwargs):
327 '''Asynchronous copy object provider tool
328 '''
329
330 # Create an accumulator to hold the configuration.
331 result = ComponentAccumulator()
332
333 # Create the tool. Attaching a stream tool to it.
334 copyTool = CompFactory.AthCUDA.AsyncCopyTool(**kwargs)
335 streamTool = StreamToolCfg(flags, **kwargs)
336 copyTool.StreamTool = streamTool.getPrimary()
337 result.merge(streamTool)
338 result.setPrivateTools(copyTool)
339
340 # Return the CA.
341 return result
342
343

◆ CopiesToolCfg()

CopiesToolCfg ( flags,
** kwargs )
Default tool providing the ICopiesTool interface for CUDA

Definition at line 364 of file AthCUDAServicesConfig.py.

364def CopiesToolCfg(flags, **kwargs):
365 '''Default tool providing the ICopiesTool interface for CUDA
366 '''
367
368 # Create an accumulator to hold the configuration.
369 result = ComponentAccumulator()
370
371 # Create the main tool that would provide the AthDevice::ICopiesTool
372 # interface.
373 tool = CompFactory.AthDevice.CopiesAdaptorTool(**kwargs)
374
375 # Set up the "host" copy tool. Which is always the same in our current code.
376 from AthDeviceComps.AthDeviceCompsConfig import HostCopyToolCfg
377 tool.HostCopyTool = \
378 result.popToolsAndMerge(HostCopyToolCfg(flags, **kwargs))
379
380 # Set up the device copy tool according to the received flags.
381 if flags.Device.Copy.Async:
382 tool.DeviceCopyTool = \
383 result.popToolsAndMerge(AsyncCopyToolCfg(flags, **kwargs))
384 else:
385 tool.DeviceCopyTool = \
386 result.popToolsAndMerge(SyncCopyToolCfg(flags, **kwargs))
387 pass
388
389 # Return the adaptor tool as the main component of the CA.
390 result.setPrivateTools(tool)
391
392 # Return the CA.
393 return result

◆ CopyToolCfg()

CopyToolCfg ( flags,
** kwargs )
Default tool providing the ICopyTool interface for CUDA

Definition at line 344 of file AthCUDAServicesConfig.py.

344def CopyToolCfg(flags, **kwargs):
345 '''Default tool providing the ICopyTool interface for CUDA
346 '''
347
348 # Create an accumulator to hold the configuration.
349 result = ComponentAccumulator()
350
351 # Set up the device copy tool according to the received flags.
352 if flags.Device.Copy.Async:
353 result.setPrivateTools(result.popToolsAndMerge(
354 AsyncCopyToolCfg(flags, **kwargs)))
355 else:
356 result.setPrivateTools(result.popToolsAndMerge(
357 SyncCopyToolCfg(flags, **kwargs)))
358 pass
359
360 # Return the CA.
361 return result
362
363

◆ DeviceMemoryResourceToolCfg()

DeviceMemoryResourceToolCfg ( flags,
** kwargs )
Default CUDA device memory resource tool to use

It makes sure that appropriate caching would be used, as allocating device
memory is relatively slow.

Definition at line 71 of file AthCUDAServicesConfig.py.

71def DeviceMemoryResourceToolCfg(flags, **kwargs):
72 '''Default CUDA device memory resource tool to use
73
74 It makes sure that appropriate caching would be used, as allocating device
75 memory is relatively slow.
76 '''
77
78 # Create an accumulator to hold the configuration.
79 result = ComponentAccumulator()
80
81 # Create the components that would collaborate to provide thread-safe
82 # caching to the "bare" memory resource.
83 tool = CompFactory.AthCUDA.DeviceMemoryResourceTool(**kwargs)
84 if flags.Device.Memory.Monitor:
85 monitorTool = CompFactory.AthDevice.MonitoredMemoryResourceTool(
86 'CUDADeviceMemoryResourceMonitorTool',
87 MRTool=tool)
88 tool = monitorTool
89 pass
90 if flags.Device.Memory.Debug:
91 debugTool = CompFactory.AthDevice.DebugMemoryResourceTool(
92 'CUDADeviceMemoryResourceDebugTool',
93 MRTool=tool)
94 tool = debugTool
95 pass
96 if flags.Device.Memory.Cache:
97 cacheSvc = CompFactory.AthDevice.BinaryPageMemoryResourceSvc(
98 'CUDADeviceCachedMemoryResourceSvc',
99 MRTool=tool)
100 result.addService(cacheSvc)
101 cacheTool = CompFactory.AthDevice.MemoryResourceSvcAdaptorTool(
102 'CUDADeviceCachedMemoryResourceTool',
103 MRSvc=cacheSvc)
104 tool = cacheTool
105 if flags.Device.Memory.Debug:
106 debugTool = CompFactory.AthDevice.DebugMemoryResourceTool(
107 'CUDADeviceCachedMemoryResourceDebugTool',
108 MRTool=tool)
109 tool = debugTool
110 pass
111 pass
112 if flags.Device.Memory.Monitor and flags.Device.Memory.Cache:
113 monitorTool = CompFactory.AthDevice.MonitoredMemoryResourceTool(
114 'CUDADeviceCachedMemoryResourceMonitorTool',
115 MRTool=tool)
116 tool = monitorTool
117 pass
118 result.setPrivateTools(tool)
119
120 # Return the CA.
121 return result
122
123

◆ GPUSystemInfoSvcCfg()

GPUSystemInfoSvcCfg ( flags)

Definition at line 11 of file AthCUDAServicesConfig.py.

11def GPUSystemInfoSvcCfg(flags):
12 acc = ComponentAccumulator()
13 svc = CompFactory.getComp("AthCUDA::GPUSystemInfoSvc")("GPUSystemInfoSvc")
14 acc.addService(svc)
15 return acc
16
17

◆ HostMemoryResourceToolCfg()

HostMemoryResourceToolCfg ( flags,
** kwargs )
Default CUDA host memory resource tool to use

It makes sure that appropriate caching would be used, as allocating pinned
host memory is relatively slow.

Definition at line 18 of file AthCUDAServicesConfig.py.

18def HostMemoryResourceToolCfg(flags, **kwargs):
19 '''Default CUDA host memory resource tool to use
20
21 It makes sure that appropriate caching would be used, as allocating pinned
22 host memory is relatively slow.
23 '''
24
25 # Create an accumulator to hold the configuration.
26 result = ComponentAccumulator()
27
28 # Create the components that would collaborate to provide thread-safe
29 # caching to the "bare" memory resource.
30 tool = CompFactory.AthCUDA.HostMemoryResourceTool(**kwargs)
31 if flags.Device.Memory.Monitor:
32 monitorTool = CompFactory.AthDevice.MonitoredMemoryResourceTool(
33 'CUDAHostMemoryResourceMonitorTool',
34 MRTool=tool)
35 tool = monitorTool
36 pass
37 if flags.Device.Memory.Debug:
38 debugTool = CompFactory.AthDevice.DebugMemoryResourceTool(
39 'CUDAHostMemoryResourceDebugTool',
40 MRTool=tool)
41 tool = debugTool
42 pass
43 if flags.Device.Memory.Cache:
44 cacheSvc = CompFactory.AthDevice.BinaryPageMemoryResourceSvc(
45 'CUDAHostCachedMemoryResourceSvc',
46 MRTool=tool)
47 result.addService(cacheSvc)
48 cacheTool = CompFactory.AthDevice.MemoryResourceSvcAdaptorTool(
49 'CUDAHostCachedMemoryResourceTool',
50 MRSvc=cacheSvc)
51 tool = cacheTool
52 if flags.Device.Memory.Debug:
53 debugTool = CompFactory.AthDevice.DebugMemoryResourceTool(
54 'CUDAHostCachedMemoryResourceDebugTool',
55 MRTool=tool)
56 tool = debugTool
57 pass
58 pass
59 if flags.Device.Memory.Monitor and flags.Device.Memory.Cache:
60 monitorTool = CompFactory.AthDevice.MonitoredMemoryResourceTool(
61 'CUDAHostCachedMemoryResourceMonitorTool',
62 MRTool=tool)
63 tool = monitorTool
64 pass
65 result.setPrivateTools(tool)
66
67 # Return the CA.
68 return result
69
70

◆ ManagedMemoryResourceToolCfg()

ManagedMemoryResourceToolCfg ( flags,
** kwargs )
Default CUDA managed memory resource tool to use

It makes sure that appropriate caching would be used, as allocating managed
memory is relatively slow.

Definition at line 124 of file AthCUDAServicesConfig.py.

124def ManagedMemoryResourceToolCfg(flags, **kwargs):
125 '''Default CUDA managed memory resource tool to use
126
127 It makes sure that appropriate caching would be used, as allocating managed
128 memory is relatively slow.
129 '''
130
131 # Create an accumulator to hold the configuration.
132 result = ComponentAccumulator()
133
134 # Create the components that would collaborate to provide thread-safe
135 # caching to the "bare" memory resource.
136 tool = CompFactory.AthCUDA.ManagedMemoryResourceTool(**kwargs)
137 if flags.Device.Memory.Monitor:
138 monitorTool = CompFactory.AthDevice.MonitoredMemoryResourceTool(
139 'CUDAManagedMemoryResourceMonitorTool',
140 MRTool=tool)
141 tool = monitorTool
142 pass
143 if flags.Device.Memory.Debug:
144 debugTool = CompFactory.AthDevice.DebugMemoryResourceTool(
145 'CUDAManagedMemoryResourceDebugTool',
146 MRTool=tool)
147 tool = debugTool
148 pass
149 if flags.Device.Memory.Cache:
150 cacheSvc = CompFactory.AthDevice.BinaryPageMemoryResourceSvc(
151 'CUDAManagedCachedMemoryResourceSvc',
152 MRTool=tool)
153 result.addService(cacheSvc)
154 cacheTool = CompFactory.AthDevice.MemoryResourceSvcAdaptorTool(
155 'CUDAManagedCachedMemoryResourceTool',
156 MRSvc=cacheSvc)
157 tool = cacheTool
158 if flags.Device.Memory.Debug:
159 debugTool = CompFactory.AthDevice.DebugMemoryResourceTool(
160 'CUDAManagedCachedMemoryResourceDebugTool',
161 MRTool=tool)
162 tool = debugTool
163 pass
164 pass
165 if flags.Device.Memory.Monitor and flags.Device.Memory.Cache:
166 monitorTool = CompFactory.AthDevice.MonitoredMemoryResourceTool(
167 'CUDAManagedCachedMemoryResourceMonitorTool',
168 MRTool=tool)
169 tool = monitorTool
170 pass
171 result.setPrivateTools(tool)
172
173 # Return the CA.
174 return result
175
176

◆ MemoryResourcesToolCfg()

MemoryResourcesToolCfg ( flags,
** kwargs )
Default tool providing the IMemoryResourcesTool interface for CUDA

Definition at line 177 of file AthCUDAServicesConfig.py.

177def MemoryResourcesToolCfg(flags, **kwargs):
178 '''Default tool providing the IMemoryResourcesTool interface for CUDA
179 '''
180
181 # Create an accumulator to hold the configuration.
182 result = ComponentAccumulator()
183
184 # Create the main tool that would provide the
185 # AthDevice::IMemoryResourcesTool interface.
186 tool = CompFactory.AthDevice.MemoryResourcesAdaptorTool(**kwargs)
187
188 # Set up the main tool according to the received flags.
189 if flags.Device.Memory.Shared:
190 mainMRTool = ManagedMemoryResourceToolCfg(flags)
191 tool.MainMRTool = mainMRTool.getPrimary()
192 result.merge(mainMRTool)
193 else:
194 mainMRTool = DeviceMemoryResourceToolCfg(flags)
195 tool.MainMRTool = mainMRTool.getPrimary()
196 result.merge(mainMRTool)
197
198 hostMRTool = HostMemoryResourceToolCfg(flags)
199 tool.HostMRTool = hostMRTool.getPrimary()
200 result.merge(hostMRTool)
201 pass
202
203 # Return the adaptor tool as the main component of the CA.
204 result.setPrivateTools(tool)
205 return result
206
207

◆ PerComponentStreamToolCfg()

PerComponentStreamToolCfg ( flags,
** kwargs )
Tool providing one CUDA stream per component (algorithm/tool/service)

Definition at line 250 of file AthCUDAServicesConfig.py.

250def PerComponentStreamToolCfg(flags, **kwargs):
251 '''Tool providing one CUDA stream per component (algorithm/tool/service)
252 '''
253
254 # Create an accumulator to hold the configuration.
255 result = ComponentAccumulator()
256
257 # Create an tool that implements this behaviour.
258 streamTool = CompFactory.AthCUDA.PerComponentStreamTool(**kwargs)
259 result.setPrivateTools(streamTool)
260
261 # Return the CA.
262 return result
263
264

◆ PerEventAndComponentStreamToolCfg()

PerEventAndComponentStreamToolCfg ( flags,
** kwargs )
Tool providing one CUDA stream per component and event/slot

Definition at line 265 of file AthCUDAServicesConfig.py.

265def PerEventAndComponentStreamToolCfg(flags, **kwargs):
266 '''Tool providing one CUDA stream per component and event/slot
267 '''
268
269 # Create an accumulator to hold the configuration.
270 result = ComponentAccumulator()
271
272 # Create an tool that implements this behaviour.
273 streamTool = CompFactory.AthCUDA.PerEventAndComponentStreamTool(**kwargs)
274 result.setPrivateTools(streamTool)
275
276 # Return the CA.
277 return result
278
279

◆ PerEventStreamToolCfg()

PerEventStreamToolCfg ( flags,
** kwargs )
Tool providing one CUDA stream per event/slot

Definition at line 229 of file AthCUDAServicesConfig.py.

229def PerEventStreamToolCfg(flags, **kwargs):
230 '''Tool providing one CUDA stream per event/slot
231 '''
232
233 # Create an accumulator to hold the configuration.
234 result = ComponentAccumulator()
235
236 # Create the stream service and add it to the accumulator.
237 streamSvc = CompFactory.AthCUDA.PerEventStreamSvc(**kwargs)
238 result.addService(streamSvc)
239
240 # Create an adaptor tool on top of the service, and set that as the main
241 # component of the CA.
242 streamTool = CompFactory.AthCUDA.StreamSvcAdaptorTool(
243 'CUDAPerEventStreamTool', StreamSvc=streamSvc)
244 result.setPrivateTools(streamTool)
245
246 # Return the CA.
247 return result
248
249

◆ SingleStreamToolCfg()

SingleStreamToolCfg ( flags,
** kwargs )
Tool providing a single CUDA stream for all components in the entire job

Definition at line 208 of file AthCUDAServicesConfig.py.

208def SingleStreamToolCfg(flags, **kwargs):
209 '''Tool providing a single CUDA stream for all components in the entire job
210 '''
211
212 # Create an accumulator to hold the configuration.
213 result = ComponentAccumulator()
214
215 # Create the stream service and add it to the accumulator.
216 streamSvc = CompFactory.AthCUDA.SingleStreamSvc(**kwargs)
217 result.addService(streamSvc)
218
219 # Create an adaptor tool on top of the service, and set that as the main
220 # component of the CA.
221 streamTool = CompFactory.AthCUDA.StreamSvcAdaptorTool(
222 'CUDASingleStreamTool', StreamSvc=streamSvc)
223 result.setPrivateTools(streamTool)
224
225 # Return the CA.
226 return result
227
228

◆ StreamToolCfg()

StreamToolCfg ( flags,
** kwargs )
Default CUDA stream provider tool to use

Definition at line 280 of file AthCUDAServicesConfig.py.

280def StreamToolCfg(flags, **kwargs):
281 '''Default CUDA stream provider tool to use
282 '''
283
284 # Create an accumulator to hold the configuration.
285 result = ComponentAccumulator()
286
287 # Create the default stream tool, depending on the job's configuration.
288 if flags.CUDA.Stream == CUDAStream.Single:
289 cfg = SingleStreamToolCfg(flags, **kwargs)
290 result.setPrivateTools(cfg.getPrimary())
291 result.merge(cfg)
292 elif flags.CUDA.Stream == CUDAStream.PerEvent:
293 cfg = PerEventStreamToolCfg(flags, **kwargs)
294 result.setPrivateTools(cfg.getPrimary())
295 result.merge(cfg)
296 elif flags.CUDA.Stream == CUDAStream.PerComponent:
297 cfg = PerComponentStreamToolCfg(flags, **kwargs)
298 result.setPrivateTools(cfg.getPrimary())
299 result.merge(cfg)
300 elif flags.CUDA.Stream == CUDAStream.PerEventAndComponent:
301 cfg = PerEventAndComponentStreamToolCfg(flags, **kwargs)
302 result.setPrivateTools(cfg.getPrimary())
303 result.merge(cfg)
304 else:
305 raise ValueError(f"Invalid CUDA stream strategy: {flags.CUDA.Stream}")
306 pass
307
308 # Return the CA.
309 return result
310
311

◆ SyncCopyToolCfg()

SyncCopyToolCfg ( flags,
** kwargs )
Synchronous copy object provider tool

Definition at line 312 of file AthCUDAServicesConfig.py.

312def SyncCopyToolCfg(flags, **kwargs):
313 '''Synchronous copy object provider tool
314 '''
315
316 # Create an accumulator to hold the configuration.
317 result = ComponentAccumulator()
318
319 # Create the tool in a simple way.
320 result.setPrivateTools(CompFactory.AthCUDA.CopyTool(**kwargs))
321
322 # Return the CA.
323 return result
324
325