From 6d98cb3e5185d986c77fa5e6f18c0b74f5b8d6fd Mon Sep 17 00:00:00 2001 From: vsoch Date: Fri, 15 Mar 2024 13:18:15 -0600 Subject: [PATCH] refactor: separating supercontainers into resource types Problem: we want to be able to ask for subsystem resources on a more granular level. Solution: separate supercontainers out into each of mpi, hardware, network (communication) and os. The use case is that if we are registering different subsystems to a graph, the different resource types should be more modularity defined. Signed-off-by: vsoch --- README.md | 4 +- hardware/compspec.json | 79 ++++++++++++++++ mpi/compspec.json | 58 ++++++++++++ network/compspec.json | 34 +++++++ os/compspec.json | 50 ++++++++++ supercontainers/compspec.json | 168 ---------------------------------- 6 files changed, 223 insertions(+), 170 deletions(-) create mode 100644 hardware/compspec.json create mode 100644 mpi/compspec.json create mode 100644 network/compspec.json create mode 100644 os/compspec.json delete mode 100644 supercontainers/compspec.json diff --git a/README.md b/README.md index fc86df0..e8fe87a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Compspec +# Compspec Schemas This is a prototype repository for compatibility specifications that are being worked on by the [OCI compatibility working group](https://github.com/opencontainers/wg-image-compatibility). While that work is underway (and the structure and format of these metadata to be determined. For the time being we have defined two things: @@ -14,7 +14,7 @@ Both of the above are based on proposals [C](https://github.com/opencontainers/w ## Organization -The different subdirectories of compatibility families (sets of metadata owned by different groups). +The different subdirectories of compatibility families (sets of metadata owned by different groups). We originally had a nested group under supercontainers, and these have been separated out to distinguish a family of attributes like MPI from another like gpu. The supercontainers is also removed for the time being to brand it as a generic kind of subsystem. Likely these metadata can be moved to be owned properly by the group. They are all kept here for the time being for ease of access. Also for the time being, we have represented the entire set of labels (and smaller namespaces) for one compatibiilty family (e.g., supercontainers) in one JSON file, and of course this is subject to change. diff --git a/hardware/compspec.json b/hardware/compspec.json new file mode 100644 index 0000000..543790c --- /dev/null +++ b/hardware/compspec.json @@ -0,0 +1,79 @@ +{ + "graph": { + "id": "hardware", + "type": "compspec", + "label": "compatibilities", + "nodes": { + "hardware": { + "label": "hardware" + }, + "hardware.gpu": { + "label": "gpu hardware" + }, + "hardware.gpu.enabled": { + "label": "true if gpu is enabled" + }, + "hardware.gpu.driver": { + "label": "gpu driver" + }, + "hardware.gpu.architecture": { + "label": "gpu architecture" + }, + "hardware.gpu.driver.version": { + "label": "gpu driver version" + }, + "hardware.gpu.cuda": { + "label": "gpu cuda" + }, + "hardware.gpu.cuda.version": { + "label": "cuda version" + } + }, + "edges": [ + { + "source": "hardware", + "target": "hardware.gpu", + "relation": "contains" + }, + { + "source": "hardware.gpu", + "target": "hardware.gpu.enabled", + "relation": "contains" + }, + { + "source": "hardware.gpu", + "target": "hardware.gpu.driver", + "relation": "contains" + }, + { + "source": "hardware.gpu.driver", + "target": "hardware.gpu.driver.version", + "relation": "contains" + }, + { + "source": "hardware.gpu", + "target": "hardware.gpu.architecture", + "relation": "contains" + }, + { + "source": "hardware.gpu", + "target": "hardware.gpu.version", + "relation": "contains" + }, + { + "source": "hardware.gpu", + "target": "hardware.gpu.cuda", + "relation": "contains" + }, + { + "source": "hardware.gpu.cuda", + "target": "hardware.gpu.cuda.version", + "relation": "contains" + } + ], + "metadata": { + "version": "0.0.0", + "source": "https://github.com/compspec/schemas" + } + } +} diff --git a/mpi/compspec.json b/mpi/compspec.json new file mode 100644 index 0000000..254de21 --- /dev/null +++ b/mpi/compspec.json @@ -0,0 +1,58 @@ +{ + "graph": { + "id": "mpi", + "type": "compspec", + "label": "compatibilities", + "nodes": { + "mpi": { + "label": "message passing interface (mpi)" + }, + "mpi.implementation": { + "label": "mpi implementation" + }, + "mpi.version": { + "label": "mpi version" + }, + "mpi.portability": { + "label": "mpi portability attributes" + }, + "mpi.portability.optimization": { + "label": "mpi portability optimization" + }, + "mpi.portability.mode": { + "label": "mpi portability mode" + } + }, + "edges": [ + { + "source": "mpi", + "target": "mpi.version", + "relation": "contains" + }, + { + "source": "mpi", + "target": "mpi.implementation", + "relation": "contains" + }, + { + "source": "mpi", + "target": "mpi.portability", + "relation": "contains" + }, + { + "source": "mpi.portability", + "target": "mpi.portability.optimization", + "relation": "contains" + }, + { + "source": "mpi.portability", + "target": "mpi.portability.mode", + "relation": "contains" + } + ], + "metadata": { + "version": "0.0.0", + "source": "https://github.com/compspec/schemas" + } + } +} diff --git a/network/compspec.json b/network/compspec.json new file mode 100644 index 0000000..f722ade --- /dev/null +++ b/network/compspec.json @@ -0,0 +1,34 @@ +{ + "graph": { + "id": "network", + "type": "compspec", + "label": "compatibilities", + "nodes": { + "network": { + "label": "network" + }, + "network.communication": { + "label": "communication" + }, + "network.communication.framework": { + "label": "communication framework" + } + }, + "edges": [ + { + "source": "network", + "target": "network.communication", + "relation": "contains" + }, + { + "source": "network.communication", + "target": "network.communication.framework", + "relation": "contains" + } + ], + "metadata": { + "version": "0.0.0", + "source": "https://github.com/supercontainers/compspec" + } + } +} diff --git a/os/compspec.json b/os/compspec.json new file mode 100644 index 0000000..6b43d00 --- /dev/null +++ b/os/compspec.json @@ -0,0 +1,50 @@ +{ + "graph": { + "id": "os", + "type": "compspec", + "label": "compatibilities", + "nodes": { + "os": { + "label": "operating system" + }, + "os.name": { + "label": "operating system name" + }, + "os.release": { + "label": "operating system release" + }, + "os.vendor": { + "label": "operating system vendor" + }, + "os.version": { + "label": "operating system version" + } + }, + "edges": [ + { + "source": "os", + "target": "os.name", + "relation": "contains" + }, + { + "source": "os", + "target": "os.release", + "relation": "contains" + }, + { + "source": "os", + "target": "os.vendor", + "relation": "contains" + }, + { + "source": "os", + "target": "os.version", + "relation": "contains" + } + ], + "metadata": { + "version": "0.0.0", + "source": "https://github.com/supercontainers/compspec" + } + } +} diff --git a/supercontainers/compspec.json b/supercontainers/compspec.json deleted file mode 100644 index 0474b6c..0000000 --- a/supercontainers/compspec.json +++ /dev/null @@ -1,168 +0,0 @@ -{ - "graph": { - "id": "org.supercontainers", - "type": "compspec", - "label": "compatibilities", - "nodes": { - "mpi": { - "label": "message passing interface (mpi)" - }, - "mpi.implementation": { - "label": "mpi implementation" - }, - "mpi.version": { - "label": "mpi version" - }, - "mpi.portability": { - "label": "mpi portability attributes" - }, - "mpi.portability.optimization": { - "label": "mpi portability optimization" - }, - "mpi.portability.mode": { - "label": "mpi portability mode" - }, - "os": { - "label": "operating system" - }, - "os.name": { - "label": "operating system name" - }, - "os.release": { - "label": "operating system release" - }, - "os.vendor": { - "label": "operating system vendor" - }, - "os.version": { - "label": "operating system version" - }, - "hardware": { - "label": "hardware" - }, - "hardware.gpu": { - "label": "gpu hardware" - }, - "hardware.gpu.enabled": { - "label": "true if gpu is enabled" - }, - "hardware.gpu.driver": { - "label": "gpu driver" - }, - "hardware.gpu.architecture": { - "label": "gpu architecture" - }, - "hardware.gpu.driver.version": { - "label": "gpu driver version" - }, - "hardware.gpu.cuda": { - "label": "gpu cuda" - }, - "hardware.gpu.cuda.version": { - "label": "cuda version" - }, - "communication": { - "label": "communication" - }, - "communication.framework": { - "label": "communication framework" - } - }, - "edges": [ - { - "source": "mpi", - "target": "mpi.version", - "relation": "contains" - }, - { - "source": "mpi", - "target": "mpi.implementation", - "relation": "contains" - }, - { - "source": "mpi", - "target": "mpi.portability", - "relation": "contains" - }, - { - "source": "mpi.portability", - "target": "mpi.portability.optimization", - "relation": "contains" - }, - { - "source": "mpi.portability", - "target": "mpi.portability.mode", - "relation": "contains" - }, - { - "source": "os", - "target": "os.name", - "relation": "contains" - }, - { - "source": "os", - "target": "os.release", - "relation": "contains" - }, - { - "source": "os", - "target": "os.vendor", - "relation": "contains" - }, - { - "source": "os", - "target": "os.version", - "relation": "contains" - }, - { - "source": "hardware", - "target": "hardware.gpu", - "relation": "contains" - }, - { - "source": "hardware.gpu", - "target": "hardware.gpu.enabled", - "relation": "contains" - }, - { - "source": "hardware.gpu", - "target": "hardware.gpu.driver", - "relation": "contains" - }, - { - "source": "hardware.gpu.driver", - "target": "hardware.gpu.driver.version", - "relation": "contains" - }, - { - "source": "hardware.gpu", - "target": "hardware.gpu.architecture", - "relation": "contains" - }, - { - "source": "hardware.gpu", - "target": "hardware.gpu.version", - "relation": "contains" - }, - { - "source": "hardware.gpu", - "target": "hardware.gpu.cuda", - "relation": "contains" - }, - { - "source": "hardware.gpu.cuda", - "target": "hardware.gpu.cuda.version", - "relation": "contains" - }, - { - "source": "communication", - "target": "communication.framework", - "relation": "contains" - } - ], - "metadata": { - "version": "0.0.0", - "source": "https://github.com/supercontainers/compspec" - } - } -}