簡體   English   中英

無法在 OpenCV GPU (CUDA) 中創建過濾器

[英]Fail to create filters in OpenCV GPU (CUDA)

系統信息(版本)

  • OpenCV => 3.2
  • 操作系統/平台 => Windows 10 64 位
  • 編譯器 => Visual Studio 2015 社區
  • CUDA 工具包版本 => 8.0

詳細說明

我正在使用基於 GPU 的功能和操作。 我自己構建了支持 CUDA 的 OpenCV,大多數 GPU 功能和操作都運行良好。 但是當涉及到像createGaussianFiltercreateSobelFilter這樣的過濾器相關函數時,會捕獲以下異常:

C:\OpenCV\opencv-3.2.0\modules\cudafilters\src\filtering.cpp:414: error: (-215) rowFilter_:= 0 in function `anonymous-namespace'::SeparableLinearFilter::SeparableLinearFilter

重現代碼

// C++ code example
// A very simple snnipet
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/cuda.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/cudafilters.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    try
    {
        Ptr<cuda::Filter> filterX = cuda::createSobelFilter(CV_64F, CV_64F, 1, 0, 3, 1, BORDER_DEFAULT); // x direction
    }
    catch (cv::Exception& e)
    {
        const char* err_msg = e.what();
        std::cout << "exception caught: " << err_msg << std::endl;
    }

    return 0;
}

您可以在此處找到用於測試 CUDA 版本的 Sober 過濾器的代碼。

在我看來,這是 OpenCV 開發人員的選擇(CUDA API 允許雙精度計算,因為我認為很長一段時間以來)。 CV_64F或雙精度浮點不被接受,因為效率較低且精度更高不值得性能下降。 計算機圖形學不需要這種精度,因此 GPU 架構具有更多的單精度單位(更多信息 2010 年)。

另請參閱 CUDA常見問題解答

注意:游戲 GPU 與專業 GPU 尤其如此(參見此處,2015 年):

NVIDIA GPU 總結

NVIDIA 的 GTX 系列以其出色的 FP32 性能而聞名,但其 FP64 性能卻很差。 性能通常介於 1:24(開普勒)和 1:32(麥克斯韋)之間。 例外情況是 GTX Titan 卡,它模糊了消費類 GTX 系列和專業 Tesla/Quadro 卡之間的界限。

Kepler 架構的 Quadro 和 Tesla 系列卡以 1:3 FP32 提供完整的雙精度性能。 然而,對於 Quadro M6000,NVIDIA 決定只提供最低限度的 FP64 性能,只提供 1:32 的 FP32 性能,並宣稱 M6000 是最好的顯卡,而不是像 Quadro K6000 這樣的最好的圖形+計算卡。

AMD 顯卡

與 FP32 相比,AMD GPU 在 FP64 方面的表現相當出色。 大多數 AMD 卡(包括消費類/游戲系列)將為 FP64 提供 1:3 到 1:8 的 FP32 性能。 此處在這些基准測試中測試的 AMD Tahiti 架構不會遇到與 NVIDIA 的 GTX 系列相同的 FP64 問題,並提供 1:4 的性能。 較新的 Hawaii 架構消費級 GPU 有望提供 1:8 的性能。

FirePro W9100、W8100 和 S9150 將為您提供令人難以置信的 FP64 1:2 FP32 性能。

總體而言,與 NVIDIA 同類產品相比,AMD GPU 以出色的雙精度性能比而著稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM