- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我最近从 github repo 安装了 opencv并在 CUDA 支持下编译。我计划将公司框架从 CPU 版本更新到 GPU 版本,但我遇到了一个反复出现的问题:
========= Program hit cudaErrorCudartUnloading (error 29) due to "driver shutting down" on CUDA API call to cudaStreamSynchronize.
========= Saved host backtrace up to driver entry point at error
========= Host Frame:/usr/lib/x86_64-linux-gnu/libcuda.so.1 [0x2eeda3]
========= Host Frame:/usr/lib/x86_64-linux-gnu/libcudart.so.7.5 (cudaStreamSynchronize + 0x15e) [0x421ce]
========= Host Frame:/usr/local/lib/libopencv_core.so.3.1 [0x29a909]
========= Host Frame:/usr/local/lib/libopencv_core.so.3.1 (_ZN2cv4cuda6Stream4ImplD1Ev + 0x6e) [0x29c0ee]
========= Host Frame:/usr/local/lib/libopencv_core.so.3.1 [0x29c12a]
========= Host Frame:/usr/local/lib/libopencv_core.so.3.1 [0x29a886]
========= Host Frame:/usr/local/lib/libopencv_core.so.3.1 [0x29d08e]
========= Host Frame:/lib/x86_64-linux-gnu/libc.so.6 (__cxa_finalize + 0x8f) [0x37eaf]
========= Host Frame:/usr/local/lib/libopencv_core.so.3.1 [0xbb033]
=========
========= Program hit cudaErrorCudartUnloading (error 29) due to "driver shutting down" on CUDA API call to cudaSetDevice.
========= Saved host backtrace up to driver entry point at error
========= Host Frame:/usr/lib/x86_64-linux-gnu/libcuda.so.1 [0x2eeda3]
========= Host Frame:/usr/lib/x86_64-linux-gnu/libcudart.so.7.5 (cudaSetDevice + 0x180) [0x2fa30]
========= Host Frame:/usr/local/lib/libopencv_core.so.3.1 [0x29d0fd]
========= Host Frame:/lib/x86_64-linux-gnu/libc.so.6 (__cxa_finalize + 0x8f) [0x37eaf]
========= Host Frame:/usr/local/lib/libopencv_core.so.3.1 [0xbb033]
=========
========= Program hit cudaErrorCudartUnloading (error 29) due to "driver shutting down" on CUDA API call to cudaFree.
========= Saved host backtrace up to driver entry point at error
========= Host Frame:/usr/lib/x86_64-linux-gnu/libcuda.so.1 [0x2eeda3]
========= Host Frame:/usr/lib/x86_64-linux-gnu/libcudart.so.7.5 (cudaFree + 0x186) [0x3c666]
========= Host Frame:/usr/local/lib/libopencv_core.so.3.1 [0x29d0cd]
========= Host Frame:/lib/x86_64-linux-gnu/libc.so.6 (__cxa_finalize + 0x8f) [0x37eaf]
========= Host Frame:/usr/local/lib/libopencv_core.so.3.1 [0xbb033]
=========
========= Program hit cudaErrorCudartUnloading (error 29) due to "driver shutting down" on CUDA API call to cudaSetDevice.
========= Saved host backtrace up to driver entry point at error
========= Host Frame:/usr/lib/x86_64-linux-gnu/libcuda.so.1 [0x2eeda3]
========= Host Frame:/usr/lib/x86_64-linux-gnu/libcudart.so.7.5 (cudaSetDevice + 0x180) [0x2fa30]
========= Host Frame:/usr/local/lib/libopencv_core.so.3.1 [0x29d0fd]
========= Host Frame:/lib/x86_64-linux-gnu/libc.so.6 (__cxa_finalize + 0x8f) [0x37eaf]
========= Host Frame:/usr/local/lib/libopencv_core.so.3.1 [0xbb033]
=========
========= LEAK SUMMARY: 0 bytes leaked in 0 allocations
========= ERROR SUMMARY: 4 errors
这是什么,或者我该如何追踪它?从终端运行应用程序时,我没有收到任何错误、异常或段错误。
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/core/cuda.hpp>
#include <opencv2/cudaobjdetect.hpp>
#include <opencv2/cudafeatures2d.hpp>
#include <iostream>
#include <stdio.h>
#include <chrono>
int detectAndDisplay(
cv::Mat frame,
cv::Ptr<cv::cuda::CascadeClassifier> & cascade_gpu
)
{
cv::cuda::GpuMat image_src, image_grey;
std::vector<cv::Rect> faces;
image_src.upload(frame);
cv::cuda::cvtColor(image_src, image_grey, CV_BGR2GRAY);
cv::cuda::equalizeHist(image_grey, image_grey);
cascade_gpu->setFindLargestObject(true);
cascade_gpu->setScaleFactor(1.23);
cascade_gpu->setMinNeighbors(3);
cascade_gpu->setMinObjectSize(cv::Size(0, 0));
cascade_gpu->setMaxObjectSize(image_src.size());
cv::cuda::GpuMat buffer;
cascade_gpu->detectMultiScale(image_grey, buffer);
cascade_gpu->convert(buffer, faces);
return faces.size();
}
int main( int argc, const char* argv[] )
{
cv::String face_cascade_name = "/usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml";
cv::Mat image;
image = cv::imread("catniss.jpeg", CV_LOAD_IMAGE_COLOR);
cv::Ptr<cv::cuda::CascadeClassifier> cascade_gpu;
cascade_gpu = cv::cuda::CascadeClassifier::create(face_cascade_name);
for (int j = 0; j < 100; j++) {
detectAndDisplay(image, cascade_gpu);
}
return 0;
}
为方便起见,一个最小的 CMakeLists.txt
:
cmake_minimum_required(VERSION 2.6)
project(face_detection)
add_executable(face_detection source/main.cpp)
find_package(OpenCV REQUIRED)
target_link_libraries(face_detection ${OpenCV_LIBS})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}-std=c++1y")
遵循典型的构建阶段,然后运行
cuda-memcheck --leak-check full ./face_detection
我有一个 Debian jessie-backports
安装了 CUDA 7.5 和相应的驱动程序,在两个 GTX 660 上运行。
最佳答案
你能给我们看看你的代码或做一个简短的例子吗?没有它就很难指出你的错误。
出现此错误消息是因为您在卸载运行时后使用了一些 cudaCalls。
如果您将 GpuMat 用作全局或静态变量,就会发生这种情况。
您可以忽略这些警告,或确保在调用应用程序的析构函数之前完成所有 cuda 运行时调用。
关于c++ - cudaErrorCudartUnloading(错误 29)由于 "driver shutting down",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40979060/
我正在尝试获取此亚马逊页面中列出的每台笔记本电脑的图像 URL ( https://www.amazon.com/s?rh=n%3A565108%2Cp_72%3A4-&pf_rd_i=565108&
我正在设置 Atlassian Confluence,在选择数据库时,我在选择“使用外部 Mysql 数据库”时卡住了我看过一些教程,但对我来说,它并没有按照应有的方式工作。我使用 ubuntu 12
我是 Neo4J 的新手,正在尝试通过 java 连接到 Neo4J 服务器。 我的一个独立项目的pom入口如下: org.neo4j neo4j-o
所有这些有什么区别和用途? spark.local.ip spark.driver.host spark.driver.bind地址 spark.driver.hostname 如何将机器修复为 Sp
我在旧的 Inspiron 6400 计算机(GeForce 7300 笔记本电脑版)上安装了 Lubuntu 19.04,通过网络草稿编辑器教我儿子 Scratch。每次我通过 Firefox 打开
我使用 qt 开发了一个 c++ 库。在本文中,我使用 QSqlDatabase 从 SQLite 数据库中查询信息。注意:我的库在 qt 桌面应用程序中运行良好(我在 Linux 上开发)。 现在我
存在类似的问题,但没有帮助。 在 Apache 2.4 上安装 php5-fpm 通过 SSL 连接到远程 MySql 数据库。 可以通过命令行连接MySQL mysql -u myname -p'p
使用以下配置 (doctrine.yaml) 在 Symfony 4 中使用 Doctrine DBAL: dbal: # configure these for your database
使用以下配置 (doctrine.yaml) 在 Symfony 4 中使用 Doctrine DBAL: dbal: # configure these for your database
我有一个用 Java 编写的 Selenium Web 驱动程序测试,目标是 Liferay 站点。 // Login driver.get(baseUrl + "/"); driver.findEl
在driver.findElements()中,我们获得了另一个用于查找size()的函数,该函数在driver.findElement()中不可用。 这是唯一的区别吗? 最佳答案 driver.fi
这个问题已经有答案了: java.lang.IllegalStateException: The driver executable does not exist: while trying to e
简短描述:我有一个通过 SignTool 验证的签名驱动程序,但 Windows 拒绝加载它并出现错误:CodeIntegrity 3004 - 在系统上找不到文件哈希。我该如何解决这个问题? 详细说
我正在设置一些 Geb 测试,但出现“geb.driver.DriverCreationException:无法从回调创建驱动程序”错误。 Geb 将尝试启动测试浏览器窗口,但一旦启动,我的所有测试都
我想通过应用对象存储库概念在 Chrome 驱动程序中打开 url。下面给出的是我的 selenium 程序,其中包含两个文件,一个是 testng 文件,另一个是 config.property 文
我在 Ubuntu Linux、Spring Tools 2.7.1、Spring Roo 1.1.5 上运行 Eclipse Indigo。我正在阅读 Getting Started with Ro
打开 Url 的首选方法是什么(它们之间是否存在任何差异): driver.Url = "http://example.com"; 或 driver.Navigate().GoToUrl("http:
我使用 python 脚本传递给 cassandra 批处理查询,如下所示: query = 'BEGIN BATCH ' + 'insert into ... ; insert into ... ;
我在 Protractor 中执行脚本时出现以下错误。 System info: host: '8888', ip: '88888', os.name: 'Mac OS X', os.arch: 'x
我收到错误 KeyError:'driver'。 我想使用scrapy-selenium 创建一个网络爬虫。我的代码如下所示: class TestSpider(Spider): name="test
我是一名优秀的程序员,十分优秀!