核心NPP函数

库管理的基础功能,特别是库版本和设备属性查询功能。

函数

const NppLibraryVersion *nppGetLibVersion(void)

获取NPP库版本。

Returns

一个包含主版本号、次版本号和构建号各自独立值的结构体。

int nppGetGpuNumSMs(void)

获取当前活动CUDA设备上的流式多处理器(SM)数量。

Returns

默认CUDA设备的SM数量。

int nppGetMaxThreadsPerBlock(void)

获取当前活动CUDA设备上每个块的最大线程数。

Returns

当前CUDA设备上每个块的最大线程数。

int nppGetMaxThreadsPerSM(void)

获取当前活动GPU每个SM(流式多处理器)的最大线程数。

Returns

当前GPU每个SM的最大线程数

int nppGetGpuDeviceProperties(int *pMaxThreadsPerSM, int *pMaxThreadsPerBlock, int *pNumberOfSMs)

获取当前活动GPU的每个SM最大线程数、每个块最大线程数以及SM数量。

Returns

cudaSuccess 表示成功,-1 表示失败

const char *nppGetGpuName(void)

获取当前活跃的CUDA设备名称。

Returns

系统中当前活跃的显卡/计算设备的名称字符串。

cudaStream_t nppGetStream(void)

获取NPP CUDA流。

NPP通过全局流状态变量实现设备任务的并发执行。默认情况下,NPP流被设置为流0,即非并发模式。用户可以将NPP流设置为任何有效的CUDA流。随后所有由NPP发出的CUDA命令(例如NPP库启动的内核)都将被发送到该NPP流中。

NppStatus nppGetStreamContext(NppStreamContext *pNppStreamContext)

获取当前由nppSetStream()调用设置的NPP管理的CUDA流上下文。

NPP通过维护一个全局流状态上下文来实现设备任务的并发执行。默认情况下,NPP流被设置为流0,即非并发模式。用户可以将NPP流设置为任何有效的CUDA流,这将更新当前由NPP管理的流状态上下文,或者向NPP调用提供应用程序初始化的流上下文。随后,NPP发出的所有CUDA命令(例如由NPP库启动的内核)将被发送到当前NPP管理的流或应用程序提供的流上下文,具体取决于是否将流上下文传递给NPP函数。由NPP管理的流上下文调用(不带流上下文参数的调用)可以与应用程序管理的流上下文调用混合使用,但任何NPP管理的流上下文调用将始终使用最近通过nppSetStream()设置的流,如果从未调用过nppSetStream(),则使用NULL流。

unsigned int nppGetStreamNumSMs(void)

获取与当前NPP CUDA流关联设备上的SM(流式多处理器)数量。

NPP通过全局流状态变量实现设备任务的并发执行。默认情况下,NPP流被设置为流0,即非并发模式。用户可以将NPP流设置为任何有效的CUDA流。随后所有由NPP发出的CUDA命令(例如NPP库启动的内核)都将被发送到该NPP流中。此调用避免了cudaGetDeviceProperties()的调用。

unsigned int nppGetStreamMaxThreadsPerSM(void)

获取与当前NPP CUDA流关联设备上每个SM(流式多处理器)的最大线程数。

NPP通过全局流状态变量实现设备任务的并发执行。默认情况下,NPP流被设置为流0,即非并发模式。用户可以将NPP流设置为任何有效的CUDA流。随后所有由NPP发出的CUDA命令(例如NPP库启动的内核)都将被发送到该NPP流中。此调用避免了cudaGetDeviceProperties()的调用。

NppStatus nppSetStream(cudaStream_t hStream)

设置NPP CUDA流。

如果Cuda流管理出现问题,此函数现在会返回一个错误。只有在调用nppGetStream()返回的流编号与期望流不同时才应调用此函数,因为不必要地刷新当前流会显著影响性能。

另请参阅

nppGetStream()