NVIDIA Holoscan SDK v3.1.0

Program Listing for File gxf_execution_context.hpp

Return to documentation for file (include/holoscan/core/gxf/gxf_execution_context.hpp)

Copy
Copied!
            

/* * SPDX-FileCopyrightText: Copyright (c) 2022-2025 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 * * 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. */ #ifndef HOLOSCAN_CORE_GXF_GXF_EXECUTION_CONTEXT_HPP #define HOLOSCAN_CORE_GXF_GXF_EXECUTION_CONTEXT_HPP #include <gxf/core/gxf.h> #include <memory> #include <string> #include <unordered_map> #include <vector> #include "../execution_context.hpp" #include "./gxf_cuda.hpp" #include "./gxf_io_context.hpp" namespace holoscan::gxf { class GXFWrapper; // forward declaration class GXFExecutionContext : public holoscan::ExecutionContext { public: GXFExecutionContext() = default; GXFExecutionContext(gxf_context_t context, Operator* op); GXFExecutionContext(gxf_context_t context, std::shared_ptr<GXFInputContext> gxf_input_context, std::shared_ptr<GXFOutputContext> gxf_output_context); ~GXFExecutionContext() override = default; std::shared_ptr<GXFInputContext> gxf_input() { return gxf_input_context_; } std::shared_ptr<GXFOutputContext> gxf_output() { return gxf_output_context_; } expected<cudaStream_t, RuntimeError> allocate_cuda_stream( const std::string& stream_name) override; // @brief synchronize all of the streams in cuda_streams with target_cuda_stream void synchronize_streams(const std::vector<std::optional<cudaStream_t>>& cuda_streams, cudaStream_t target_cuda_stream) override; // @brief determine the CUDA device corresponding to the given stream expected<int, RuntimeError> device_from_stream(cudaStream_t stream) override; std::shared_ptr<Operator> find_operator(const std::string& op_name /* = "" */) override; expected<holoscan::OperatorStatus, RuntimeError> get_operator_status( const std::string& op_name /* = "" */) override; expected<gxf::CudaStreamHandle, RuntimeError> stream_handle_from_stream(cudaStream_t stream); std::shared_ptr<CudaObjectHandler> cuda_object_handler() { return cuda_object_handler_; } void init_cuda_object_handler(Operator* op); void release_internal_cuda_streams(); void clear_received_streams(); protected: friend class holoscan::gxf::GXFWrapper; friend class holoscan::gxf::GXFInputContext; friend class holoscan::gxf::GXFOutputContext; expected<CudaStreamHandle, RuntimeError> allocate_cuda_stream_handle( const std::string& stream_name); expected<gxf_uid_t, RuntimeError> get_operator_eid(const std::string& op_name); Operator* op_ = nullptr; gxf_uid_t eid_ = kNullUid; std::shared_ptr<GXFInputContext> gxf_input_context_{}; std::shared_ptr<GXFOutputContext> gxf_output_context_{}; std::shared_ptr<CudaObjectHandler> cuda_object_handler_{}; std::unordered_map<std::string, gxf_uid_t> operator_eid_cache_{}; }; } // namespace holoscan::gxf #endif/* HOLOSCAN_CORE_GXF_GXF_EXECUTION_CONTEXT_HPP */

© Copyright 2022-2025, NVIDIA. Last updated on Apr 7, 2025.