- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试对图像中的所有像素求和,并使用 CUDA NPP 库获取所有像素的平均值。我的图像是尺寸为 w256 x h1024
的 8 位 unsigned char 灰度
图像。我已尝试遵循声明指针并将相应的 NPP 类型指针传递给 NPP 函数的所有必需规则。
但是,当我对我的代码执行 GPU 错误检查时,我遇到了一个未知错误
。我试图调试它,但我似乎无法弄清楚我哪里出错了,我需要一些帮助吗?
除此之外,我还使用 OpenCV 进行处理,因此会出现一些 OpenCV 代码。
编辑:代码已更新
#define gpuErrchk(ans) { gpuAssert((ans), __FILE__, __LINE__); }
inline void gpuAssert(cudaError_t code, char *file, int line, bool abort=true)
{
if (code != cudaSuccess)
{
fprintf(stderr,"GPUassert: %s %s %d\n", cudaGetErrorString(code), file, line);
if (abort) getchar();
}
}
// process image here
// device_pointer initializations
unsigned char *device_input;
unsigned char *device_output;
size_t d_ipimgSize = input.step * input.rows;
size_t d_opimgSize = output.step * output.rows;
gpuErrchk( cudaMalloc( (void**) &device_input, d_ipimgSize) );
gpuErrchk( cudaMalloc( (void**) &device_output, d_opimgSize) );
gpuErrchk( cudaMemcpy(device_input, input.data, d_ipimgSize, cudaMemcpyHostToDevice) );
// Median filter the input image here
// .......
// start summing all pixels
Npp64s *partialSum = 0;
partialSum = (Npp64s *) malloc(sizeof(Npp64s));
int bytes = input.cols*input.rows;
Npp8u *scratch = nppsMalloc_8u(bytes);
int ostep = input.step;
NppiSize imSize;
imSize.width = input.cols;
imSize.height = input.rows;
// copy processed image data into a source_pointer
unsigned char *odata;
odata = (unsigned char*) malloc( sizeof(unsigned char) * input.rows * input.cols);
memcpy(odata, output.data, sizeof(unsigned char) * input.rows * input.cols);
// compute the sum over all the pixels
nppiSum_8u64s_C1R( odata, ostep, imSize, scratch, partialSum );
// print sum
printf( "\n Total Sum cuda %d \n", *partialSum) ;
gpuErrchk(cudaFree(device_input)); // <--- Unknown error here
gpuErrchk(cudaFree(device_output));
最佳答案
nppiSum_8u64s_C1R
中的partialSum
参数应该是设备分配的内存。
此外,您还分配了图像大小的暂存缓冲区。有一个名为 nppiSumGetBufferHostSize_8u64s_C1R
的函数可以为您提供暂存缓冲区的确切大小,它可能比图像本身大(不太可能用于简单的求和,但有可能)。
和 Cuda 一样,始终检查 NPP 中的返回值。 nppiSum_8u64s_C1R
在您的情况下可能不会返回 NPP_NO_ERROR
。
关于c++ - CUDA NPP - GPU 错误检查时出现未知错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22546805/
NPP 函数,更具体的 npps ( https://docs.nvidia.com/cuda/npp/group__npps.html ) 是否可以作为设备函数调用? 如果我创建一个全局函数,我可以
我使用 Npp (Notepad++) 编译 Tex 文件。但是每次我重新打开任何 tex 文件时,Npp 都无法识别它并使用另一种语言来突出显示,我必须自己选择语言 -> tex。因为我仅将 Npp
我在 npp 中的问题是,当我添加退格时,它会添加缩进。例如,我正在插入一个退格键,如链接图片所示: Npp 在开头添加自动空格... 由于这是一个固定长度的记录,它会破坏文件。如何禁用此行为? 感谢
我正在使用 Notepad++ 风格的正则表达式。这个... Find: ([^`]{1,23} ) Replace: $0\n ...接受这个输入字符串... Now is the time for
我在尝试为一些 NPP icc 函数创建静态包装器以从 cGo (Golang) 环境中调用它们时遇到了问题。 我能够使用提供的静态 NPP 库创建和编译(C 语言)可执行文件,并且运行良好。然后我将
我一直在尝试通过 Python 访问 Nvidia Performance Primitives 库,我在这个网站上找到了一个非常有用的教程,最后更新于 2011 年:http://openvidia
CUDA NPP 库支持使用 nppiFilter_8u_C1R 命令过滤图像,但不断出现错误。我可以毫无问题地启动并运行 boxFilterNPP 示例代码。 eStatusNPP = nppiFi
我正在尝试使用 NVIDIA NPP 来试验一些图像大小调整例程。我想调整到一个精确的尺寸。我一直在研究使用 NVIDIA NPP 调整图像大小,但它的所有调整大小函数都采用 X 和 Y 维度的比例因
我正在尝试使用 Nvidia 性能基元库来调整图像大小,但 nppiResize_8u_C3R 函数抛出一个 NPP_RESIZE_FACTOR_ERROR,该错误未在文档中列为一个该函数的错误返回码
我正在尝试对图像中的所有像素求和,并使用 CUDA NPP 库获取所有像素的平均值。我的图像是尺寸为 w256 x h1024 的 8 位 unsigned char 灰度图像。我已尝试遵循声明指针并
我又一次继承了看起来可疑的代码;基本上是这样的: (void) nppiFilter...(...); cudaError_t err = cudaGetLastError(); if (err !=
问题在标题中:我在 Npp 中打开了很多文件,并且只想通过 Alt+F6 编译最左边的文件(NppExec-Plugin),我正在用 ConTeXt 编译 tex 文件。 目前我的命令是: cd $(
我在 Windows 7 下使用 Notepad++。我曾经为 Perl 应用程序使用 npp.exec 插件,它在以下代码中运行良好: SET OUTFILE = C:\00_Data\output
尝试学习 Regex 子程序。我制作了这个正则表达式来匹配 IP 地址。它在 Notepad++ 中工作,但是当我在网络中的 PCRE 测试器中尝试它时,它只匹配最后一组中最多 2 个数字的 IP。你
因为我的插件需要使用 JavaScript 代码与同一页面上的其他插件进行交互:obj1.invokeWith(obj2) 在此方法中,obj2 的一个 NPObject 对象被传递给 obj1。如何
我有一个 8 位 unsigned char 图像,它是灰度的(值在 0-255 之间),我想使用 NPP CUDA 库文档,它提供了一些函数,例如 nppiSum_8u64s_C1R,找到所有像素的
在Nvidia Performance Primitives (NPP) CUDA SDK distribution中的图像处理实例,图像通常作为 ImageCPU 对象存储在 CPU 上,图像通常作
CUDA 构建的 NPP 库是仅使用 freeImage 还是我可以使用其他结构或仅使用 unsigned char *image 作为 NPPs 函数的输入。 我提出这个问题的原因是 NPP 的所有
我用 C 编写了一个 NPAPI 插件,它需要调用 NPN_Invoke 功能 (为了调用 JavaScript 函数)。 但是 NPN_Invoke() 需要 NPP实例作为参数。 只有 NP_Ne
Nvidia Performance Primitives (NPP)提供 nppiFilter 函数,用于将用户提供的图像与用户提供的内核进行卷积。对于一维卷积核,nppiFilter 可以正常工作
我是一名优秀的程序员,十分优秀!