Почему я получаю эту ошибку из памяти на моем новом компьютере, а не на старом? - PullRequest
0 голосов
/ 03 марта 2020

В настоящее время я пытаюсь извлечь SIFT Feature с помощью следующего пакета: https://github.com/Celebrandil/CudaSift

Он поставляется с CMakeLists.txt, который я изменил, вот он:

cmake_minimum_required(VERSION 2.6)

project(cudaSift)
set(cudaSift_VERSION_MAJOR 2)
set(cudaSift_VERSION_MINOR 0)
set(cudaSift_VERSION_PATCH 0)

set(CPACK_PACKAGE_VERSION_MAJOR "${cudaSift_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${cudaSift_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${cudaSift_VERSION_PATCH}")
set(CPACK_GENERATOR "ZIP")
include(CPack)

find_package(OpenCV REQUIRED)
find_package(CUDA)
if (NOT CUDA_FOUND)
  message(STATUS "CUDA not found. Project will not be built.")
endif(NOT CUDA_FOUND)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -msse2 ")
list(APPEND CUDA_NVCC_FLAGS "-lineinfo;-ccbin;/usr/bin/gcc-7;--compiler-options;-O2;-D_FORCE_INLINES;-DVERBOSE_NOT; -arch=sm_75") 

cuda_add_library(cudaSift SHARED
  src/cudaImage.cu  
  src/cudaSiftH.cu  
  src/matching.cu
  src/geomFuncs.cpp  
  src/mainSift.cpp
)

target_link_libraries(cudaSift ${CUDA_cudadevrt_LIBRARY} ${OpenCV_LIBS})

set(PUBLIC_HEADERS include/cudaImage.h include/cudaSift.h)

set_target_properties(cudaSift PROPERTIES PUBLIC_HEADER 
"${PUBLIC_HEADERS}"
)

include(GNUInstallDirs)
install(TARGETS cudaSift
  LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
  PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)

configure_file(cudaSift.pc.in cudaSift.pc @ONLY)

install(FILES ${CMAKE_BINARY_DIR}/cudaSift.pc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig)


Мой графический процессор - GeForce RTX 2060, версия драйвера 430.5, и после запуска:

mkdir build && cd build
cmake ..
sudo make -j
sudo make install
sudo ldconfig

- чтобы собрать пакет, я пытаюсь запустить свой код и получить следующее ошибка:

safeCall() Runtime API error in file </path/to/CudaSift/src/cudaImage.cu>, line 24 : out of memory.

Точность:

  • Я запускаю точно такой же код на другом компьютере с GeForce GTX 1050, изменяясь только в CMakeLists.txt -arch = sm_75 to arch = sm_61, и он выполняется просто отлично.

  • Из предыдущих вопросов я думаю, что это проблема компиляции, связанная со значением arch = sm _ ** , но я изменил его, и он все еще не работает.

  • Объекты, которые я передаю в мой графический процессор, - это изображения, которые, я уверен, не слишком большие, так как работает на моем другом компьютере, у которого GPU меньше памяти

1 Ответ

0 голосов
/ 04 марта 2020

ОБНОВЛЕНИЕ: Я обнаружил проблему, пакет был правильно скомпилирован. На самом деле модель Tenorflow была загружена в код, но после ее удаления ошибка больше не повторялась. Я не знаю почему, хотя, может быть, он зарезервировал много памяти GPU?

...