Skip to content

Commit 1d464f2

Browse files
authored
Release 2.6.0. (#103)
1 parent 5ab3eab commit 1d464f2

635 files changed

Lines changed: 88396 additions & 10101 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,5 @@ tags
2222
*.pcap
2323
*.deb
2424
configurator/*
25+
# Docker build environment files
26+
docker/*

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,16 @@ cscope.*
88
.vscode/
99
# cache
1010
.cache
11-
# build folders
11+
# build folders and artifacts
1212
build
1313
*.egg-info
14+
*.whl
1415
# tao peoplenet files
1516
*.fp16
1617
*.onnx
18+
# body-pose estimation
19+
*.fp32
20+
*.pt
1721
# NSight profiler files
1822
*.ncu-rep
1923
*.nsys-rep

CMakeLists.txt

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
1+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
22
# SPDX-License-Identifier: Apache-2.0
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,7 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515

16-
cmake_minimum_required(VERSION 3.20)
16+
cmake_minimum_required(VERSION 3.24)
1717

1818
# Options
1919
option(HOLOLINK_BUILD_PYTHON "Build Hololink Python Bindings" ON)
@@ -25,6 +25,13 @@ option(HOLOLINK_BUILD_ARGUS_ISP "Build Argus ISP support" OFF)
2525
option(HOLOLINK_BUILD_SIPL "Build NvSIPL capture components" OFF)
2626
option(HOLOLINK_BUILD_EMULATOR "Build HSB Emulator components" ON)
2727
option(HOLOLINK_BUILD_FUSA "Build NvFusa capture components" OFF)
28+
option(HOLOLINK_BUILD_PVA "Build PVA CRC components" OFF)
29+
option(HOLOLINK_BUILD_CPACK "Build DEB package" OFF)
30+
option(HOLOLINK_BUILD_EXPORT "Install Hololink targets" ON)
31+
option(HOLOLINK_BUILD_ROCE "Build Hololink with RoCE support" ON)
32+
option(HOLOLINK_BUILD_GPUNETIO_ROCE "Build DOCA GPUNetIO RoCE transceiver (requires DOCA gpunetio/verbs)" ON)
33+
option(HOLOLINK_BUILD_SOCKET "Build Hololink with Linux Socket support" ON)
34+
option(HOLOLINK_ROCE_USE_GPU_VRAM "Prefer GPU VRAM for RoCE receiver frame buffers (requires GPUDirect RDMA). When OFF, always use pinned host memory, which avoids IOMMU write-access faults at the cost of an extra PCIe hop for GPU access." ON)
2835

2936
if (HOLOLINK_BUILD_PYTHON AND NOT HOLOLINK_BUILD_EMULATOR)
3037
message(FATAL_ERROR "If building Python bindings, HOLOLINK_BUILD_EMULATOR must be ON")
@@ -44,14 +51,14 @@ project(hololink
4451
VERSION ${HOLOLINK_VERSION_NUM})
4552

4653
# To discover our custom CMake modules
47-
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
54+
list(APPEND CMAKE_MODULE_PATH ${hololink_SOURCE_DIR}/cmake)
4855

4956
# Find globally required dependencies
50-
include(hololink_deps/fmt)
51-
5257
if (NOT HOLOLINK_BUILD_ONLY_NATIVE)
53-
# Find Holoscan
54-
find_package(holoscan 3.6 REQUIRED CONFIG PATHS "/opt/nvidia/holoscan")
58+
# Find Holoscan if it is not already defined for source build with FetchContent
59+
if(NOT holoscan_SOURCE_DIR)
60+
find_package(holoscan 4.0 REQUIRED CONFIG PATHS "/opt/nvidia/holoscan")
61+
endif()
5562

5663
# enabled trace and debug log messages in debug build only
5764
if(CMAKE_BUILD_TYPE STREQUAL "Release")
@@ -61,6 +68,10 @@ if (NOT HOLOLINK_BUILD_ONLY_NATIVE)
6168
endif()
6269
endif()
6370

71+
# if HSDK is present/used, fmt should discover HSDK's version, which is cleaner
72+
# if fmt discovery is after HSDK; especially after HSDK 4.0 provides fmt targets downstream.
73+
include(hololink_deps/fmt)
74+
6475
if(NOT CMAKE_INSTALL_LIBDIR)
6576
set(CMAKE_INSTALL_LIBDIR lib)
6677
endif()
@@ -73,6 +84,9 @@ endif()
7384

7485
# Add subdirectories based on the build options
7586
add_subdirectory(src)
87+
if(HOLOLINK_BUILD_TESTS)
88+
enable_testing()
89+
endif()
7690
if(HOLOLINK_BUILD_TOOLS)
7791
add_subdirectory(tools)
7892
endif()
@@ -90,7 +104,11 @@ add_subdirectory(scripts)
90104
endif()
91105

92106
# Add packaging
93-
include(cmake/HololinkCPack.cmake)
107+
if(HOLOLINK_BUILD_CPACK)
108+
include(cmake/HololinkCPack.cmake)
109+
endif()
94110

95111
# Add export
96-
include(cmake/HololinkExport.cmake)
112+
if(HOLOLINK_BUILD_EXPORT)
113+
include(cmake/HololinkExport.cmake)
114+
endif()

RELEASE_NOTES.md

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,101 @@
11
# Release Notes
22

3+
## 2.6-GA, June 2026
4+
5+
### Dependencies
6+
7+
- IGX Orin:
8+
[IGX-SW 1.1.3 Production Release](https://developer.nvidia.com/igx-downloads)
9+
- IGX Thor: [IGX-SW 2.0 Production Release](https://developer.nvidia.com/igx-downloads)
10+
- AGX Orin: Use [SDK Manager](https://developer.nvidia.com/sdk-manager) to set up
11+
JetPack 7.2.
12+
- AGX Thor: Use [SDK Manager](https://developer.nvidia.com/sdk-manager) to set up
13+
JetPack 7.2.
14+
- Holoscan Sensor Bridge, 10G; FPGA v2603.
15+
16+
Be sure and follow the installation instructions included with the release, including
17+
PTP configuration and HSB device firmware updates. To generate documentation, in the
18+
host system, run `sh docs/make_docs.sh`, then use your browser to look at
19+
`docs/user_guide/_build/html/index.html`.
20+
21+
### Updates from 2.6-EA2
22+
23+
- **Jetpack 7.2** Support for AGX Orin and AGX Thor including updates to SIPL (Thor) and
24+
Argus (Orin) frameworks
25+
- **HSDK** Update support to
26+
[HSDK 4.2.0](https://docs.nvidia.com/holoscan/archive/4.2.0/index.html)
27+
- **LeopardImaging Eagle Camera** Support for 8-bit, 60 fps mode on AGX Thor
28+
- **Lattice IMX274** Support for 12-bit, 30 fps mode
29+
- **Firmware Setup** `hsb_flasher` as primary
30+
[firmware setup](https://docs.nvidia.com/holoscan/sensor-bridge/latest/sensor_bridge_firmware_setup.html)
31+
tool.
32+
- **CoE Offload Features** SIPLCaptureService for HSBs running sensors at heterogeneous
33+
frame rates. More generic sensor frame/non-image layout support in FusaCoeCapture
34+
operator
35+
- **SubFrameVisualizerOp** to improve support for sub-frame processing
36+
- **x86 Linux** added
37+
[RoCE setup support](https://docs.nvidia.com/holoscan/sensor-bridge/latest/setup.html#sd-tab-item-4)
38+
- **Agentic AI** Added
39+
[skills](https://github.com/nvidia-holoscan/holoscan-sensor-bridge/tree/main/skills)
40+
directory for workflows or setup involving HSB
41+
42+
on top of features from the 2.6-EA and 2.6-EA2 releases and many minor updates.
43+
44+
## 2.6-EA2, April 2026
45+
46+
### Dependencies
47+
48+
- IGX: [IGX-SW 1.1.2 Production Release](https://developer.nvidia.com/igx-downloads)
49+
- AGX: Use [SDK Manager](https://developer.nvidia.com/sdk-manager) to set up JetPack
50+
6.2.1.
51+
- Thor: Use [SDK Manager](https://developer.nvidia.com/sdk-manager) to set up JetPack
52+
7.1.
53+
- Holoscan Sensor Bridge, 10G; FPGA v2603.
54+
55+
Be sure and follow the installation instructions included with the release, including
56+
PTP configuration and HSB device firmware updates. To generate documentation, in the
57+
host system, run `sh docs/make_docs.sh`, then use your browser to look at
58+
`docs/user_guide/_build/html/index.html`.
59+
60+
### Updates 2.6-EA
61+
62+
- Numerous stability improvements
63+
- `hsb_flasher` is included but is still under development; continue to use the
64+
traditional FPGA programming tools
65+
- Emulator updates
66+
- FPGA IP block stability updates
67+
68+
NOTE an important stability improvement affects application code: An update to HSDK
69+
results in operators holding on to buffers longer, which can result in BlockMemoryPool
70+
instances running out of buffer space. For this reason, you'll see many of the examples
71+
and tests have been updated with increased values for `num_blocks`-- you may have to
72+
apply this same fix to your application code.
73+
74+
### Updates from 2.5-GA
75+
76+
- **HSDK 4.0** HSB is updated to support running under HSDK 4.0.
77+
- **Thor and JetPack 7.1** Support for receive-only RDMA on AGX Thor units (with mgbe
78+
NICs) is provided.
79+
- **ComputeCrcOp** and **CheckCrcOp** use [nvCOMP](https://developer.nvidia.com/nvcomp)
80+
to compute the CRC-32 of the received data frame. This CRC can be compared against the
81+
CRC sent by the FPGA (available in pipeline metadata) to ensure the local data frame
82+
has the same content as was received by the FPGA. See
83+
`examples/imx274_frame_validation.py` for an example.
84+
- **ComputePvaCrcOp** and **CheckPvaCrcOp** use
85+
[PVA](https://developer.nvidia.com/embedded/pva) to calculate the CRC in the same
86+
manner as ComputeCrcOp, with an implementation that uses PVA instead of GPU. This is
87+
only supported for systems that include PVA. See
88+
`examples/imx274_pva_crc_validation.py` for details.
89+
- **Sub frame processing** Examples include support for video applications that can
90+
begin ISP on parts of the received image, allowing pipelining of video processing with
91+
receipt of data.
92+
- **UART support** Some HSB units include a UART block; APIs are added for control. See
93+
`examples/uart_dual_board_loopback.py` for details.
94+
- **HSB Emulator** Code allowing STM32F767ZI to emulate the HSB IP block is provided,
95+
and is intended to be portable across other environments.
96+
97+
And many more minor updates.
98+
399
## 2.5-GA, December 2025
4100

5101
### Dependencies

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.5.0
1+
2.6.0

ci/Dockerfile.lint

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@
1515
#
1616
# See README.md for detailed information.
1717

18-
FROM ubuntu:22.04
19-
2018
ARG DEBIAN_FRONTEND=noninteractive
19+
ARG APT_CACHE_MOUNT="--mount=type=cache,target=/var/cache/apt,sharing=locked \
20+
--mount=type=cache,target=/var/lib/apt,sharing=locked"
21+
22+
FROM ubuntu:22.04
2123

22-
RUN apt-get update && apt-get install --no-install-recommends -y -q \
24+
RUN ${APT_CACHE_MOUNT} apt-get update && apt-get install --no-install-recommends -y -q \
2325
python3 \
2426
python3-dev \
2527
python3-pip \
@@ -28,7 +30,7 @@ RUN apt-get update && apt-get install --no-install-recommends -y -q \
2830

2931
RUN python3 -m pip install --upgrade pip --timeout 60 --retries 5
3032

31-
RUN apt-get update && apt-get install --no-install-recommends -y -q \
33+
RUN ${APT_CACHE_MOUNT} apt-get update && apt-get install --no-install-recommends -y -q \
3234
clang-format \
3335
&& rm -rf /var/lib/apt/lists/*
3436

ci/acceptable_words.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
OEN
22
inout
3+
ser
34
Inouts
45
NotIn
6+
som
7+
dout
8+
HSI

ci/lint.sh

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,19 +61,24 @@ SKIP=( \
6161
# black: Cannot parse: 18:7: from ._@MODULE_NAME@ import @MODULE_CLASS_NAME@
6262
cmake/pybind11/__init__.py
6363
scripts
64+
skills
6465
build*
6566
# HSB100G user guide has users put build/VM config directories and 3rd party repos here with many lint errors.
6667
# ignore the directories but retain other files.
6768
configurator/*/
6869
)
6970

