【问题标题】:Why am I getting this cuda out of memory error on my new computer and not on the old one?为什么我的新计算机而不是旧计算机上出现此 cuda 内存不足错误?
【发布时间】:2020-06-15 15:45:04
【问题描述】:

我目前正在尝试使用以下软件包提取 SIFT 特征: 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)


我的GPU是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 更改为 arch=sm_61,它执行得很好。

  • 从前面的问题来看,我认为这是一个编译问题,与 arch=sm_** 值有关,但我更改了它,它仍然不起作用。

  • 我传递给我的 GPU 的对象是图像,我确信它不会太大,因为它可以在我的另一台 GPU 内存较少的计算机上运行

【问题讨论】:

  • 试试-gencode=arch=compute_75,code=sm_75
  • 谢谢你的回答,我忘了说我已经试过了
  • 哦,是的,谢谢,我会改的

标签: cuda gpu sift


【解决方案1】:

更新: 我发现了问题,包实际上是正确编译的。 其实代码中加载了一个tensorflow模型,但是删除之后就没有再出现这个错误了。 我不知道为什么,也许它保留了很多 GPU 内存?

【讨论】:

  • 请记住几天后再回来接受这个答案,这样问题就会从未回答的问题队列中消失。
猜你喜欢
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-28
  • 2014-03-28
  • 2012-08-02
  • 1970-01-01
相关资源
最近更新 更多