核心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()返回的流编号与期望流不同时才应调用此函数,因为不必要地刷新当前流会显著影响性能。
另请参阅