Set cude device

This commit is contained in:
Barzan Hayati 2025-06-30 14:47:47 +00:00
parent f9d16f29cf
commit bdbb067489
3 changed files with 32 additions and 2 deletions

View File

@ -11,6 +11,8 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
# For larger projects
option(BUILD_TESTS "Build tests" OFF)
if(BUILD_TESTS)
@ -25,13 +27,25 @@ endif()
find_package(PkgConfig REQUIRED)
find_package(CUDA REQUIRED)
pkg_check_modules(GLIB REQUIRED glib-2.0 gobject-2.0 nlohmann_json gstreamer-base-1.0 gstreamer-1.0 gstreamer-video-1.0)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
message("embed_platform on")
include_directories(/usr/local/cuda/targets/aarch64-linux/include)
link_directories(/usr/local/cuda/targets/aarch64-linux/lib)
else()
message("embed_platform off")
include_directories(/usr/local/cuda/include)
link_directories(/usr/local/cuda/lib64)
endif()
include_directories(/usr/lib/x86_64-linux-gnu/glib-2.0/include)
include_directories(/usr/include/gstreamer-1.0)
include_directories(/usr/include/nlohmann)
include_directories(/usr/local/cuda/include)
link_directories(/usr/local/cuda/lib64/)
link_directories(/usr/local/cuda/targets/x86_64-linux/lib/)
include_directories(${PROJECT_SOURCE_DIR}/camera_manager.hpp)
include_directories(${PROJECT_SOURCE_DIR}/pipeline_manager.hpp)
include_directories(${PROJECT_SOURCE_DIR}/streammux_manager.hpp)
@ -60,4 +74,5 @@ target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${PROJECT_NAME} PRIVATE ${GLIB_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${GLIB_LIBRARIES})
target_link_libraries(${PROJECT_NAME} gstbase-1.0 gstreamer-1.0 gstrtp-1.0 gstvideo-1.0)
target_link_libraries(${PROJECT_NAME} gstbase-1.0 gstreamer-1.0 gstrtp-1.0 gstvideo-1.0)
target_link_libraries(${PROJECT_NAME} cudart cuda)

View File

@ -22,6 +22,17 @@ int PipelineManager::create_pipeline() {
return 1;
}
void PipelineManager::set_cuda_device() {
cudaGetDevice(&current_device);
cudaGetDeviceProperties(&prop, current_device);
std::cout << "Device Number: " << prop.pciDeviceID << std::endl;
std::cout << "Device name: " << prop.name << std::endl;
std::cout << "Device Version: " << prop.major << "." << prop.minor
<< std::endl;
}
void PipelineManager::create_pipeline_elements(int num_sources) {
streammux_manager->create_streammux(num_sources);
set_cuda_device();
}

View File

@ -1,6 +1,7 @@
#include <glib.h>
#include <gst/gst.h>
#include "cuda_runtime_api.h"
#include "streammux_manager.hpp"
class PipelineManager {
@ -12,9 +13,12 @@ class PipelineManager {
StreammuxManager *streammux_manager = new StreammuxManager();
public:
int current_device = -1;
struct cudaDeviceProp prop;
PipelineManager();
PipelineManager(int, char **);
int create_pipeline();
void create_pipeline_elements(int);
void set_cuda_device();
~PipelineManager();
};