Skip to content

Multi-AI Ultrasound#

Authors: Holoscan Team (NVIDIA)
Supported platforms: x86_64, aarch64
Language: Python, C++ (see Python version)
Last modified: July 31, 2026
Latest version: 1.1
Minimum Holoscan SDK version: 2.9.0
Tested Holoscan SDK versions: 3.7.0, 3.10.0, 3.11.0, 4.0.0, 4.1.0, 4.2.0, 4.3.0, 4.4.0, 4.5.0
Contribution metric: Level 1 - Highly Reliable

This application demonstrates how to run multiple inference pipelines in a single application by leveraging the Holoscan Inference module, a framework that facilitates designing and executing inference applications in the Holoscan SDK.

The Inference and the Processing operators use APIs from the Holoscan Inference module to extract data, initialize and execute the inference workflow, process, and transmit data for visualization.

The applications uses models and echocardiogram data from iCardio.ai. The models include:

  • a Plax chamber model, that identifies four critical linear measurements of the heart
  • a Viewpoint Classifier model, that determines confidence of each frame to known 28 cardiac anatomical view as defined by the guidelines of the American Society of Echocardiography
  • an Aortic Stenosis Classification model, that provides a score which determines likeability for the presence of aortic stenosis

The default configuration (multiai_ultrasound.yaml) runs on the default GPU (GPU 0).

Multi-GPU requirements and limitations#

The sample multi-GPU configuration (mgpu_multiai_ultrasound.yaml) assigns inference models to GPU 0 and GPU 1 from a single application process. It requires at least two compatible GPUs that CUDA can enumerate together in that process, such as a supported homogeneous discrete-GPU system with both GPUs on the same PCIe network. Seeing both GPUs in nvidia-smi does not by itself guarantee that the configuration is supported.

The heterogeneous iGPU and dGPU combination on IGX Thor is not supported by this sample. As of CUDA 13.2, an IGX Thor process cannot enumerate both types of GPU together; CUDA 13.2 supports their concurrent use only from separate processes. On IGX Thor, use the default single-GPU configuration and select one GPU for the application.

Requirements#

The provided applications are configured to either use the AJA capture card for input stream, or a pre-recorded video of the echocardiogram (replayer). Follow the AJA Video Systems setup guide to use the AJA capture card.

Data#

📦️ (NGC) Sample App Data for Multi-AI Ultrasound Pipeline

The data is automatically downloaded and converted to the correct format when building the application. If you want to manually convert the video data, please refer to the instructions for using the convert_video_to_gxf_entities script.

Build and Run Instructions#

Please refer to the top level Holohub README.md file for more information on the HoloHub CLI

Pre-Recorded Video Replay#

sed -i -e 's#^source:.*#source: replayer#' applications/multiai_ultrasound/cpp/multiai_ultrasound.yaml
./holohub run multiai_ultrasound --language=cpp [--local]

Using a pre-recorded video on multi-GPU system#

Note: This command uses both GPUs from one process and is not supported with the IGX Thor iGPU and dGPU combination. See Multi-GPU requirements and limitations.

sed -i -e 's#^source:.*#source: replayer#' applications/multiai_ultrasound/cpp/mgpu_multiai_ultrasound.yaml
./holohub run multiai_ultrasound --language=cpp [--local] \
    --run-args="--config applications/multiai_ultrasound/cpp/mgpu_multiai_ultrasound.yaml"

Using an AJA capture card#

sed -i -e 's#^source:.*#source: aja#' applications/multiai_ultrasound/cpp/multiai_ultrasound.yaml
./holohub run multiai_ultrasound --language=cpp [--local] \
    --configure-args="-DOP_aja_source:BOOL=ON"