|vcpus|integer|Number of cores to be used to run this process.|Optional. However, a ContainerRequest that is in "Committed" state must provide this.|
|keep_cache_ram|integer|Number of keep cache bytes to be used to run this process.|Optional.|
|API|boolean|When set, ARVADOS_API_HOST and ARVADOS_API_TOKEN will be set, and container will have networking enabled to access the Arvados API server.|Optional.|
+|cuda_driver_version|string|Minimum CUDA driver version.|Optional.|
+|cuda_hardware_capability|string|Minimum CUDA hardware capability.|Optional.|
+|cuda_device_count|int|Number of GPUs to request.|Optional.|
runner.executorStdin = stdin
runner.executorStdout = stdout
runner.executorStderr = stderr
+
+ cudaDeviceCount := 0
+ if runner.Container.RuntimeConstraints.CUDADriverVersion != "" ||
+ runner.Container.RuntimeConstraints.CUDAHardwareCapability != "" ||
+ runner.Container.RuntimeConstraints.CUDADeviceCount != 0 {
+ // if any of these are set, enable CUDA GPU support
+ cudaDeviceCount = runner.Container.RuntimeConstraints.CUDADeviceCount
+ if cudaDeviceCount == 0 {
+ cudaDeviceCount = 1
+ }
+ }
+
return runner.executor.Create(containerSpec{
Image: imageID,
VCPUs: runner.Container.RuntimeConstraints.VCPUs,
BindMounts: bindmounts,
Command: runner.Container.Command,
EnableNetwork: enableNetwork,
- CUDADeviceCount: runner.Container.RuntimeConstraints.CUDADeviceCount,
+ CUDADeviceCount: cudaDeviceCount,
NetworkMode: runner.networkMode,
CgroupParent: runner.setCgroupParent,
Stdin: stdin,
// RuntimeConstraints specify a container's compute resources (RAM,
// CPU) and network connectivity.
type RuntimeConstraints struct {
- API bool `json:"API"`
- RAM int64 `json:"ram"`
- VCPUs int `json:"vcpus"`
- KeepCacheRAM int64 `json:"keep_cache_ram"`
- CUDADriverVersion string `json:"cuda_driver_version,omitempty"`
- CUDACubinHardwareCapability []string `json:"cuda_cubin_hardware_capability,omitempty"`
- CUDAPTXHardwardCapability string `json:"cuda_ptx_hardware_capability,omitempty"`
- CUDADeviceCount int `json:"cuda_device_count,omitempty"`
+ API bool `json:"API"`
+ RAM int64 `json:"ram"`
+ VCPUs int `json:"vcpus"`
+ KeepCacheRAM int64 `json:"keep_cache_ram"`
+ CUDADriverVersion string `json:"cuda_driver_version,omitempty"`
+ CUDAHardwareCapability string `json:"cuda_hardware_capability,omitempty"`
+ CUDADeviceCount int `json:"cuda_device_count,omitempty"`
}
// SchedulingParameters specify a container's scheduling parameters