CUDA NPP库

一、库文件

NPP API被定义在以下文件中:npp.h、nppdefs.h、nppcore.h、nppi.h、npps.h,所有的头文件包括在CUDA工具包目录下的:/include/

NPP的功能被分为三个不同的组:

(1)核心库(NPPC):npp.h、nppdefs.h、nppcore.h

(2)图像处理库(NPPI):nppi.h、nppi_xxx.h

(3)信号处理库(NPPS):npps.h、npps_xxx.h

二、库组织结构

Windows:nppc.lib、nppial.lib、nppicc.lib、nppidei.lib、nppif.lib、nppig.lib、nppim.lib、nppist.lib、nppisu.lib、nppitc.lib、npps.lib

  • 静态NPP库依赖于一个名为cuLIBOS (libculibos.a)的公共线程抽象层库,该库现在作为工具包的一部分分发。
  • 因此,当静态库被链接到的时候,cuLIBOS必须提供给链接器。
  • 为了最小化库加载和CUDA运行时启动时间,建议尽可能使用静态库。

  • 为了在使用动态库时提高加载和运行时性能,NPP提供了一套完整的NPPI子库。
  • 仅链接到包含应用程序使用的函数的子库可以显著改善加载时间和运行时启动性能。

一些NPPI函数会在内部调用其他NPPI和/或NPPS函数,所以你可能需要链接到一些额外的库,这取决于你的应用调用了什么函数。NPPI子库按照NPPI头文件的分割方式被分割成不同的部分。子库列表如下:

NPPC:在链接任何应用程序时必须包含的NPP核心库

NPPIAL:nppi_arithmetic_and_logical_operations.h中的算术和逻辑运算函数

NPPICC, nppi_color_conversion.h中的颜色转换和采样函数

NPPIDEI, nppi_data_exchange_and_initialization.h中的数据交换和初始化函数

NPPIF、滤波和计算机视觉函数在nppi_filtering_functions.h中

NPPIG,在nppi_geometry_transforms.h中找到的几何变换函数

NPPIM,形态操作函数在nppi_morphological_operations.h中找到;

NPPIST, nppi_statistics_functions.h和nppi_linear_transforms.h中的统计和线性变换;

NPPISU,内存支持函数在nppi_support_functions.h,

nppi_threshold_and_compare_operations.h中的NPPITC、threshold和compare操作函数,

在Linux上,要使用NPP对动态库编译一个小的颜色转换应用程序foo,可以使用以下命令:

nvcc foo.c -lnppc -lnppicc -o foo

然而,要对静态NPP库进行编译,必须使用以下命令:

nvcc foo.c  -lnppc_static -lnppicc_static -lculibos -o foo

 

你可能感兴趣的:(CUDA,开发语言)