ML Workload Library for Vulkan®
The Workload Library provides an experimental C++ API for constructing executable ML workloads for Vulkan® and running them through a common resource-binding and execution model.
Public API
Include the installed public headers that your application requires:
#include <mlworkloadlib/workload.hpp>
#include <mlworkloadlib/context.hpp>
#include <mlworkloadlib/session.hpp>
The API exposes:
mlsdk::workloadlib::Workloadmlsdk::workloadlib::Contextmlsdk::workloadlib::Sessionmlsdk::workloadlib::BindingSetmlsdk::workloadlib::PreparedExecution
You can create the following workloads:
- VGF-backed workloads with
Workload::fromVGF(...) - Standalone compute shader workloads with
Workload::fromComputeShader(...) - Standalone Vulkan® data graph workloads with
Workload::fromDataGraph(...)
Use Context::wrap(...) to provide application-owned Vulkan® objects, or
use Context::create() to create a runtime-owned Vulkan® context.
Building the ML Workload Library for Vulkan® from source
The build system must have:
- C/C++ 17 compiler: GCC or Clang on Linux, Clang on Darwin, or MSVC on Windows®.
- CMake 3.25 or later.
- Ninja 1.8.2 or later.
- Python 3.10 or later. Required python libraries for building are listed in
tooling-requirements.txt. - Doxygen 1.9.1 or later. (When building documentation)
To create an archive containing the build artifacts, pass the --package-type
option with an archive type such as zip or tgz. Use --package-dir to
choose where the archive is written; by default, packages are written to the
build directory.
For more command line options, see the help output:
python3 scripts/build.py --help
Build-tree usage
Enable the library when configuring the standalone project:
cmake -S . -B build
Link one of the build-tree targets:
target_link_libraries(my_target PRIVATE mlworkloadlib)
Alternatively, link a namespaced target in the same build:
target_link_libraries(my_target PRIVATE MLWorkloadLibraryForVulkan::mlworkloadlib)
Installed package usage
When the ML Workload Library for Vulkan® is installed, the package exports mlworkloadlib through the
MLWorkloadLibraryForVulkan package. Downstream consumers must use
MLWorkloadLibraryForVulkan::mlworkloadlib.
find_package(MLWorkloadLibraryForVulkan CONFIG REQUIRED)
target_link_libraries(my_target PRIVATE MLWorkloadLibraryForVulkan::mlworkloadlib)
The package target requires the VGF and VulkanHeaders packages to be
discoverable at configure time.
Optional VGF support
VGF workload support is enabled by default. Disable it when the library is only needed for programmatically constructed workloads:
python3 scripts/build.py --disable-vgf-support
For direct CMake configuration, set ML_WORKLOAD_LIB_ENABLE_VGF_SUPPORT=OFF.
Such builds do not locate or link VGF Lib. Calls to Workload::fromVGF(...)
throw an exception indicating that VGF support is unavailable.
Optional source module support
The base library supports SPIR-V™ modules. You can choose to enable GLSL and HLSL source compilation when you build the library:
python3 scripts/build.py --enable-glsl-support
python3 scripts/build.py --enable-hlsl-support
Use --glslang-path or --dxc-path when the dependency is not in the default
location. For direct CMake configuration, use
ML_WORKLOAD_LIB_ENABLE_GLSL_SUPPORT with GLSLANG_PATH, or
ML_WORKLOAD_LIB_ENABLE_HLSL_SUPPORT with DXC_PATH.
Applications can query the source backends available in the linked library with
mlsdk::workloadlib::supports(...).
Documentation
Install Doxygen and the Python documentation tool dependencies and build the HTML documentation:
python3 -m pip install -r tooling-requirements.txt
python3 scripts/build.py --doc
The generated documentation is available at build/docs/out/index.html.
Consumption model
mlworkloadlibis install-tree consumable today viafind_package(MLWorkloadLibraryForVulkan).mlworkloadlibdepends on external packages (VGF,VulkanHeaders), and those dependencies are resolved via the standalone package config.
License
The ML Workload Library for Vulkan® is distributed under the software licenses in
the LICENSES directory.
Trademark notice
Arm® is a registered trademark of Arm Limited (or its subsidiaries) in the US and/or elsewhere.
Khronos® and Vulkan® are registered trademarks, and SPIR-V™ is a trademark of The Khronos Group Inc..
Metadata
Release files for ai-ml-workload-library-for-vulkan 0.11.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| ai_ml_workload_library_for_vulkan-0.11.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| ai_ml_workload_library_for_vulkan-0.11.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | Python 3 | none | Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 | Details |
| ai_ml_workload_library_for_vulkan-0.11.0-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl | Python 3 | none | Linux glibc 2.28+ ARM64, Linux glibc 2.24+ ARM64 | Details |
| ai_ml_workload_library_for_vulkan-0.11.0-py3-none-macosx_15_0_arm64.whl | Python 3 | none | macOS 15.0+ ARM64 | Details |
Total release size: 4.0 MB
Release files / ai_ml_workload_library_for_vulkan-0.11.0-py3-none-win_amd64.whl
| Download URL | ai_ml_workload_library_for_vulkan-0.11.0-py3-none-win_amd64.whl |
|---|---|
| Size | 2.2 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
a46ba9baac365ad64a8537331f7c682b37a82fb6ceaceee3dac024cbb871fcd8
|
|
BLAKE2b-256 checksum How to use checksums |
2d5f4d4fb589bcbd26796936937349bcda94194832e8d59143a6c36bca1b4baf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.8
|
Release files / ai_ml_workload_library_for_vulkan-0.11.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ai_ml_workload_library_for_vulkan-0.11.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 685.4 kB |
| Tags | Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
6c9f6420affd27a1f74cf0d1233a0953de4aa2ca859a2f3ed0517020bf48431a
|
|
BLAKE2b-256 checksum How to use checksums |
0ef3ca8d5df1204739c1187da163bdb79c9544d5bd9675aa3316fc51183799b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.8
|
Release files / ai_ml_workload_library_for_vulkan-0.11.0-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ai_ml_workload_library_for_vulkan-0.11.0-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 646.6 kB |
| Tags | Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
2c032f78f5eac9af6fd88620bd91fcb0b516e447e398e9b5965d4abb92437f6c
|
|
BLAKE2b-256 checksum How to use checksums |
247b9a31bb3bf9caec5f908ae9efe6277a9804ae24305f98b7d0c37a7edba520
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.8
|
Release files / ai_ml_workload_library_for_vulkan-0.11.0-py3-none-macosx_15_0_arm64.whl
| Download URL | ai_ml_workload_library_for_vulkan-0.11.0-py3-none-macosx_15_0_arm64.whl |
|---|---|
| Size | 510.7 kB |
| Tags | Python 3 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
05b6082b58f8667312fb0814c3d1fbd6babd6f76932e2bcceef05a6640c02f4f
|
|
BLAKE2b-256 checksum How to use checksums |
b4b5a7dd7678d01801bfe166cf759090398f35e924c7974a5f8b2ebcc198cd1f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.8
|