[ARVADOS] created: 2.1.0-1762-gbed472363

Git user git at public.arvados.org
Wed Dec 22 21:27:50 UTC 2021


        at  bed472363447f572f9664ff8b3d5a056fc87ec4f (commit)


commit bed472363447f572f9664ff8b3d5a056fc87ec4f
Author: Peter Amstutz <peter.amstutz at curii.com>
Date:   Wed Dec 22 16:27:06 2021 -0500

    18323: Revise in line with the cwltool version of this feature
    
    Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz at curii.com>

diff --git a/doc/user/cwl/cwl-extensions.html.textile.liquid b/doc/user/cwl/cwl-extensions.html.textile.liquid
index dcddace14..0580dca28 100644
--- a/doc/user/cwl/cwl-extensions.html.textile.liquid
+++ b/doc/user/cwl/cwl-extensions.html.textile.liquid
@@ -59,10 +59,10 @@ hints:
       property2: $(inputs.value2)
 
   arv:CUDARequirement:
-    minCUDADriverVersion: "11.0"
-    minCUDAHardwareCapability: "9.0"
-    minDeviceCount: 1
-    maxDeviceCount: 1
+    cudaVersionMin: "11.0"
+    cudaComputeCapabilityMin: "9.0"
+    deviceCountMin: 1
+    deviceCountMax: 1
 {% endcodeblock %}
 
 h2(#RunInSingleContainer). arv:RunInSingleContainer
@@ -159,10 +159,10 @@ Request support for Nvidia CUDA GPU acceleration in the container.  Assumes that
 
 table(table table-bordered table-condensed).
 |_. Field |_. Type |_. Description |
-|minCUDADriverVersion|string|Required.  The CUDA SDK version corresponding to the minimum driver version supported by the container (generally, the SDK version 'X.Y' the application was compiled against).|
-|minCUDAHardwareCapability|string|Required.  The minimum CUDA hardware capability (in 'X.Y' format) required by the application's PTX or C++ GPU code (will be JIT compiled for the available hardware).|
-|minDeviceCount|integer|Minimum number of GPU devices to allocate on a single node. Required.|
-|maxDeviceCount|integer|Maximum number of GPU devices to allocate on a single node. Optional.  If not specified, same as @minDeviceCount at .|
+|cudaVersionMin|string|Required.  The CUDA SDK version corresponding to the minimum driver version supported by the container (generally, the SDK version 'X.Y' the application was compiled against).|
+|cudaComputeCapabilityMin|string|Required.  The minimum CUDA hardware capability (in 'X.Y' format) required by the application's PTX or C++ GPU code (will be JIT compiled for the available hardware).|
+|deviceCountMin|integer|Minimum number of GPU devices to allocate on a single node. Required.|
+|deviceCountMax|integer|Maximum number of GPU devices to allocate on a single node. Optional.  If not specified, same as @minDeviceCount at .|
 
 h2. arv:dockerCollectionPDH
 
diff --git a/sdk/cwl/arvados_cwl/arv-cwl-schema-v1.0.yml b/sdk/cwl/arvados_cwl/arv-cwl-schema-v1.0.yml
index 6f5e7980d..d5efa31a0 100644
--- a/sdk/cwl/arvados_cwl/arv-cwl-schema-v1.0.yml
+++ b/sdk/cwl/arvados_cwl/arv-cwl-schema-v1.0.yml
@@ -331,29 +331,41 @@ $graph:
         mapPredicate: propertyValue
 
 
-- name: CUDARequirement
+- name: cwltool:CUDARequirement
   type: record
   extends: cwl:ProcessRequirement
   inVocab: false
   doc: |
-    Require support for Nvidia CUDA (GPU hardware acceleration).
+    Require support for NVIDA CUDA (GPU hardware acceleration).
   fields:
     class:
       type: string
-      doc: 'arv:CUDARequirement'
+      doc: 'cwltool:CUDARequirement'
       jsonldPredicate:
         _id: "@type"
         _type: "@vocab"
-    minCUDADriverVersion:
+    cudaVersionMin:
       type: string
-      doc: Minimum CUDA driver version to run the software, in X.Y format of the associated CUDA SDK release.
-    minCUDAHardwareCapability:
+      doc: |
+        Minimum CUDA version to run the software, in X.Y format.  This
+        corresponds to a CUDA SDK release.  When running directly on
+        the host (not in a container) the host must have a compatible
+        CUDA SDK (matching the exact version, or, starting with CUDA
+        11.3, matching major version).  When run in a container, the
+        container image should provide the CUDA runtime, and the host
+        driver is injected into the container.  In this case, because
+        CUDA drivers are backwards compatible, it is possible to
+        use an older SDK with a newer driver across major versions.
+
+        See https://docs.nvidia.com/deploy/cuda-compatibility/ for
+        details.
+    cudaComputeCapabilityMin:
       type: string
       doc: Minimum CUDA hardware capability required to run the software, in X.Y format.
-    minDeviceCount:
+    deviceCountMin:
       type: int?
       default: 1
-      doc: Minimum number of GPU devices to request, or 1.
-    maxDeviceCount:
+      doc: Minimum number of GPU devices to request, default 1.
+    deviceCountMax:
       type: int?
-      doc: Maximum number of GPU devices to request.  If not specified, same as `minDeviceCount`.
+      doc: Maximum number of GPU devices to request.  If not specified, same as `deviceCountMin`.
diff --git a/sdk/cwl/arvados_cwl/arv-cwl-schema-v1.1.yml b/sdk/cwl/arvados_cwl/arv-cwl-schema-v1.1.yml
index 5dbb838f1..4a6b6947f 100644
--- a/sdk/cwl/arvados_cwl/arv-cwl-schema-v1.1.yml
+++ b/sdk/cwl/arvados_cwl/arv-cwl-schema-v1.1.yml
@@ -274,29 +274,41 @@ $graph:
         mapPredicate: propertyValue
 
 
-- name: CUDARequirement
+- name: cwltool:CUDARequirement
   type: record
   extends: cwl:ProcessRequirement
   inVocab: false
   doc: |
-    Require support for Nvidia CUDA (GPU hardware acceleration).
+    Require support for NVIDA CUDA (GPU hardware acceleration).
   fields:
     class:
       type: string
-      doc: 'arv:CUDARequirement'
+      doc: 'cwltool:CUDARequirement'
       jsonldPredicate:
         _id: "@type"
         _type: "@vocab"
-    minCUDADriverVersion:
+    cudaVersionMin:
       type: string
-      doc: Minimum CUDA driver version to run the software, in X.Y format of the associated CUDA SDK release.
-    minCUDAHardwareCapability:
+      doc: |
+        Minimum CUDA version to run the software, in X.Y format.  This
+        corresponds to a CUDA SDK release.  When running directly on
+        the host (not in a container) the host must have a compatible
+        CUDA SDK (matching the exact version, or, starting with CUDA
+        11.3, matching major version).  When run in a container, the
+        container image should provide the CUDA runtime, and the host
+        driver is injected into the container.  In this case, because
+        CUDA drivers are backwards compatible, it is possible to
+        use an older SDK with a newer driver across major versions.
+
+        See https://docs.nvidia.com/deploy/cuda-compatibility/ for
+        details.
+    cudaComputeCapabilityMin:
       type: string
       doc: Minimum CUDA hardware capability required to run the software, in X.Y format.
-    minDeviceCount:
+    deviceCountMin:
       type: int?
       default: 1
-      doc: Minimum number of GPU devices to request, or 1.
-    maxDeviceCount:
+      doc: Minimum number of GPU devices to request, default 1.
+    deviceCountMax:
       type: int?
-      doc: Maximum number of GPU devices to request.  If not specified, same as `minDeviceCount`.
+      doc: Maximum number of GPU devices to request.  If not specified, same as `deviceCountMin`.
diff --git a/sdk/cwl/arvados_cwl/arv-cwl-schema-v1.2.yml b/sdk/cwl/arvados_cwl/arv-cwl-schema-v1.2.yml
index 5fbe5bd7f..e95b6543f 100644
--- a/sdk/cwl/arvados_cwl/arv-cwl-schema-v1.2.yml
+++ b/sdk/cwl/arvados_cwl/arv-cwl-schema-v1.2.yml
@@ -276,29 +276,41 @@ $graph:
         mapPredicate: propertyValue
 
 
-- name: CUDARequirement
+- name: cwltool:CUDARequirement
   type: record
   extends: cwl:ProcessRequirement
   inVocab: false
   doc: |
-    Require support for Nvidia CUDA (GPU hardware acceleration).
+    Require support for NVIDA CUDA (GPU hardware acceleration).
   fields:
     class:
       type: string
-      doc: 'arv:CUDARequirement'
+      doc: 'cwltool:CUDARequirement'
       jsonldPredicate:
         _id: "@type"
         _type: "@vocab"
-    minCUDADriverVersion:
+    cudaVersionMin:
       type: string
-      doc: Minimum CUDA driver version to run the software, in X.Y format of the associated CUDA SDK release.
-    minCUDAHardwareCapability:
+      doc: |
+        Minimum CUDA version to run the software, in X.Y format.  This
+        corresponds to a CUDA SDK release.  When running directly on
+        the host (not in a container) the host must have a compatible
+        CUDA SDK (matching the exact version, or, starting with CUDA
+        11.3, matching major version).  When run in a container, the
+        container image should provide the CUDA runtime, and the host
+        driver is injected into the container.  In this case, because
+        CUDA drivers are backwards compatible, it is possible to
+        use an older SDK with a newer driver across major versions.
+
+        See https://docs.nvidia.com/deploy/cuda-compatibility/ for
+        details.
+    cudaComputeCapabilityMin:
       type: string
       doc: Minimum CUDA hardware capability required to run the software, in X.Y format.
-    minDeviceCount:
+    deviceCountMin:
       type: int?
       default: 1
-      doc: Minimum number of GPU devices to request, or 1.
-    maxDeviceCount:
+      doc: Minimum number of GPU devices to request, default 1.
+    deviceCountMax:
       type: int?
-      doc: Maximum number of GPU devices to request.  If not specified, same as `minDeviceCount`.
+      doc: Maximum number of GPU devices to request.  If not specified, same as `deviceCountMin`.
diff --git a/sdk/cwl/arvados_cwl/arvcontainer.py b/sdk/cwl/arvados_cwl/arvcontainer.py
index 6372caaa3..979b102cb 100644
--- a/sdk/cwl/arvados_cwl/arvcontainer.py
+++ b/sdk/cwl/arvados_cwl/arvcontainer.py
@@ -294,9 +294,9 @@ class ArvadosContainer(JobBase):
         cuda_req, _ = self.get_requirement("http://arvados.org/cwl#CUDARequirement")
         if cuda_req:
             runtime_constraints["cuda"] = {
-                "device_count": cuda_req.get("minDeviceCount", 1),
-                "driver_version": cuda_req["minCUDADriverVersion"],
-                "hardware_capability": cuda_req["minCUDAHardwareCapability"]
+                "device_count": cuda_req.get("deviceCountMin", 1),
+                "driver_version": cuda_req["cudaVersionMin"],
+                "hardware_capability": cuda_req["cudaComputeCapabilityMin"]
             }
 
         if self.timelimit is not None and self.timelimit > 0:

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list