70-
# Codespell checks for spelling mistakes. Don't include PDF files.
71-
CODESPELL_FILES=( `git ls-files | grep -v '.pdf$'` )
71+
# Codespell checks for spelling mistakes. Don't include PDF files or skills/.
72+
# skills/ uses NVCARPS-convention formatting validated separately (see ai_rules MR !22).
73+
CODESPELL_FILES=( `git ls-files | grep -v '.pdf$' | grep -v '^skills/'` )
7274

7375
C_FILES=( `git ls-files | egrep '.(cpp|hpp)$' ` )
74-
# added explicit exclude on mdformat docs/user_guide/emulation.md because
76+
# added explicit exclude on mdformat docs/user_guide/emulation.md because
7577
# it is completely messing up tables and code formatting blocks used by sphinx
76-
DOCS_FILES=( `git ls-files | egrep -v 'docs/user_guide/emulation.md' | egrep '.md$' ` )
78+
# skills/ contains markdown-based Claude Code agent skill files authored under NVCARPS conventions.
79+
# They use formatting rules that differ from this project's mdformat rules and are validated
80+
# separately by the NVCARPS CI pipeline (see ai_rules MR !22).
81+
DOCS_FILES=( `git ls-files | egrep -v 'docs/user_guide/emulation.md' | egrep -v '^skills/' | egrep '.md$' ` )
7782

