NVIDIA Performance Primitives (NPP)
Version 5.0
September 7, 2012
Contents
1 NVIDIA Performance Primitives 1
1.1 What is NPP? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Technical Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4.1 Header Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4.2 Library Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.5 Supported NVIDIA Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 General API Conventions 5
2.1 Memory Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.1 Scratch Buffer and Host Pointer . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Function Naming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Integer Result Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Signal-Processing Specific API Conventions 9
3.1 Signal Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.1 Parameter Names for Signal Data . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.1.1 Source Signal Pointer . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.1.2 Destination Signal Pointer . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.1.3 In-Place Signal Pointer . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.2 Signal Data Alignment Requirements . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.3 Signal Data Related Error Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Signal Length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.1 Length Related Error Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4 Imaging-Processing Specific API Conventions 13
4.1 Function Naming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2 Image Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
ii CONTENTS
4.2.1 Line Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2.2 Parameter Names for Image Data . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2.2.1 Passing Source-Image Data . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2.2.2 Passing Destination-Image Data . . . . . . . . . . . . . . . . . . . . . . 16
4.2.2.3 Passing In-Place Image Data . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.2.4 Passing Mask-Image Data . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.2.5 Passing Channel-of-Interest Data . . . . . . . . . . . . . . . . . . . . . 18
4.2.3 Image Data Alignment Requirements . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.4 Image Data Related Error Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3 Region-of-Interest (ROI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3.1 ROI Related Error Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.4 Masked Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.5 Channel-of-Interest API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.5.1 Select-Channel Source-Image Pointer . . . . . . . . . . . . . . . . . . . . . . . . 20
4.5.2 Select-Channel Source-Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.5.3 Select-Channel Destination-Image Pointer . . . . . . . . . . . . . . . . . . . . . . 21
5 Module Index 23
5.1 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6 Data Structure Index 27
6.1 Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7 Module Documentation 29
7.1 NPP Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.1.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.1.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1.2.1 nppGetGpuComputeCapability . . . . . . . . . . . . . . . . . . . . . . 30
7.1.2.2 nppGetGpuName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1.2.3 nppGetGpuNumSMs . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1.2.4 nppGetLibVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1.2.5 nppGetMaxThreadsPerBlock . . . . . . . . . . . . . . . . . . . . . . . 30
7.1.2.6 nppGetMaxThreadsPerSM . . . . . . . . . . . . . . . . . . . . . . . . 31
7.1.2.7 nppGetStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.1.2.8 nppSetStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.2 NPP Type Definitions and Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7.2.1 Define Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2.1.1 NPP_MAX_16S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Copyright ©2009–2012 NVIDIA Corporation
CONTENTS iii
7.2.1.2 NPP_MAX_16U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2.1.3 NPP_MAX_32S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2.1.4 NPP_MAX_32U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2.1.5 NPP_MAX_64S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2.1.6 NPP_MAX_64U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2.1.7 NPP_MAX_8S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2.1.8 NPP_MAX_8U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2.1.9 NPP_MAXABS_32F . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.2.1.10 NPP_MAXABS_64F . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.2.1.11 NPP_MIN_16S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.2.1.12 NPP_MIN_16U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.2.1.13 NPP_MIN_32S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.2.1.14 NPP_MIN_32U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.2.1.15 NPP_MIN_64S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.2.1.16 NPP_MIN_64U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.2.1.17 NPP_MIN_8S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.2.1.18 NPP_MIN_8U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.2.1.19 NPP_MINABS_32F . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.2.1.20 NPP_MINABS_64F . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.2.2 Enumeration Type Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.2.2.1 NppCmpOp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.2.2.2 NppGpuComputeCapability . . . . . . . . . . . . . . . . . . . . . . . . 38
7.2.2.3 NppiAlphaOp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.2.2.4 NppiAxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.2.2.5 NppiBorderType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.2.2.6 NppiInterpolationMode . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.2.2.7 NppRoundMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.2.2.8 NppStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.2.2.9 NppsZCType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
7.3 Basic NPP Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7.3.1 Typedef Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.3.1.1 Npp16s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.3.1.2 Npp16u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.3.1.3 Npp32f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.3.1.4 Npp32s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.3.1.5 Npp32u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Copyright ©2009–2012 NVIDIA Corporation