Skip to content

Commit

Permalink
Holoscan SDK v2.2.0 Release
Browse files Browse the repository at this point in the history
Co-authored-by: Cristiana Dinea <[email protected]>
Co-authored-by: Gigon Bae <[email protected]>
Co-authored-by: Gregory Lee <[email protected]>
Co-authored-by: Julien Jomier <[email protected]>
Co-authored-by: Shekhar Dwivedi <[email protected]>
Co-authored-by: Tom Birdsong <[email protected]>
Co-authored-by: Victor Chang <[email protected]>
Co-authored-by: Wendell Hom <[email protected]>
  • Loading branch information
8 people committed Jul 1, 2024
1 parent 760e403 commit ff22333
Show file tree
Hide file tree
Showing 190 changed files with 4,695 additions and 702 deletions.
32 changes: 32 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug, help wanted
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Platform Information (please complete the following information):**
- Holoscan SDK Version [e.g. 2.1.0]
- Architecture: [x86_64, arm64]
- OS: [Ubuntu, RHEL, IGX SW OS]

**Additional context**
Add any other context about the problem here.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: enhancement, help wanted
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
17 changes: 17 additions & 0 deletions .github/ISSUE_TEMPLATE/questions-and-support.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
name: Questions and Support
about: Request information on Holoscan SDK features and best practices
title: ''
labels: help wanted
assignees: ''

---

## Please describe your question
Ask about Holoscan SDK features or best practices. For example, "Does Holoscan SDK support v4l2 compatible cameras?"

## Please specify what Holoscan SDK version you are using
latest