7883
# Each command likes its list of inputs slightly different
7984
T=${SKIP[*]}

cmake/HololinkCPack.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
3030

3131
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Julien Jomier")
3232

33-
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
34-
set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md")
33+
set(CPACK_RESOURCE_FILE_LICENSE "${hololink_SOURCE_DIR}/LICENSE")
34+
set(CPACK_RESOURCE_FILE_README "${hololink_SOURCE_DIR}/README.md")
3535

3636
# Sets the package name as debian format
3737
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)

cmake/HololinkExport.cmake

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,32 @@
1+
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
# SPDX-License-Identifier: Apache-2.0
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
116
# Package config export
217
include(CMakePackageConfigHelpers)
318
set(HOLOLINK_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/hololink")
419

20+
install(FILES "${CMAKE_CURRENT_LIST_DIR}/Findibverbs.cmake"
21+
DESTINATION "${HOLOLINK_INSTALL_CMAKEDIR}"
22+
COMPONENT hololink-cmake
23+
)
24+
525
install(EXPORT HololinkTargets
626
NAMESPACE hololink::
727
FILE HololinkTargets.cmake
828
DESTINATION ${HOLOLINK_INSTALL_CMAKEDIR}
29+
COMPONENT hololink-cmake
930
)
1031

1132
configure_package_config_file(
@@ -26,4 +47,5 @@ install(FILES
2647
${CMAKE_CURRENT_BINARY_DIR}/HololinkConfig.cmake
2748
${CMAKE_CURRENT_BINARY_DIR}/HololinkConfigVersion.cmake
2849
DESTINATION ${HOLOLINK_INSTALL_CMAKEDIR}
50+
COMPONENT hololink-cmake
2951
)

0 commit comments

Comments
 (0)