NVIDIA NPP

NVIDIA NPP

1. 简介

NVIDIA Performance Primitives library (NPP) 是一系列为加速进程的库函数,NPP的原始目标是针对图像和视频进程,而现在以被开发工程师应用于其它很多领域,包括信号处理。与同级别的纯 CPU 函数相比,这些函数最高可实现5 - 10倍性能提升。利用NPP,开发者能够利用 (CUDA 4.1中) 2000多个图像处理与信号处理基元,在数小时之内即可实现应用程序的大幅性能提升。

无论用GPU加速的版本代替CPU基元还是将NPP基元与现有的GPU加速流水线相结合,NPP都能够实现极高的性能,同时可缩短开发时间。

2. 使用方法

2.1 文件

其中在安装了CUDA工具包后,默认会安装NPP library相关的头文件和库文件。

1) 头文件

其中所有的.h文件都安装在CUDA Toolkit目录的include文件下,其中有:

  • nppdefs.h
  • nppcore.h
  • nppi.h
  • npps.h
  • nppversion.h
  • npp.h

2) 库文件

从NPP 5.5版本开始,将所有的库文件分为了三个独立文件:

  • NPPC:这个库是个core library,主要包含了来自npp.h头文件的的函数,其中该库还被其它两个库所共享;
  • NPPI:这个库是为image Processing所提供的功能,    该库提供的函数是来自nppi.h头文件中所声明的。
  • NPPS:这个库是为signal processing所提供的功能,该库提供的函数是来自npps.h头文件中所声明的。

若安装了CUDA Toolkit后,其安装目录是在lib目录下,在Linux下有如图 1所示的动态和静态文件。

图 1

2.2 编译方式

由于NPP提供静态和动态库文件,所以它有两种编译方式,其中若在Linux中有foo.c程序,则两种编译方式为:

  • 动态编译

    nvcc foo.c -lnppi -o foo

  • 静态编译

    nvcc foo.c -lnppi_static -lculibos -o foo

2.3 API使用方式

对于NPP提供了API的操作内存空间是在device上的,所以不能将这些API应用于host中,但可以在host函数中调用。同时在NPP项目中需要添加include和library所需要的目录。

  • 一般情况下需要添加cuda tookit的include目录,默认是:/usr/local/cuda-7.0/include;
  • 对于library的文件,一般需要culibs和nppc_static两个库,其它库则根据需要添加。

    1 #include <npp.h> 
     2 
     3 __global__ void testCudaFun(Npp8u *pDst,int num_types){ 
     4 
     5     for (int i = 0; i < num_types; i++){ 
     6 
     7         printf("%d:%d\n",i,pDst[i]); 
     8 
     9     } 
    10 
    11 } 
    12 
    13 int main(void){ 
    14 
    15     const int num_types = 2*sizeof(Npp8u); 
    16 
    17     Npp8u *host_pDst = (Npp8u*)malloc(num_types); 
    18 
    19     Npp8u *dev_pDst = (Npp8u*)nppsMalloc_8u(num_types); 
    20 
    21     for(int i=0; i<num_types;i++)    { 
    22 
    23         host_pDst[i] = i; 
    24 
    25     } 
    26 
    27     cudaMemcpy(dev_pDst,host_pDst,num_types,cudaMemcpyHostToDevice); 
    28 
    29     testCudaFun<<<1,1>>>(dev_pDst,num_types); 
    30 
    31     checkCudaErrors(cudaDeviceSynchronize()); 
    32 
    33     return 0; 
    34 
    35 } 

3. 功能

NPP针对Image Processing和Signal Processing两种不同的目标,实现了两套不同的API供使用。其中Image Processing是与图像处理相关的API,而Signal Processing是与信号处理相关的API。

3.1 Image Processing

Arithmetic and Logical 操作

1) Arithmetic

这个系列的API主要是与图形操作相关的算术运算,有AddC、Mul、MulC、MulScale、MulCScale、Sub、SubC    Div、DivC、Div_Round、AbsDiffC、Abs、Add、AbsDiff、AddSquare、Sqr、AddProduct、Sqrt、AddWeighted、Ln和Exp等函数。

2) Logical

Logical系列的是一个与逻辑操作相关的API,有AndC、OrC、XorC、RshiftC、LshiftC、And、Or、Xor和Not等函数。

3) Alpha

3.2 Signal processing

暂空

时间: 2024-12-15 14:56:37

NVIDIA NPP的相关文章

NVIDIA Documentation

