问题标签 [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.
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...)
What is the step parameter?
How to decide step size?
If I use
width
orwidth*sizeof(int)
, does it have an effect on the performance?
thank you for reading my question....
English is more difficult than programming...
image-processing - 使用 NPP 锐化蒙版
我尝试使用 NPP 创建一个“不锐化蒙版”,但我的图像没有锐化,只是在某些区域更亮了一点。知道这段代码有什么问题吗?
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
c++ - CUDA NPP - GPU 错误检查时出现未知错误
我正在尝试对图像中的所有像素求和,并使用 CUDA NPP 库获取所有像素的平均值。我的图像是8-bit unsigned char grayscale
维度的图像w256 x h1024
。我试图遵循声明指针并将相应的 NPP 类型指针传递给 NPP 函数的所有必需规则。
但是,unknown error
当我对我的代码执行 GPU 错误检查时,我得到了一个。我试图调试它,但我似乎无法弄清楚我哪里出错了,我需要一些帮助吗?
除此之外,我还使用 OpenCV 进行处理,因此会出现一些 OpenCV 代码。
编辑:代码已更新
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.
我一直试图摆脱它,但到目前为止我一直没有成功。请帮忙!我在这段小代码上已经有大约两天的时间了。
代码:
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线连接。对于我测试过的其他内核,我没有看到此配置有任何缺点。
api - 如何将 Npp8u * 转换为 CUdeviceptr
我是 cuda 驱动 Api 接口的新手,但我认为 CUdeviceptr 看起来像一个句柄参数。所以我对 CUdeviceptr 和 npp8u * 之间的转换感到困惑。
我试着像上面那样写转换,对吗!
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
cuda - CUDA - 使用(未对齐的)子图像(用于纹理绑定、NPP、...)时有任何问题吗?
在 CPU 上,我经常使用二维图像(间距线性)的“子图像”,它们只是指向“主”图像的某个 ROI。因此,对子图像的所有修改实际上也会改变“主”图像。
CUDA 中是否存在设备内存上的子图像到二维图像(间距线性)的问题?例如,可以将纹理绑定到它或纹理对象吗?NPP 例程是否正常工作?我之所以问,是因为某些例程可能需要某种对齐(缓冲区的“起始地址”)。
请注意,我主要对稳定性问题感兴趣。我想这些子图像可能会有轻微的性能损失,但这不是我主要关心的问题。
特别是,如果此处的“cudaBindTexture2D”文档中提到的缓冲区基地址的对齐限制,我会很感兴趣:
“由于硬件对纹理基地址强制要求对齐,因此 cudaBindTexture2D() 在 *offset 中返回一个字节偏移量,该偏移量必须应用于纹理提取,以便从所需的内存中读取。”
“纹理对象”(对于 CC >= 3.0 GPU)也是必需的?
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] 范围内),我同时使用了cudaMallocPitch
和nppiMalloc_32f_C1
。
cudaMallocPitch
给了我 2048 的音高值,而nppiMalloc_32f_C1
给了我 2560。后一个数字来自哪里,到底是多少?
为什么我关心这个
我正在编写一个同步的内存类模板,用于在 GPU 和 CPU 上同步值。这个类应该负责在引擎盖下分配倾斜的记忆(如果可能的话)。因为我希望这个类可以与 NVIDIA 的 NPP 互操作,所以我想以一种为 CUDA 内核和 NPP 操作提供良好性能的方式处理所有分配。
我的印象是nppiMalloc
在后台打电话cudaMallocPitch
,但似乎我错了。