问题标签 [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 - NPP函数可以作为设备函数调用吗?
NPP 功能,更具体的 npps ( https://docs.nvidia.com/cuda/npp/group__npps.html ) 可以作为设备功能调用吗?
如果我创建一个全局函数,我可以在内部调用 npps 函数nppsMaxIndx_32f
(以计算向量的最大值)吗?
示例:我有 100 个向量,每个向量有 10000 个浮点数,如果我在主机代码中执行此操作,我必须对 npp 函数进行 100 次调用
如果我创建一个 100 个线程的全局函数并在内部为每个向量调用 npp 函数以便它们同时启动,这会起作用吗?nppsMaxIndx_32f
可以作为设备函数调用吗?
c - Cuda NPP 库的静态包装器
我在尝试为某些 NPP icc 函数创建静态包装器以从 cGo (Golang) 环境中调用它们时遇到了问题。
我能够使用提供的静态 NPP 库创建和编译(C 语言)可执行文件,并且运行良好。然后我将它编译为一个库(带有必要的标志)。但是当我尝试从另一个可执行文件(纯 C 或 cGo)链接该库时,我收到错误消息“未定义对 nppiYCbCr420ToRGB_8u_P3C3R 的引用”。我做错了什么?
包装器.c
构建.sh
调用者.c
构建测试.sh
最后我收到了这个错误信息
我还尝试使用另一个链接器/编译器,结果相同:
c - 如何计算 NPP 的图像旋转偏移?
ippiGetRotateTransform和nppiRotate都采用 x 和 y 移位参数,但我不确定它们是如何工作的。IPP 和 NPP 都围绕 (0, 0) 旋转,然后移动结果。这个例子展示了使用ippiGetRotateShift围绕中心旋转,但没有解释它是如何使用的。
示例的相关部分:
该示例记录了值更改为的内容,但没有记录更改方式或原因。甚至目的地中心点也无法解释。为什么是 (3.5, 2.5) 而不是 (3, 3)?
无论如何,x 和 y 位移参数的行为似乎相同。我如何在不依赖 IPP 的情况下为 NPP 计算它们?
cuda - NPP 图像互相关不产生有效结果
我正在尝试使用 NPP 互相关库实现图像置换方法。
我尝试通过在内存中生成几个简单的图像,输出 Npp8u 或 Npp32f 数组来创建一个简单的解决方案。然而,互相关库会产生无意义或无效(即 NAN)的结果。
CUDA 方法和 NPP 方法都返回成功消息,所以我很确定这是我在设置互相关时做错的事情。任何人都可以帮助我朝着正确的方向寻求解决方案吗?
image-processing - 带有 NPP 标签标记的 Cuda 边界框
我正在尝试使用 cuda 库为我的输入数据找到边界框。我从一个具有噪声(可能还有一些归零的单元格)的数据集开始,其数据区域远高于噪声。
首先,我使用 nppiFilterGauss_32f_C1R 对我的数据应用高斯模糊。
然后我使用 nppiCompareC_32f_C1R 对其进行阈值化以创建二进制图像。
在此之后,我使用 nppiLabelMarkers_8u32u_C1R 为每个区域创建一个唯一标签。
在这一点上,我的结果如我所料。我留下了一个数据集,它对每个“blob”都有唯一的值(尽管数字之间有数字间隔)。
我一直在网上寻找,似乎找不到一个库,然后可以在 GPU 上找到标记组件的边界框。
我能够使用 findContours 和 BoundingRects 获得使用 OpenCV 的完整流程,但这是在 CPU 上完成的工作,无法跟上我的数据速率。
是否有我缺少的 cuda 函数可以为我提供每个标记的 blob 的边界框参数?
谢谢!
cuda - cuda nppiResize() 用于 RGB 图像
nVidia Cuda nppiResize_32f_C1R 在灰度 1 x 32f 上工作正常,但 nppiResize_32f_C3R 返回垃圾。显然,一种解决方法是调用此例程 3 次,首先将数据解交织为平面 R、G、B,但我希望能够一次运行它。nVidia 有很多用于单平面图像处理的示例代码,但交错颜色平面的数量很少,所以我转向 stackoverflow 寻求帮助。我不知道如何计算步幅,但我知道步幅是图像宽度乘以每列索引的字节数。所以在我的情况下 - 没有填充线 - 对于 RGB,它的宽度应该是 32f x 3。
在 cudaMemcpy2D() 中尝试了不同的步幅/音高。无法为颜色 RGB 代码找到可行的解决方案。编译运行正常,没有错误。第一部分用于灰度(工作正常)。第二部分是RGB(垃圾)。
nsight - NPP 函数返回 nppiFilterRow_8u_C1R CUDA KERNEL 执行错误
我正在使用 nvidia nsight 应用程序来旋转和模糊图像。我正在使用相同的 NPP 库,oDeviceDst 从函数旋转的输出中填充数据,这工作正常。代码如下所示:另请注意,下面的代码在 for 循环中进行一些旋转角度。
但是一旦我运行它(远程目标),我的状态为-1000。模糊状态为-1000。
登出
有没有人在使用 NPP 库时遇到过类似的问题。
c++ - 通过 NVIDIA 性能基元将 NV12 转换为 BGR
我正在尝试通过 npp 将 NV12 图像转换为 BGR,但在最终数组中我有零。
dec 是一个视频解码器,它提供 NV12 格式的 pFrame 并提供有关它的附加信息,如偏移量、尺寸、NV12 平面等。如果我使用 cu... 和 cuda... 函数进行分配而不对齐,我会得到相同的结果.
有人对这个问题有任何想法吗?
c++ - CUDA NPP min-max 返回错误的输出
我正在使用以下代码来测试 CUDA NPP min-max 函数。
设备数组中的所有元素都设置为 1,但我得到以下输出。
cuda - 在 CUDA npp 中使用多个流
我想让代码同时旋转图像。
首先,我使用 nppiRotate_8u_C1R 检查了代码在默认流版本中运行良好,并将其更改为 4 流版本。32 个图像被复制到 4 个流中并使用 nppiRotate_8u_C1R_Ctx 旋转。
输入图像的大小为 2048*2048,但结果图像看起来与默认流版本不同。
我用 Nsight 系统分析了这两个代码,发现内核启动配置彼此不同。
在默认流版本中,线程数等于像素数(左)。
但是,线程数为 128128,远小于输入图像的大小(右)。
旋转后的图像仅出现在左上角的 128128 区域。
我该如何解决?或者有没有人遇到过和我一样的问题?
操作系统:Windows 10
GPU:RTX 3090
CUDA 版本:11.1