NVIDIA Documentation NVIDIA官网提供四大类的帮助文档,其中本文以这四类为基础提供有可能在高性能计算上使用的library. 1. CUDA Toolkit Documentation 1.1 AmgX AmgX提供了一个简单路径来加速对英伟达 GPU 核心solver技术.它是一种高性能.以及包括柔性 state-of-the-art 函数库求解器的组合系统 , 用户可以轻松地构建复杂的嵌套迭代法求解等.AmgX库提供很多优化方法,灵活地选择solver的构造方法,而且

debian 8 安装 nvidia 显卡驱动

nvidia 单显卡安装教程地址:https://wiki.debian.org/NvidiaGraphicsDrivers/ 步骤一:编辑 /etc/apt/sources.list  文件 添加 deb http://http.debian.net/debian/ jessie main contrib non-free 步骤二: 更新 软件源 并安装软件 # aptitude update # aptitude -r install linux-headers-$(uname -r|sed

NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

转自:http://blog.csdn.net/enjoyyl/article/details/47397505?from=timeline&isappinstalled=0#10006-weixin-1-52626-6b3bffd01fdde4900130bc5a2751b6d1 NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0环境配置 引言 DIGITS简介 DIGITS特性 资源信息 说明 DIGI

ubuntu 禁用自带的nouveau显卡驱动,安装NVIDIA显卡驱动

下载显卡驱动 进入Nvidia的官网,找到对应GTX 750显卡的Linux 64-bit 的驱动程序,然后下载 当点击下载链接后,发现浏览器一直在加载那个*.run文件,很久都加载不完.这时将浏览器地址栏地址Copy下来,然后进入百度网盘中,离线下载,然后Paste网址,稍等片刻,下载即完成(其实.run文件是70多MB的文件,难怪浏览器都快加载到卡住了): 然后就简单了,直接下载驱动到硬盘即可 安装驱动 因为是全新安装的操作系统,并且没有安装开源版本的英伟达驱动,所以,下面直接安装官方驱动即

NVIDIA GeForce Driver Installation on Debian Jessie Linux 8 64bit

The easiest way to install NVIDIA GeForce Driver on Debian Linux 8 ( Jessie ) ( for Debian 9 Stretch visit: How to install the latest NVIDIA drivers on Debian 9 Stretch Linux) is to use official contrib and non-free debian repository. First, add the

谷歌弃用Intel、NVIDIA秘密研发处理器

前不久,谷歌围棋机器人AlphaGo横扫韩国天王李世石,资料显示这台AI(人工智能)设备堆砌了很多顶级芯片. 其中最低配置使用了48颗CPU和1颗GPU,最高配置AlphaGo被称为AlphaGo Distributed,在3月份的时候装配为1920颗CPU和280颗GPU,且在不断升级.当时对外公布的芯片提供商是Intel和NVIDIA.不过,从本届I/O大会上传来新消息,谷歌透露,打败韩国的那套AlphaGo其实内建了自家设计的微处理器.据悉,这种微处理器芯片隶属于应用专用集成电路(ASIC

NVIDIA新千元卡GTX 1060现身:256位显存

NVIDIA GP104核心的高端型号GTX 1080/1070发布之后,接下来自然就是GP106核心的主流型号GTX 1060,这也是传统的甜点价位,一般最低只要千元出头,非常适合主流玩家. GP106核心此前就已经现身,16nm工艺加持下非常小巧,目测不到200平方毫米,而整卡功耗应该会低于75W,流处理器预计最多1280个. 在印度进出口网站Zauba上,GP106核心也露面了,并且明确标注显存位宽为256-bit,也就是和两款高端卡一样! 要知道,现在的GTX 960可是只有128-bi

AMD Polaris 10即将上市死瞌Nvidia

备受期待的AMD下一代Polaris GPU有望于下月揭开神秘面纱.Fudzilla援引消息灵通人士的话称:采用14nm FinFET工艺打造的Polaris 10,旨在取代当前Radeon R9 390系列的位置.消息人士有信心地表示,在某些情况下,Polaris 10的性能与Radeon R9 390持平甚至超出一些,收益也会比R9 390X更加可观.当前,AMD的R9 390X显卡的售价在399美元左右,不带‘X’的R9 390则在300美元左右.在Polaris 10推出之后,AMD应该

Fedora 下安装NVIDIA显卡驱动

http://www.linuxidc.com/Linux/2014-04/100689.htm rpmfusion安装法: 相对于ATi,在Linux下安装NVIDIA就简单得多.只需要一个命令即可完成驱动的安装: 首先要确保你已经添加rpmfusion的源,如果你不能确认你可以安装输入此命令添加rpmfusion源: sudo rpm -ivh http://download1.rpmfusion.org/free/Fedora/rpmfusion-free-release-stable.n