Installation guide
A working DENKflow installation has three layers:
- Required host drivers and device integration, such as the NVIDIA driver, Intel GPU/NPU drivers, or the Ambarella Cavalry driver and firmware.
- The
DENKflowpackage. - Release-pinned native runtimes managed by DENKflow under
<data dir>/dependencies/.
ONNX Runtime 1.22.1 is always managed by DENKflow. For CUDA, TensorRT, DirectML, and OpenVINO, a compatible system runtime may be reused; otherwise DENKflow downloads a managed copy when the pipeline is first initialized.
Supported languages
- Python: wheel installable via
pip(Python3.10,3.11,3.12,3.13). - C#: NuGet package for .NET 8.
- C/C++: shared library plus the
denkflow.hheader.
Choose your runtime
Choose the execution provider for your exported pipeline or API configuration based on the deployment hardware:
CPU: Works on all platforms. Easiest path for first bring-up and debugging.CUDA: NVIDIA GPU only (Linux x86_64, Windows x86_64, Jetson). Requires a driver new enough for the CUDA major version you install, then a CUDA toolkit and cuDNN version accepted by the DENKflow release.TensorRT: NVIDIA GPU only; requires a working CUDA setup first, and TensorRT must match that CUDA stack. On Jetson, stay on JetPack (do not layer desktop CUDA/TensorRT packages on top). First run can be slow while an optimized build is prepared and cached.OpenVINO: Linux and Windows x86_64 only. Intel CPU is the most straightforward path; Intel GPU/NPU also need the correct Intel drivers/runtime on the host.DirectML: Windows x86_64 only; for GPU inference when you are not using the NVIDIA CUDA stack.Ambarella Cavalry: Supported Ambarella CV22, CV72, CV75, N1, and N1-655 devices running Linux ARM64. Use the compiled ARM64 package and the Hub export target for the exact chip.
Compatibility matrix
| OS / Architecture | CPU | CUDA | TensorRT | DirectML | OpenVINO |
|---|---|---|---|---|---|
| Linux x86_64 | yes | yes | yes | no | yes |
| Windows x86_64 | yes | yes | yes | yes | yes |
| Linux ARM64 / Jetson | yes | yes | Orin class devices | no | no |
Ambarella is a separate target-specific accelerator path rather than an ONNX Runtime execution provider. See Ambarella deployment for its supported chips and prerequisites.
Vendor download pages
DENKflow tries to resolve its dependencies automatically. If you want to set them up yourself, you can find the necessary files under the following links:
- NVIDIA CUDA Toolkit: developer.nvidia.com/cuda-downloads
- NVIDIA cuDNN: developer.nvidia.com/cudnn-downloads
- NVIDIA TensorRT: developer.nvidia.com/tensorrt/download
- Intel OpenVINO: docs.openvino.ai
- NVIDIA JetPack / SDK Manager: developer.nvidia.com/embedded/jetpack
Python package
All supported platforms and execution providers use one package:
pip install denkflow --extra-index-url https://__token__:gldt-JCgXB7jPAo_b6JXAckFV@gitlab.com/api/v4/projects/69262737/packages/pypi/simple
On the first run, ONNX Runtime 1.22.1 is downloaded under
<data dir>/dependencies/onnxruntime/ and any required accelerator
dependencies are resolved. Set DENKFLOW_NONINTERACTIVE=1 for unattended startup, persist
DENKFLOW_DATA_DIRECTORY in containers, or place matching offline
.denkdependency archives in <data dir>/dependencies/ or the dependency
import directory.
C# package
Install the .NET 8 SDK, then add the DENKflow NuGet package source:
dotnet nuget add source \
"https://gitlab.com/api/v4/projects/86221014/packages/nuget/index.json" \
--name denkflow-packages \
--username denkflow \
--password gldt-xdm6RFs49LDiyx6XvP9K \
--store-password-in-clear-text
From an existing .NET 8 project, install the package:
dotnet add package DenkFlow
C/C++ release packages
The C-API is delivered as a shared library plus the denkflow.h header. Download the platform package from:
A release contains:
denkflow.h- Linux:
libdenkflow.so - Windows:
denkflow.dllanddenkflow.dll.lib
The C-API uses the same managed dependency directory and first-use flow as Python.
The platform prerequisites in Choose your runtime still apply for native deployments.
Linux x86_64
- Python
- C / C++
Use a clean virtual environment for the deployment:
python -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
CPU only
pip install denkflow --extra-index-url https://__token__:gldt-JCgXB7jPAo_b6JXAckFV@gitlab.com/api/v4/projects/69262737/packages/pypi/simple
OpenVINO
What to install on the machine:
- Ensure Python and
venvsupport are installed. - For Intel GPU or NPU execution, install the current Intel graphics or NPU driver for the host OS first.
- For Intel GPU: install the OpenCL ICD loader and the Intel compute-runtime so OpenVINO can access the GPU.
- Install the Python environment and
DENKflow. - Optionally install Intel's
openvinoPython package if you want to inspect devices withopenvino.Core()directly.
Intel GPU system dependencies (Ubuntu / Debian):
sudo apt install intel-opencl-icd
Intel GPU system dependencies (Fedora / RHEL):
sudo dnf install ocl-icd intel-opencl
Verify GPU visibility (optional):
sudo apt install clinfo # or dnf install clinfo
clinfo -l
# Should list an Intel GPU device
Intel GPU system dependencies (Windows):
On Windows the necessary files are automatically installed with the Intel HD Graphics driver.
Install DENKflow:
pip install denkflow --extra-index-url https://__token__:gldt-JCgXB7jPAo_b6JXAckFV@gitlab.com/api/v4/projects/69262737/packages/pypi/simple
# Initialize a representative DENKflow pipeline to resolve and verify its runtime.
Initialize an OpenVINO pipeline and inspect the DENKflow logs to verify the selected provider.
Optional device inspection:
python -m pip install openvino
python - <<'PY'
import openvino as ov
core = ov.Core()
print(core.available_devices)
PY
If GPU does not appear in the device list but you have an Intel integrated or discrete GPU, the OpenCL ICD loader or Intel compute-runtime is missing. See Troubleshooting > OpenVINO Fails With "Failed to load shared library".
CUDA
What to install on the machine:
- Install the NVIDIA GPU driver and reboot if required.
- Verify the driver with
nvidia-smi. - Install CUDA
12.xfrom the NVIDIA repository or runfile that matches your distribution. - Install cuDNN
9.xthat matches the CUDA major version you selected. - Open a new shell and verify both the driver and toolkit before installing
DENKflow.
Suggested verification before pip install:
nvidia-smi
nvcc --version
python - <<'PY'
import os
print("CUDA_PATH =", os.environ.get("CUDA_PATH"))
PY
If nvcc is not on PATH, the toolkit is either not installed or the shell environment was not refreshed after installation.
pip install denkflow --extra-index-url https://__token__:gldt-JCgXB7jPAo_b6JXAckFV@gitlab.com/api/v4/projects/69262737/packages/pypi/simple
# Initialize a representative DENKflow pipeline to resolve and verify its runtime.
Initialize a CUDA pipeline and inspect the DENKflow logs to verify the selected provider.
TensorRT
Install TensorRT only after plain CUDA works.
What to install on the machine:
- Complete the full CUDA setup first.
- Download TensorRT
10.xthat explicitly matches your CUDA stack. - Install it from the NVIDIA repository, local package, or tar archive for your Linux distribution.
- Ensure the directory containing
libnvinfer.soand related TensorRT libraries is visible to the dynamic loader. - Verify the library discovery before starting Python.
Suggested verification before pip install:
ldconfig -p | grep nvinfer
Initialize a TensorRT pipeline to resolve and verify its dependencies. The first real inference is expected to be slower because TensorRT builds an optimized engine.
- Download the Linux C-API package from DENKflow-C-API Releases.
- Place
denkflow.hin your include path. - Place
libdenkflow.soin your runtime library path; DENKflow manages ONNX Runtime and provider dependencies in its data directory. - Link against
libdenkflow.so.
Example compile command:
g++ main.cpp -I./include -L./lib -ldenkflow -Wl,-rpath,'$ORIGIN/lib' -o app
Example runtime setup:
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
export DENKFLOW_DATA_DIRECTORY=$HOME/.config/denkflow
./app
Accelerator notes:
- CUDA / TensorRT: install the matching NVIDIA runtime libraries on the target host (driver + CUDA + cuDNN, plus TensorRT for the TensorRT path). The Python prerequisites in the Python tab apply identically.
- OpenVINO: install the matching Intel runtime stack and any required Intel device drivers. For Intel GPU execution on Linux, the OpenCL ICD loader (
libOpenCL.so.1) and the Intel compute-runtime (intel-opencl-icd) must be installed. - Managed runtime libraries: keep the SDK data directory writable and persistent. DENKflow activates ONNX Runtime and managed provider libraries before creating a session; do not copy them beside the application.
Windows x86_64
- Python
- C / C++
Use a clean virtual environment for the deployment:
py -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install --upgrade pip
Install DENKflow
pip install denkflow --extra-index-url https://__token__:gldt-JCgXB7jPAo_b6JXAckFV@gitlab.com/api/v4/projects/69262737/packages/pypi/simple
NVIDIA GPU stack: CUDA, cuDNN, and TensorRT (Windows)
DENKflow's managed ONNX Runtime 1.22.1 supports the release's CUDA 12.x and cuDNN 9.x compatibility band. Your driver must be new enough for the CUDA toolkit you install (check the driver's “CUDA Version” line in nvidia-smi against NVIDIA CUDA compatibility).
Install in order: driver → optional compatible CUDA Toolkit/cuDNN → optional TensorRT → new terminal → pip install denkflow. If compatible user-space CUDA or TensorRT runtimes are absent, DENKflow tries to download these dependencies by itself.
1) NVIDIA graphics driver (host)
-
Open NVIDIA Driver Downloads.
-
Select product type (e.g. GeForce / RTX / Quadro), product series, product, Operating System: Windows 10 / Windows 11, and Download Type: Standard (or DCH if that is what your OEM uses).
-
Download the installer and run it.
-
Prefer Express installation unless IT requires Custom (e.g. to skip GeForce Experience). Accept the license and complete the wizard.
-
Reboot if the installer requests it.
-
Open PowerShell and run:
nvidia-smiConfirm your GPU is listed and note the CUDA Version reported there (this is the maximum CUDA toolkit generation your driver supports).
2) CUDA Toolkit 12.x (optional)
-
Open CUDA Toolkit downloads.
-
Set Operating System → Windows, Architecture → x86_64, Version → your Windows release, Installer Type:
- exe (network) — smaller download, pulls packages during install; needs internet.
- exe (local) — full offline installer; larger download.
-
Download and Run as administrator (right‑click the installer → Run as administrator).
-
When the installer starts:
- If you see a choice between Express and Custom, choose Express for the least friction (full toolkit, samples, and integration). This is the usual choice for DenkFlow unless you need a minimal footprint.
- If you choose Custom, expand CUDA and ensure at least:
- CUDA Runtime / runtime libraries
- Development components so
nvccis installed (useful for troubleshooting)
- CUDA Visual Studio Integration is only needed if you compile CUDA C++ in Visual Studio; DenkFlow Python users can clear it under Custom to save space.
-
Complete the wizard. Allow the installer to set environment variables (
CUDA_PATH,PATH) when offered. -
Close all PowerShell windows and open a new one so
PATHupdates apply. -
Verify:
nvcc --version
where.exe nvccIf
nvccis not found, open Settings → System → About → Advanced system settings → Environment Variables and check CUDA_PATH points to something likeC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x, and that...\CUDA\v12.x\binappears in Path for your user or system.
3) cuDNN 9.x (optional; for CUDA 12.x)
cuDNN is distributed as a zip (not a single “Next, Next” MSI). You need a free NVIDIA Developer account.
- Open cuDNN downloads and sign in.
- Accept the license if prompted.
- Pick a cuDNN for CUDA 12.x package whose major cuDNN line is 9.x (match the download matrix to CUDA 12).
- Download the Windows archive (often named like
cudnn-windows-x86_64-*_cuda12-archive.zip). - Extract the zip (e.g. with File Explorer). Inside you should see folders such as
bin,include, andlib(sometimes under a versioned root folder — open until you see those three). - Merge those folders into your CUDA Toolkit tree (adjust
v12.xto your installed version), overwriting when asked:- Copy everything under
bin→C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\bin - Copy everything under
include→C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\include - Copy everything under
lib\x64(orlib) →C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\lib\x64
- Copy everything under
- Administrator privilege: if copy is denied, copy to a staging folder first, then copy/paste in Explorer with administrator confirmation, or run Explorer elevated once for this step.
- Confirm
cudnn64_9.dll(name may vary slightly by build) exists underCUDA\v12.x\bin.
Managed alternative: If DENKflow does not accept the system CUDA/cuDNN layout, it downloads the release-pinned managed CUDA dependency. Do not install NVIDIA runtime wheels solely for the DENKflow package.
4) TensorRT 10.x (optional; for TensorrtExecutionProvider)
Do this only after CUDAExecutionProvider works. TensorRT must match your CUDA 12.x line.
- Open TensorRT download and sign in.
- Select TensorRT 10.x and a package explicitly built for CUDA 12.x / Windows x86_64 (the site shows a matrix — choose the row that matches CUDA 12, not CUDA 11).
- Download the ZIP for Windows (not Linux
.tar). - Extract to a fixed path, e.g.
C:\TensorRT(you might getC:\TensorRT\TensorRT-10.x.x.x— note the inner folder that containsbin,lib,include). - Add TensorRT’s DLL directory to your user or system Path:
- Typical layout:
...\libcontainsnvinfer.dll,nvinfer_plugin.dll,nvonnxparser.dll, etc. - Settings → Environment Variables → Path → New → add that
libfolder (not individual DLLs).
- Typical layout:
- TensorRT depends on CUDA libraries already on
PATHfrom step 2; if you see load errors, verify CUDA’sbinis still onPATH. - Open a new PowerShell window after editing Path.
Quick DLL check (optional — adjust the base path if you extracted elsewhere):
dir "C:\TensorRT\*\lib\nvinfer.dll" -Recurse -ErrorAction SilentlyContinue
5) Install DenkFlow and verify providers
Use a new shell after CUDA/cuDNN/TensorRT and Path changes.
Install DENKflow, then initialize a representative CUDA or TensorRT pipeline:
pip install denkflow --extra-index-url https://__token__:gldt-JCgXB7jPAo_b6JXAckFV@gitlab.com/api/v4/projects/69262737/packages/pypi/simple
# Initialize a representative DENKflow pipeline to resolve and verify its runtime.
- Inspect the DENKflow logs to confirm
CUDAExecutionProviderinitialized. - If you completed the TensorRT step, initialize a TensorRT pipeline and confirm
TensorrtExecutionProviderin the logs. If it fails while CUDA works, TensorRT DLLs are usually not onPATHor the TensorRT build does not match CUDA 12.x.
DirectML
pip install denkflow --extra-index-url https://__token__:gldt-JCgXB7jPAo_b6JXAckFV@gitlab.com/api/v4/projects/69262737/packages/pypi/simple
# Initialize a representative DENKflow pipeline to resolve and verify its runtime.
OpenVINO
What to install on the machine:
- Install the latest Intel graphics driver or Intel NPU driver if you want acceleration beyond CPU. The Intel GPU driver on Windows includes OpenCL support, so no extra OpenCL packages are needed.
- Create a clean Python environment.
- Install the single
denkflowpackage. - Optionally install Intel's
openvinopackage for device introspection and OpenVINO-specific tooling.
pip install denkflow --extra-index-url https://__token__:gldt-JCgXB7jPAo_b6JXAckFV@gitlab.com/api/v4/projects/69262737/packages/pypi/simple
# Initialize a representative DENKflow pipeline to resolve and verify its runtime.
Optional device inspection:
pip install openvino
python -c "import openvino as ov; print(ov.Core().available_devices)"
Initialize an OpenVINO pipeline and inspect the DENKflow logs to verify the selected provider.
- Download the Windows C-API package from DENKflow-C-API Releases.
- Add
denkflow.hto your include directories. - Link against
denkflow.dll.lib. - Ensure
denkflow.dllis next to your executable or onPATH; managed runtime DLLs remain in the SDK data directory.
Accelerator notes:
- CUDA / TensorRT: install the matching NVIDIA runtime libraries on the target host. For TensorRT, the DLL directory (e.g.
C:\TensorRT\10.x\lib) must be onPATH. - DirectML: native C/C++ deployments should verify runtime packaging carefully; the Python wheel is the primarily exercised path.
- OpenVINO: the Intel GPU driver on Windows already provides OpenCL support, so no extra OpenCL packages are required.
Linux ARM64 / Ambarella
Use the compiled Linux ARM64 package supplied for your release. You do not need the DENKflow source, the Ambarella SDK, or a compiler on the device.
Before installing the package:
- Provision the board with the vendor image containing the Cavalry driver and firmware.
- Confirm that
/dev/cavalryexists and is accessible to the application user. - Export the
.denkflowpipeline for the exact chip. - Install the Python package from the private registry or the supplied C/C++ release package.
- Keep
DENKFLOW_DATA_DIRECTORYon persistent storage so the verified runtime downloaded on first use is reused.
See Ambarella deployment for the export-target mapping, installation examples, first-run download, and troubleshooting.
Linux ARM64 / Jetson
Jetson setup is different from desktop Linux. Use JetPack as the source of truth for the system stack.
What to install on the machine:
- Flash or provision the device with a JetPack release supported by your Jetson hardware.
- Let JetPack install the NVIDIA driver, CUDA, cuDNN, and TensorRT as one aligned stack.
- Do not replace JetPack packages with random desktop NVIDIA packages unless you are intentionally doing advanced recovery or custom image work.
- Install Python build essentials such as
python3-venvif your image does not already contain them. - Verify the JetPack stack before creating the
DENKflowenvironment.
Suggested verification:
cat /etc/nv_tegra_release
dpkg -l | grep -E 'nvinfer|cudnn|cuda'
python3 - <<'PY'
import platform
print(platform.machine())
PY
Recommended runtime choices:
- Jetson Orin: preferred target for TensorRT exports.
- Jetson Xavier: use
CPUorCUDA; TensorRT is not the recommended path for current exports. - Keep
DENKFLOW_DATA_DIRECTORYpersistent so TensorRT engines do not rebuild every run.
- Python
- C / C++
CPU fallback
python -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install denkflow --extra-index-url https://__token__:gldt-JCgXB7jPAo_b6JXAckFV@gitlab.com/api/v4/projects/69262737/packages/pypi/simple
CUDA / TensorRT on Jetson
sudo apt update
sudo apt install -y python3-venv python3-pip
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install denkflow --extra-index-url https://__token__:gldt-JCgXB7jPAo_b6JXAckFV@gitlab.com/api/v4/projects/69262737/packages/pypi/simple
# Initialize a representative DENKflow pipeline to resolve and verify its runtime.
If CUDAExecutionProvider is available but TensorrtExecutionProvider is not, the JetPack image usually lacks the TensorRT user-space libraries that the process expects, or the library path is incomplete.
- Download the ARM64 C-API package from DENKflow-C-API Releases.
- Put
denkflow.handlibdenkflow.soin your project. - Keep the SDK data directory writable and persistent. DENKflow installs
ONNX Runtime under
dependencies/onnxruntime/and resolves the selected provider dependencies during pipeline loading.
Native deployments on Jetson should use the libraries that ship with JetPack rather than mixing in desktop NVIDIA packages.
Verify the installation
- Python
- C#
- C / C++
Load and initialize a representative .denkflow pipeline with the intended
execution provider. Successful initialization verifies the managed ONNX Runtime
and any selected provider dependencies. Do not use import onnxruntime as a
check because DENKflow does not install the ONNX Runtime Python package.
Build the .NET 8 project to verify that the DenkFlow package is available:
dotnet build
Then load a representative .denkflow pipeline with the C# example in
Quick Start. Successful initialization verifies the managed
ONNX Runtime and any selected provider dependencies.
Build and run a minimal program that includes denkflow.h, creates a DenkflowHubLicenseSource, and loads a .denkflow file as shown in Quick Start.
If the DENKflow library itself cannot be found, fix its DLL or SO search path. Runtime dependency errors should be resolved through the managed dependency flow.