问题标签 [npp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
432 浏览

cuda - What is the 'STEP' in NPP library?

I have some question about NPP library...

This is about Step in NPP parameters. When I use NPP library, it makes me confused.

nppiSub_32s_C1RSfs(d_sink, step, d_source, step, d_terminals, step, size, 0);

that is example.. I can understand all parameters except the step. Every NPP function needs the step.

some people use width...

some people use width * sizeof(int).... (or float...)

some people make the step parameter by other library such as

nppiMalloc_32s_C1(width, height, &step);

I think if I use the library, that calculate step size.(but i don't know how to did...)

  1. What is the step parameter?

  2. How to decide step size?

  3. If I use width or width*sizeof(int), does it have an effect on the performance?

thank you for reading my question....

English is more difficult than programming...

0 投票
1 回答
559 浏览

image-processing - 使用 NPP 锐化蒙版

我尝试使用 NPP 创建一个“不锐化蒙版”,但我的图像没有锐化,只是在某些区域更亮了一点。知道这段代码有什么问题吗?

0 投票
1 回答
663 浏览

c++ - CUDA NPP - 图像缩减 - 找到所有图像像素的总和/平均值

我有一个 8 位 unsigned char 图像,它是灰度的(值在 0-255 之间),我想使用 NPP CUDA 库文档,它提供了一些函数,例如nppiSum_8u64s_C1R, 来查找所有像素的总和和平均值。

但是,我不知道函数oSizeROI中的含义是什么nppiSum_8u64s_C1R?我应该在这里输入我的图像尺寸w256 x h1024吗?

image_statistics__functions.html#gad5ca4eb684d5414e6026564ea63a1437">http://graphics.im.ntu.edu.tw/~bossliaw/nvCuda_doxygen/html/group_image _statistics__functions.html #gad5ca4eb684d5414e6026564ea63a1437

0 投票
1 回答
1041 浏览

c++ - CUDA NPP - GPU 错误检查时出现未知错误

我正在尝试对图像中的所有像素求和,并使用 CUDA NPP 库获取所有像素的平均值。我的图像是8-bit unsigned char grayscale维度的图像w256 x h1024。我试图遵循声明指针并将相应的 NPP 类型指针传递给 NPP 函数的所有必需规则。

但是,unknown error当我对我的代码执行 GPU 错误检查时,我得到了一个。我试图调试它,但我似乎无法弄清楚我哪里出错了,我需要一些帮助吗?

除此之外,我还使用 OpenCV 进行处理,因此会出现一些 OpenCV 代码。

编辑:代码已更新

0 投票
1 回答
870 浏览

c++ - CUDA NPP - 打印输出错误

在我之前的帖子之后:CUDA NPP - GPU 错误检查时出现未知错误

我曾尝试使用 CUDA NPP 库对图像中的所有像素求和,在一些开发人员的帮助下,我终于得到了可以编译的代码。但是,当我尝试partialSum通过将其复制到double变量中来打印存储的值时(与 CUDA v4.2 的 NPP 指南一致),我收到此错误:

Unhandled exception at 0x00fdf7f4 in MedianFilter.exe: 0xC0000005: Access violation reading location 0x40000000.

我一直试图摆脱它,但到目前为止我一直没有成功。请帮忙!我在这段小代码上已经有大约两天的时间了。

代码:

0 投票
1 回答
603 浏览

cuda - nppiCopyConstBorder_8u_C1R 的性能下降

nppiCopyConstBorder_8u_C1R在两种不同的架构(GTX480 和 GTX TITAN)中使用该功能时性能下降,还涉及不同的 CUDA 版本(分别为 v5.0 和 v5.5)。

在第一种情况下(GTX480 和 CUDA 5.0),函数的执行时间是

在第二种情况下(GTX TITAN 和 CUDA 5.5),执行时间是

我已经使用以下代码重现了这种行为:

问:有人知道这个问题吗?

这让我提出以下问题:

问:如何nppiCopyConstBorder_8u_C1R实施?该功能是否涉及将数据从设备复制到主机,在主机中扩展边界并将结果复制到设备?

PS:带有TITAN的机器在盒子外面有GPU,专门为多个PCIe连接设计的独立主板,它通过PCIe线连接。对于我测试过的其他内核,我没有看到此配置有任何缺点。

0 投票
3 回答
911 浏览

api - 如何将 Npp8u * 转换为 CUdeviceptr

我是 cuda 驱动 Api 接口的新手,但我认为 CUdeviceptr 看起来像一个句柄参数。所以我对 CUdeviceptr 和 npp8u * 之间的转换感到困惑。

我试着像上面那样写转换,对吗!

0 投票
1 回答
1113 浏览

python - PyCUDA NPP 库兼容性

我一直在尝试通过 Python 访问 Nvidia Performance Primitives 库,我在这个站点上发现了一个非常有用的教程,最后一次更新是在 2011 年:http: //openvidia.sourceforge.net/index.php/OpenVIDIA/python

但是,在下载 CUDA 6.0 工具包后,我似乎根本找不到任何 CUDA“.dll”文件(就像本教程开头附近提到的那些文件)。感谢这里的回复,我知道文件名应该与教程中的不同,但我找不到。

有人知道导入库的替代方法或命令吗?任何帮助将不胜感激,如果我错过了任何关键细节,请告诉我。

板:Jetson TK1 操作系统:L4T Ubuntu 14.04(来自https://developer.nvidia.com/jetson-tk1-support) 语言:Python 2.7

0 投票
1 回答
364 浏览

cuda - CUDA - 使用(未对齐的)子图像(用于纹理绑定、NPP、...)时有任何问题吗?

在 CPU 上,我经常使用二维图像(间距线性)的“子图像”,它们只是指向“主”图像的某个 ROI。因此,对子图像的所有修改实际上也会改变“主”图像。

CUDA 中是否存在设备内存上的子图像到二维图像(间距线性)的问题?例如,可以将纹理绑定到它或纹理对象吗?NPP 例程是否正常工作?我之所以问,是因为某些例程可能需要某种对齐(缓冲区的“起始地址”)。

请注意,我主要对稳定性问题感兴趣。我想这些子图像可能会有轻微的性能损失,但这不是我主要关心的问题。

特别是,如果此处的“cudaBindTexture2D”文档中提到的缓冲区基地址的对齐限制,我会很感兴趣:

“由于硬件对纹理基地址强制要求对齐,因此 cudaBindTexture2D() 在 *offset 中返回一个字节偏移量,该偏移量必须应用于纹理提取,以便从所需的内存中读取。”

“纹理对象”(对于 CC >= 3.0 GPU)也是必需的?

0 投票
2 回答
1299 浏览

cuda - CUDA 的 nppiMalloc... 函数如何保证对齐?

有一段时间让我感到困惑的是分配的 CUDA 内存的对齐要求。我知道如果它们对齐,访问行元素会更有效率。

先说一点背景:

根据 CUDA C 编程指南(第 5.3.2 节):

全局内存驻留在设备内存中,设备内存通过 32、64 或 128 字节内存事务访问。这些内存事务必须自然对齐只有与其大小对齐的设备内存的 32、64 或 128 字节段(即,其首地址是其大小的倍数)可以被内存事务读取或写入。

我的理解是,对于类型为 的 2D 交错数组T(例如 R、G、B 顺序的像素值),如果numChannels * sizeof(T)是 4、8 或 16,则必须使用cudaMallocPitch如果性能是必需的情况下分配数组。到目前为止,这对我来说一直很好。我会numChannels * sizeof(T)在分配 2D 数组之前进行检查,如果它是 4、16 或 32,我会使用它进行分配cudaMallocPitch,一切正常。

现在的问题:

我已经意识到,当使用 NVIDIA 的 NPP 库时,有一系列分配器函数(nppiMalloc... likenppiMalloc_32f_C1等等)。NVIDIA 建议使用这些功能来提高性能。我的问题是,这些功能如何保证对齐?更具体地说,他们使用什么样的数学来得出合适的值pitch

对于单通道 512x512 像素图像(浮点像素值在 [0, 1] 范围内),我同时使用了cudaMallocPitchnppiMalloc_32f_C1
cudaMallocPitch给了我 2048 的音高值,而nppiMalloc_32f_C1给了我 2560。后一个数字来自哪里,到底是多少?

为什么我关心这个
我正在编写一个同步的内存类模板,用于在 GPU 和 CPU 上同步值。这个类应该负责在引擎盖下分配倾斜的记忆(如果可能的话)。因为我希望这个类可以与 NVIDIA 的 NPP 互操作,所以我想以一种为 CUDA 内核和 NPP 操作提供良好性能的方式处理所有分配。
我的印象是nppiMalloc在后台打电话cudaMallocPitch,但似乎我错了。