gpt4 book ai didi

c++ - OpenCV GPU垫挂

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:45:11 24 4
gpt4 key购买 nike

我想我这里有一个有趣的问题,很想得到一些帮助。

硬件

2x 相同的机器

  • i-7 4770
  • 华硕主板
  • 8GB 内存
  • GTX 750 (Maxwell)(驱动程序版本 335.23)

软件

  • VS2010
  • VS2012
  • OpenCV 2.4.5(在 Kepler 硬件上编译)
  • 库达 5.0

正如标题所说,当我尝试创建 OpenCV GpuMat (cv::gpu::Gpumat) 时,程序将“挂起”。我的意思是不会再执行死刑。有趣的是,CUDA 安装成功,OpenCV 头文件是使用 CMake 编译的,并已在其他计算机上验证(并且 gpu::setDevice() 不会在当前机器上返回错误),该程序偶尔会运行。下面的代码是我正在测试的。

在下面的实现中,代码会卡在gpuMat_1.upload(cpuMat_1)。以前(当作为基准进行测试以确保某些部分正常工作时),gpuMat.upload 会完成。在确认在两台相同的机器(每台都配备 GTX 750)上都进行了 2 次上传和一次添加(当前显示)并且不会完成第一次上传后。当第二次上传被删除时,添加也被删除,它在第一次上传期间仍然挂起。

感谢您的帮助。如果还有什么我应该补充的,或者有助于澄清问题的,请询问。

#include <iostream>
#include <opencv2\gpu\gpu.hpp>

int main()
{
std::cout << "Number of gpu devices: " << cv::gpu::getCudaEnabledDeviceCount() << std::endl;

cv::Mat cpuMat_1, cpuMat_2;
cv::gpu::GpuMat gpuMat_1, gpuMat_2, gpuMat_3;

cpuMat_1 = cv::Mat::ones(4, 4, CV_8SC1);
cpuMat_2 = cv::Mat::ones(4, 4, CV_8SC1);

gpuMat_1.upload(cpuMat_1);
std::cout << "Help." << std::endl;
gpuMat_2.upload(cpuMat_2);
std::cout << "Please, help." << std::endl;

cv::gpu::add(gpuMat_1, gpuMat_2, gpuMat_3);

std::cout << "Help has come." << std::endl;

system("PAUSE");
return 0;
}

更新:我最近在其中一个单元上重新编译了 OpenCV(考虑到硬件变化),但我遇到了同样的问题。

最佳答案

问题原来是与 OpenCV 2.4.5 和新的 Maxwell 架构不兼容。我能够拿到 Quadro 600 并安装它进行测试,它运行良好。然后我用 GTX 650 对其进行了测试,它也能正常工作。然后,我使用 650 上的 mog2 运动检测库对其进行了测试,它也能正常工作。

关于c++ - OpenCV GPU垫挂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22823186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com