小编sga*_*zvi的帖子

在 CUDA 程序中禁用所有异步执行

根据 CUDA 编程指南,您可以通过设置环境变量 (CUDA_LAUNCH_BLOCKING=1) 在运行时禁用异步内核启动。

这是一个有用的调试工具。我还想确定使用并发内核和传输在我的代码中的好处。

我还想禁用其他并发调用,特别是cudaMemcpyAsync.

是否CUDA_LAUNCH_BLOCKING会影响这些种类除了内核启动电话?我怀疑不是。什么是最好的选择?我可以添加cudaStreamSynchronize调用,但我更喜欢运行时解决方案。我可以在调试器中运行,但这会影响时间并破坏目的。

asynchronous cuda

5
推荐指数
1
解决办法
7541
查看次数

CUDA Box过滤器索引错误

我写了一个简单的CUDA内核用于盒子过滤图像.

texture<unsigned char,2> tex8u;

#define FILTER_SIZE 7
#define FILTER_OFFSET (FILTER_SIZE/2)

__global__ void box_filter_8u_c1(unsigned char* out, int width, int height, int pitch)
{
   unsigned int x = blockIdx.x * blockDim.x + threadIdx.x;
   unsigned int y = blockIdx.y * blockDim.y + threadIdx.y;

   if(x>=width || y>=height)    return;

   float val = 0.0f;

   for(int i = -FILTER_OFFSET; i<= FILTER_OFFSET; i++)
     for(int j= -FILTER_OFFSET; j<= FILTER_OFFSET; j++)
        val += tex2D(tex8u,x + i, y + j);

   out[y * pitch + x] = static_cast<unsigned char>(val/(FILTER_SIZE  * FILTER_SIZE));   

} …
Run Code Online (Sandbox Code Playgroud)

filtering cuda

5
推荐指数
1
解决办法
431
查看次数

Nvidia NPP nppiFilter在与2d内核进行卷积时产生垃圾

Nvidia Performance Primitives(NPP)提供了nppiFilter将用户提供的图像与用户提供的内核进行卷积的功能.对于1D卷积内核,nppiFilter可以正常工作.但是,nppiFilter正在为2D内核生成垃圾图像.

我使用典型的Lena图像作为输入: 在此输入图像描述


这是我使用1D卷积内核的实验,它可以产生良好的输出.

#include <npp.h> // provided in CUDA SDK
#include <ImagesCPU.h> // these image libraries are also in CUDA SDK
#include <ImagesNPP.h>
#include <ImageIO.h>

