Skip to main content

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::Workload
  • mlsdk::workloadlib::Context
  • mlsdk::workloadlib::Session
  • mlsdk::workloadlib::BindingSet
  • mlsdk::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

  • mlworkloadlib is install-tree consumable today via find_package(MLWorkloadLibraryForVulkan).
  • mlworkloadlib depends 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)

Table of built distributions (wheels) for ai-ml-workload-library-for-vulkan 0.11.0
File
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

Release history Release notifications | RSS feed

This release

0.11.0 This release

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page