## Please add any details about your platform or use case
For instance, "IGX devkit"
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ _deps
runtime_docker/install
runtime_docker/*.txt

# file autogenerated by setuptools_scm
_version.py

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
Expand Down
95 changes: 93 additions & 2 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@
]
},
{
"name": "(gdb) examples/conditions/asynchronous/cpp/ping_async",
"name": "(gdb) examples/conditions/asynchronous/cpp",
"type": "cppdbg",
"request": "launch",
"program": "${command:cmake.buildDirectory}/examples/conditions/asynchronous/cpp/ping_async",
Expand All @@ -184,7 +184,98 @@
]
},
{
"name": "(gdb) examples/conditions/periodic/cpp/periodic_ping",
"name": "(gdb) examples/conditions/asynchronous/python",
"type": "cppdbg",
"request": "launch",
"program": "/usr/bin/bash",
"args": [
"${workspaceFolder}/${env:HOLOSCAN_PUBLIC_FOLDER}/.vscode/debug_python",
"${workspaceFolder}/${env:HOLOSCAN_PUBLIC_FOLDER}/examples/conditions/asynchronous/python/ping_async.py",
],
"stopAtEntry": false,
"cwd": "${command:cmake.buildDirectory}",
"environment": [
{
"name": "HOLOSCAN_LOG_LEVEL",
"value": "DEBUG"
},
{
"name": "PYTHONPATH",
"value": "${command:cmake.buildDirectory}/python/lib"
},
],
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "(gdb) examples/conditions/expiring_message/cpp",
"type": "cppdbg",
"request": "launch",
"program": "${command:cmake.buildDirectory}/examples/conditions/expiring_message/cpp/ping_expiring_message",
"args": [],
"stopAtEntry": false,
"cwd": "${command:cmake.buildDirectory}",
"environment": [
{
"name": "HOLOSCAN_LOG_LEVEL",
"value": "INFO"
},
{
"name": "HOLOSCAN_LOG_FORMAT",
"value": "long"
},
],
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "(gdb) examples/conditions/expiring_message/python",
"type": "cppdbg",
"request": "launch",
"program": "/usr/bin/bash",
"args": [
"${workspaceFolder}/${env:HOLOSCAN_PUBLIC_FOLDER}/.vscode/debug_python",
"${workspaceFolder}/${env:HOLOSCAN_PUBLIC_FOLDER}/examples/conditions/expiring_message/python/ping_expiring_message.py",
],
"stopAtEntry": false,
"cwd": "${command:cmake.buildDirectory}",
"environment": [
{
"name": "HOLOSCAN_LOG_LEVEL",
"value": "INFO"
},
{
"name": "HOLOSCAN_LOG_FORMAT",
"value": "long"
},
{
"name": "PYTHONPATH",
"value": "${command:cmake.buildDirectory}/python/lib"
},
],
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "(gdb) examples/conditions/periodic/cpp",
"type": "cppdbg",
"request": "launch",
"program": "${command:cmake.buildDirectory}/examples/conditions/periodic/cpp/periodic_ping",
Expand Down
4 changes: 4 additions & 0 deletions CODE_OF_CONDUCT
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
We observe the [RAPIDS Contributor Covenant Code of Conduct](https://docs.rapids.ai/resources/conduct/)
to foster a positive Holoscan community.

Please report any instances of conduct violations to [email protected].
67 changes: 65 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,66 @@
The Holoscan SDK is released on GitHub to better support the community and facilitate feedback.
# Contribute to Holoscan SDK

If you find any issues with the SDK please report them using GitHub [Issues](https://github.com/nvidia-holoscan/holoscan-sdk/issues).
Welcome to Holoscan SDK! We're glad that you're considering contributing to the platform.

Holoscan SDK is released on GitHub as open source software to better support the community and facilitate feedback. By
contributing you agree to follow our [code of conduct](./CODE_OF_CONDUCT).

## Reporting Feedback

Community feedback helps us improve the Holoscan SDK platform to better meet user needs. We use GitHub [Issues](https://github.com/nvidia-holoscan/holoscan-sdk/issues) to track feedback and problems over time, as well as to provide
limited support to Holoscan SDK users.

Consider reviewing existing issues or opening a new issue if you:
- Have a question about using a Holoscan SDK feature
- Notice errors or unexpected behavior coming from Holoscan SDK
- Have an idea for a change that might benefit other users

When reporting an error, please include relevant details that will help our team investigate the issue. Details might include:
- A summary of the problem
- The behavior you have observed
- The behavior you expected
- Details about your PC, including the architecture (x86_64 or arm64) and GPU
- The version of Holoscan SDK where you observed the problem
- Any relevant logs or images to help investigate the issue

You can also refer to the Holoscan SDK [NVIDIA Developer Forums](https://forums.developer.nvidia.com/c/healthcare/holoscan-sdk/) for support questions and community discussions.

## Suggesting Changes

Users are welcome to suggest code changes to Holoscan SDK in the form of [Issues](https://github.com/nvidia-holoscan/holoscan-sdk/issues) or [Pull Requests](https://github.com/nvidia-holoscan/holoscan-sdk/pulls).

### Issues

Please open a new [issue](https://github.com/nvidia-holoscan/holoscan-sdk/issues) if you'd like to request a new feature
or propose a feature design. You can tag a specific community maintainer in your post with "@", or we'll update
when we've had a chance to review your post.

### Pull Requests

While we primarily develop Holoscan SDK internally, we also accept external contributions that help move the platform
forward. We typically favor contributions that aim to fix an existing issue or improve documentation, but we'll also integrate new features
and enhancements when they're aligned with the Holoscan SDK vision. Please check in with the development team to propose your idea before spending time working on new features. This will help prevent duplicate effort and avoid spending time on features that would be unlikely to be merged. We'll typically refer new operators for contribution
to the downstream [HoloHub](https://github.com/nvidia-holoscan/holohub) community project.

You might contribute to Holoscan to help us address fixes earlier in our development cycle, or to suggest improvements to Holoscan SDK that you believe would broadly benefit the Holoscan community.

Holoscan SDK follows a monthly release process that includes internal quality assurance. To add a fix or feature,
we request that you [fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) Holoscan SDK, develop in a branch, and submit your change as a [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) against the latest Holoscan SDK release commit. If we accept your submission after external discussion, we will integrate those changes within our internal development and credit you in Git commit history. Any changes that we accept from community contributions will undergo quality assurance testing before they are included in the next Holoscan SDK release.

**Note**: We recommend that new GitHub users read GitHub's [Getting Started](https://docs.github.com/en/get-started/start-your-journey) guide before opening their first pull request.

## Tracking Development

We take all community feedback into consideration. If we don't believe a proposed change aligns with our direction
for Holoscan SDK, or if we don't expect we can prioritize a task within a reasonable timeframe, we'll let you
know by appropriately labeling or closing the issue or pull request with an explanatory comment.

For items that we do plan to pursue or integrate, we use
[GitHub Milestones](https://github.com/nvidia-holoscan/holoscan-sdk/milestones)
to communicate our release planning. We will add community issues and pull requests to the approximate monthly release
milestone when we expect to pursue that development. Issues that we mark as "needs triage" are not part of a milestone
and will be revisited once each month to determine our priorities.

## Additional Information

Please refer to the project [README](/README.md) document for additional developer information. Happy coding!
2 changes: 1 addition & 1 deletion DEVELOP.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ To build the Holoscan SDK on a local environment, the following versions of dev
| CUDA | 12.2 | Core SDK | base |
| gRPC | 1.54.2 | Core SDK | grpc-builder |
| UCX | 1.15.0 | Core SDK | ucx-builder |
| GXF | 3.1 | Core SDK | gxf-downloader |
| GXF | 4.0 | Core SDK | gxf-downloader |
| MOFED | 23.07 | ConnectX | mofed-installer |
| TensorRT | 8.6.1 | Inference operator | base |
| ONNX Runtime | 1.15.1 | Inference operator | onnxruntime-downloader |
Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@ We appreciate community discussion and feedback in support of Holoscan platform
- Direct questions to the [NVIDIA Support Forum](https://forums.developer.nvidia.com/c/healthcare/holoscan-sdk/320/all).
- Enter SDK issues on the [SDK GitHub Issues board](https://github.com/nvidia-holoscan/holoscan-sdk/issues).

## Contributing to Holoscan SDK

Holoscan SDK is developed internally and released as open source software. We welcome community contributions
and may include them in Holoscan SDK releases at our discretion. Please refer to the Holoscan SDK
[Contributing Guide](/CONTRIBUTING.md) for more information.

## Additional Notes

### Relation to NVIDIA Clara
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.1.0
2.2.0
2 changes: 1 addition & 1 deletion docs/api/holoscan_cpp_api.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@

- {ref}`exhale_class_classholoscan_1_1Tensor`
- {ref}`exhale_class_classholoscan_1_1TensorMap`
- {ref}`exhale_struct_structholoscan_1_1DLManagedTensorCtx`
- {ref}`exhale_struct_structholoscan_1_1DLManagedTensorContext`
- {ref}`exhale_class_classholoscan_1_1DLManagedMemoryBuffer`

##### Functions
Expand Down
10 changes: 10 additions & 0 deletions docs/components/conditions.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ The following table shows various states of the scheduling status of an operator
By default, operators are always `READY`, meaning they are scheduled to continuously execute their `compute()` method. To change that behavior, some condition classes can be passed to the constructor of an operator. There are various conditions currently supported in the Holoscan SDK:

- MessageAvailableCondition
- ExpiringMessageAvailableCondition
- DownstreamMessageAffordableCondition
- CountCondition
- BooleanCondition
Expand All @@ -46,6 +47,14 @@ An optional parameter for this condition is `front_stage_max_size`, the maximum
If this parameter is set, the condition will only allow execution if the number of messages in the queue does not exceed this count.
It can be used for operators which do not consume all messages from the queue.

## ExpiringMessageAvailableCondition

An operator associated with `ExpiringMessageAvailableCondition` ({cpp:class}`C++ <holoscan::gxf::Ex[iringMessageAvailableCondition>`/{py:class}`Python <holoscan.conditions.ExpiringMessageAvailableCondition>`) is executed when the first message received in the associated queue is expiring or when there are enough messages in the queue.
This condition is associated with a specific input or output port of an operator through the `condition()` method on the return value (IOSpec) of the OperatorSpec's `input()` or `output()` method.

The parameters ``max_batch_size`` and ``max_delay_ns`` dictate the maximum number of messages to be batched together and the maximum delay from first message to wait before executing the entity respectively.
Please note that `ExpiringMessageAvailableCondition` requires that the input messages sent to any port using this condition must contain a timestamp. This means that the upstream operator has to emit using a timestamp .

## DownstreamMessageAffordableCondition

The `DownstreamMessageAffordableCondition` ({cpp:class}`C++ <holoscan::gxf::DownstreamMessageAffordableCondition>`/{py:class}`Python <holoscan.conditions.DownstreamMessageAffordableCondition>`) condition specifies that an operator shall be executed if the input port of the downstream operator for a given output port can accept new messages.
Expand All @@ -57,6 +66,7 @@ The minimum number of messages that permits the execution of the operator is spe
An operator associated with `CountCondition` ({cpp:class}`C++ <holoscan::gxf::CountCondition>`/{py:class}`Python <holoscan.conditions.CountCondition>`) is executed for a specific number of times specified using its `count` parameter.
The scheduling status of the operator associated with this condition can either be in `READY` or `NEVER` state.
The scheduling status reaches the `NEVER` state when the operator has been executed `count` number of times.
The `count` parameter can be set to a negative value to indicate that the operator should be executed an infinite number of times (default: `1`).

## BooleanCondition

Expand Down
32 changes: 16 additions & 16 deletions docs/conf.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
"""
SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Configuration file for the Sphinx documentation builder.
Configuration file for the Sphinx documentation builder.
This file only contains a selection of the most common options. For a full
list see the documentation:
https://www.sphinx-doc.org/en/master/usage/configuration.html
This file only contains a selection of the most common options. For a full
list see the documentation:
https://www.sphinx-doc.org/en/master/usage/configuration.html
""" # noqa: E501
import os
import textwrap
Expand Down Expand Up @@ -82,7 +82,7 @@
numfig = True

# -- Options for graphviz output ---------------------------------------------
graphviz_output_format = "svg"
graphviz_output_format = "png"

# -- Options for HTML output -------------------------------------------------

Expand Down
Loading

0 comments on commit ff22333

Please sign in to comment.