Hi,
After successfully compilation of cuda+qt project by using cmake I encounter the following runtime error during the excecution of first cuda command:
“main.cpp @ 114. Error code: 2 Error string: out of memory”
In addition wo verify that there is no Cuda issue I created another app without QT which operates ok on the same system
I tested the code on 2 systems with same results:
Systems configuration:
Fedora 32 with Cuda 11.1 gcc 10.0.1 and qt 5.12
RockyLinux 8.5with Cuda 11.2 / cuda 11.5 gcc 8.5 and qt 5.15.2
My cmake code is :
Main cmake:
cmake_minimum_required(VERSION 3.19)
project(Project1 CXX CUDA)
add_definitions("-DUSE_GPU=ON")
set(CUDA_ENABLE "ON")
message(STATUS "CUDA is on")
option(VIEWER_EN "Enable disable flag of nltTb signal viewer application" OFF)
if(VIEWER_EN)
find_package(Qt5 COMPONENTS Core Quick Widgets Charts REQUIRED)
endif()
include(common.cmake)
message(STATUS "CMAKE_CUDA_ARCHITECTURES: ${CMAKE_CUDA_ARCHITECTURES}$")
message(STATUS "Creates paths to projects")
set(UTILS ${CMAKE_SOURCE_DIR}/utils)
set(INFRA ${CMAKE_SOURCE_DIR}/infra)
set(ALGORITHMS ${CMAKE_SOURCE_DIR}/algorithms)
message( "UTILS path ${UTILS}")
message( "INFRA path ${INFRA}")
message( "ALGORITHMS path ${ALGORITHMS}")
FIND_PACKAGE(Protobuf REQUIRED)
find_package(Threads REQUIRED)
message(STATUS "Using protobuf ${Protobuf_VERSION}")
INCLUDE_DIRECTORIES(
${CUDA_INCLUDE_DIRS}
${GTEST_INCLUDE_DIRS}
infra/
utils/
pipeline_modules/pipeline
pipeline_modules/viewer
)
ADD_SUBDIRECTORY(utils)
ADD_SUBDIRECTORY(algorithms)
ADD_SUBDIRECTORY(infra)
if(VIEWER_EN)
message("VIEWER_EN active")
ADD_SUBDIRECTORY(apps/viewer)
endif()
common cmake
message("cmake processor ${CMAKE_SYSTEM_PROCESSOR}")
set(CMAKE_CUDA_STANDARD 17)
set(CMAKE_CUDA_STANDARD_REQUIRED TRUE)
set(CMAKE_CUDA_SEPARABLE_COMPILATION ON)
IF (DBG MATCHES "ON")
set(CMAKE_BUILD_TYPE Debug) # Release | Debug
ELSEIF(DBG MATCHES "OFF")
set(CMAKE_BUILD_TYPE Release) # Release | Debug
ENDIF (DBG MATCHES "ON")
set(CMAKE_VERBOSE_MAKEFILE OFF)
if (CUDA_ENABLE MATCHES "ON")
IF (CMAKE_BUILD_TYPE MATCHES Debug)
set(CMAKE_CUDA_FLAGS "--expt-extended-lambda")# --default-stream per-thread -G")
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64")
message("Current platform is AARCH64")
set(CMAKE_CUDA_ARCHITECTURES 61 72 75)
else()
set(CMAKE_CUDA_ARCHITECTURES 61 75)
endif()
message("CUDA debug")
ELSE()
set(CMAKE_CUDA_FLAGS "--expt-extended-lambda")# --default-stream per-thread ")
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64")
message("Current platform is AARCH64")
set(CMAKE_CUDA_ARCHITECTURES 61 72 75)
else()
set(CMAKE_CUDA_ARCHITECTURES 61 75)
endif()
ENDIF()
IF( DEFINED STOP_ON_CUDA_ERROR)
add_definitions("-DSTOP_ON_CUDA_ERROR")
ENDIF ()
find_package(CUDAToolkit REQUIRED cusparse cublas ddd)
# Check for cuda
message("CUDA INCLUDE: ${CUDAToolkit_INCLUDE_DIRS}")
INCLUDE_DIRECTORIES(${CUDAToolkit_INCLUDE_DIRS})
LINK_DIRECTORIES(${CUDAToolkit_LIBRARY_DIR})
else ()
message(STATUS "No CUDA support")
set(CUDA_LIBS)
endif ()
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
# Retrieve information about current git branch into environment var
find_package(Git)
if (Git_FOUND)
message("Git found: ${GIT_EXECUTABLE}")
message(STATUS "Resolving GIT Version")
# the commit's SHA1, and whether the building workspace was dirty or not
execute_process(COMMAND
"${GIT_EXECUTABLE}" describe --match=NeVeRmAtCh --always #--abbrev=8
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_SHA1
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND
"${GIT_EXECUTABLE}" describe --tag #--abbrev=8
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_TAG
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
# the date of the commit
execute_process(COMMAND
"${GIT_EXECUTABLE}" log -1 --format=%ad --date=local
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_DATE
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
# the subject of the commit
execute_process(COMMAND
"${GIT_EXECUTABLE}" log -1 --format=%s
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_COMMIT_SUBJECT
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REPLACE "#"
"" GIT_COMMIT_SUBJECT
"${GIT_COMMIT_SUBJECT}")
message(STATUS "GIT_COMMIT_SUBJECT=" ${GIT_COMMIT_SUBJECT})
message(STATUS "GIT_SHA1=" ${GIT_SHA1})
message(STATUS "GIT_DATE=" ${GIT_DATE})
message(STATUS "GIT_TAG=" ${GIT_TAG})
add_definitions("-DGIT_COMMIT_SUBJECT=aa")
add_definitions("-DGIT_SHA1=\"${GIT_SHA1}\"")
add_definitions("-DGIT_DATE=\"${GIT_DATE}\"")
add_definitions("-DGIT_TAG=\"${GIT_TAG}\"")
else ()
message(SEND_ERROR "Could not find git package")
endif ()
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wno-c++17-extensions ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-c++17-extensions -Wall -pedantic ")
set(SANITIZE "ADDRESS_LEAK")
#set(SANITIZE "THREADS")
#set(SANITIZE "LEAK")
IF (CMAKE_BUILD_TYPE MATCHES Debug)
IF (SANITIZE MATCHES "ADDRESS_LEAK")
message("Sanitize address...")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fsanitize=leak -fno-omit-frame-pointer")
ELSEIF (SANITIZE MATCHES "ADDRESS")
message("Sanitize address...")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
ELSEIF (SANITIZE MATCHES "THREADS")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -fno-omit-frame-pointer")
ELSEIF (SANITIZE MATCHES "LEAK")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=leak -fno-omit-frame-pointer")
ENDIF ()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
ENDIF ()
message("-- CMAKE_BUILD_TYPE = " ${CMAKE_BUILD_TYPE})
#set(BOOST_ROOT /usr/local/)
#set(BOOST_INCLUDEDIR /usr/local/include/)
#set(BOOST_LIBRARYDIR /usr/local/lib64/)
#set(Boost_NO_SYSTEM_PATHS TRUE)
FIND_PACKAGE(Boost 1.72.0 COMPONENTS thread system filesystem date_time timer chrono regex REQUIRED)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
# OpenCV library
FIND_PACKAGE(OpenCV 4.1 REQUIRED)
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
LINK_DIRECTORIES(${OpenCV_LIBS})
message(STATUS "OpenCV include=" ${OpenCV_INCLUDE_DIRS})
message(STATUS "OpenCV libs=" ${OpenCV_LIBS})
message(STATUS "CMAKE_DL_LIBS=" ${CMAKE_DL_LIBS})
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_STATIC_RUNTIME ON)
find_package(GTest REQUIRED)
find_package(Eigen3 3.3 REQUIRED NO_MODULE)
app cmake :
add_executable(viewer_app
main.cpp
)
#set_target_properties(viewer_app
# PROPERTIES -cudart=static)
target_link_libraries(viewer_app
utils_remoteConsole utils_network utils_general algs_optimization
${Boost_LIBRARIES} ${OpenCV_LIBS}
Qt5::Charts Qt5::Quick Qt5::Core
${CUDA_cufft_LIBRARY} ${CUDA_cublas_LIBRARY} ${CUDA_cusparse_LIBRARY} ${CUDA_rt_LIBRARY} ${CUDA_cudart_LIBRARY} ${CUDA_rt_LIBRARY} ${CUDA_cudadevrt_LIBRARY}
${CUDA_CUDA_LIBRARY} ${CUDA_rt_LIBRARY}
muparser z pthread)
What I and doing wrong and how can I fix the issue