void test_nppiFilter()
{
    npp::ImageCPU_8u_C1 oHostSrc;
    npp::loadImage("Lena.pgm", oHostSrc);
    npp::ImageNPP_8u_C1 oDeviceSrc(oHostSrc); // malloc and memcpy to GPU 
    NppiSize kernelSize = {3, 1}; // dimensions of convolution kernel (filter)
    NppiSize oSizeROI = {oHostSrc.width() - kernelSize.width + 1, oHostSrc.height() - kernelSize.height + 1};
    npp::ImageNPP_8u_C1 oDeviceDst(oSizeROI.width, oSizeROI.height); // allocate …
Run Code Online (Sandbox Code Playgroud)

c++ cuda image-processing convolution npp

5
推荐指数
1
解决办法
1898
查看次数

gpumat和mat出错

当我编译这个例子时:

#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv2/gpu/gpu.hpp"

int main (int argc, char* argv[])

{
    try
    {
        cv::Mat src_host = cv::imread("file.png", CV_LOAD_IMAGE_GRAYSCALE);
        cv::gpu::GpuMat dst, src;
        src.upload(src_host);

        cv::gpu::threshold(src, dst, 128.0, 255.0, CV_THRESH_BINARY);

        cv::Mat result_host = dst;
        cv::imshow("Result", result_host);
        cv::waitKey();
    }
    catch(const cv::Exception& ex)
    {
        std::cout << "Error: " << ex.what() << std::endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

threshold.cpp: In function ‘int main(int, char**)’:
threshold.cpp:19: error: conversion from ‘cv::gpu::GpuMat’ to non-scalar type ‘cv::Mat’ requested
Run Code Online (Sandbox Code Playgroud)

有人知道为什么吗?

c++ opencv

5
推荐指数
1
解决办法
7478
查看次数

使用 opencv 将图像从 BGR 转换为 ARGB

  • 我想将 BGR 图像转换为 ABGR/ARGB。opencv 中有转换 BGR2RGBA 但没有 BGR2ABGR 或 BGR2ARGB。
  • 可以使用 opencv 或使用任何其他方法吗?

c++ opencv image-processing

5
推荐指数
1
解决办法
1万
查看次数

使用std :: vector的稀疏矩阵的缓慢性能

我正在尝试实现MATLAB功能sparse.

在特定索引处的稀疏矩阵中插入值,以便:

如果矩阵中已存在具有相同索引的值,则添加新旧值.

否则,新值将附加到矩阵.

该功能addNode正常运行,但问题是它非常慢.我在循环中调用此函数大约100000次,程序运行时间超过3分钟.而MATLAB在几秒钟内完成了这项任务.有没有办法优化代码或使用stl算法而不是我自己的函数来实现我想要的?

码:

struct SparseMatNode
{
   int x;
   int y;
   float value;
};

std::vector<SparseMatNode> SparseMatrix;

void addNode(int x, int y, float val)
{
   SparseMatNode n;
   n.x = x;
   n.y = y;
   n.value = val;

   bool alreadyPresent = false;

   int i = 0;
   for(i=0; i<SparseMatrix.size(); i++)
   {
    if((SparseMatrix[i].x == x) && (SparseMatrix[i].y == y))
    {
        alreadyPresent = true;
        break;
    }
   }

   if(alreadyPresent)
   {
    SparseMatrix[i].value += val;
    if(SparseMatrix[i].value == 0.0f)
        SparseMatrix.erase(SparseMatrix.begin + i);
   }
   else …
Run Code Online (Sandbox Code Playgroud)

c++ sparse-matrix

4
推荐指数
1
解决办法
1388
查看次数

C代码中的C4201警告

这个警告会在运行时产生任何问题吗?

ext.h(180):警告C4201:使用非标准扩展名:无名结构/联合

c c++

4
推荐指数
1
解决办法
2957
查看次数

找不到变量:$

var scriptFile = $(tempNode).attr("customJScriptSrc");
Run Code Online (Sandbox Code Playgroud)

通过这个我得到

"参考错误:无法找到变量:$"

请建议我任何替代方法.

jscript

4
推荐指数
1
解决办法
2万
查看次数

DLL包装器和DLL之间的区别

我不知道什么是DLL包装器.有人可以解释一下
1)什么是DLL包装器?
2)它与DLL有何不同?
3)如何使用它?

感谢致敬,

c++ windows dll

4
推荐指数
1
解决办法
5008
查看次数

将视频另存为帧OpenCV {PY}

我想创建一个程序来保存从网络摄像头(帧)中获取的.jpg图像.我的程序现在做的是,打开网络摄像头,只取一个帧,然后一切都停止.

我想要的是多个帧我的错误代码就是这个:

import numpy as np
import cv2
cap = cv2.VideoCapture(0)
count = 0

while True:
   # Capture frame-by-frame
   ret, frame = cap.read()

   # Our operations on the frame come here
   gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
   cv2.imwrite("frame%d.jpg" % ret, frame)     # save frame as JPEG file
   count +=1

   # Display the resulting frame
   cv2.imshow('frame',gray)
   if cv2.waitKey(10):
      break
Run Code Online (Sandbox Code Playgroud)

python opencv

4
推荐指数
2
解决办法
1万
查看次数