6.3. 线程管理 [已弃用]
本节介绍CUDA运行时应用程序编程接口中已弃用的线程管理函数。
Functions
- __host__ cudaError_t cudaThreadExit ( void )
- Exit and clean up from CUDA launches.
- __host__ cudaError_t cudaThreadGetCacheConfig ( cudaFuncCache ** pCacheConfig )
- Returns the preferred cache configuration for the current device.
- __host__ cudaError_t cudaThreadGetLimit ( size_t* pValue, cudaLimit limit )
- Returns resource limits.
- __host__ cudaError_t cudaThreadSetCacheConfig ( cudaFuncCache cacheConfig )
- Sets the preferred cache configuration for the current device.
- __host__ cudaError_t cudaThreadSetLimit ( cudaLimit limit, size_t value )
- Set resource limits.
- __host__ cudaError_t cudaThreadSynchronize ( void )
- Wait for compute device to finish.
Functions
- __host__ cudaError_t cudaThreadExit ( void )
-
退出并清理CUDA启动。
返回
已弃用
请注意,此函数已弃用,因为其名称未能反映其实际行为。其功能与非弃用函数cudaDeviceReset()完全相同,建议改用后者。
描述
显式销毁并清理当前进程中与当前设备关联的所有资源。任何后续对该设备的API调用都将重新初始化该设备。
请注意,此函数将立即重置设备。调用者有责任确保在调用此函数时,设备未被进程中的其他主机线程访问。
Note:-
请注意,此函数也可能返回之前异步启动的错误代码。
-
请注意,如果此调用尝试初始化CUDA RT内部状态,该函数也可能返回cudaErrorInitializationError、cudaErrorInsufficientDriver或cudaErrorNoDevice。
-
请注意,根据cudaStreamAddCallback的规定,回调函数中不得调用任何CUDA函数。在这种情况下,可能会(但不保证)返回cudaErrorNotPermitted作为诊断信息。
另请参阅:
-
- __host__ cudaError_t cudaThreadGetCacheConfig ( cudaFuncCache ** pCacheConfig )
-
返回当前设备的首选缓存配置。
参数
- pCacheConfig
- - Returned cache configuration
返回
已弃用
请注意,此函数已弃用,因为其名称未能反映其行为。其功能与非弃用函数cudaDeviceGetCacheConfig()完全相同,建议改用后者。
描述
在使用相同硬件资源的L1缓存和共享内存的设备上,此函数通过pCacheConfig返回当前设备的首选缓存配置。这仅是一个偏好设置。如果可能,运行时将使用请求的配置,但为了执行函数,运行时可以自由选择不同的配置。
在L1缓存和共享内存大小固定的设备上,这将返回一个cudaFuncCachePreferNone的pCacheConfig。
支持的缓存配置包括:
-
cudaFuncCachePreferNone: 对共享内存或L1缓存无偏好(默认设置)
-
cudaFuncCachePreferShared: 优先使用更大的共享内存和更小的L1缓存
-
cudaFuncCachePreferL1: 优先使用更大的L1缓存和更小的共享内存
Note:-
请注意,此函数也可能返回之前异步启动的错误代码。
-
请注意,如果此调用尝试初始化CUDA RT内部状态,该函数也可能返回cudaErrorInitializationError、cudaErrorInsufficientDriver或cudaErrorNoDevice。
-
请注意,根据cudaStreamAddCallback的规定,回调函数中不得调用任何CUDA函数。在这种情况下,可能会(但不保证)返回cudaErrorNotPermitted作为诊断信息。
另请参阅:
- __host__ cudaError_t cudaThreadGetLimit ( size_t* pValue, cudaLimit limit )
-
返回资源限制。
参数
- pValue
- - Returned size in bytes of limit
- limit
- - Limit to query
已弃用
请注意,此函数已被弃用,因为其名称未能准确反映其行为。其功能与非弃用函数cudaDeviceGetLimit()完全相同,建议改用后者。
描述
返回*pValue中limit的当前大小。支持的cudaLimit值为:
-
cudaLimitStackSize: 每个GPU线程的堆栈大小;
-
cudaLimitPrintfFifoSize: printf()设备系统调用使用的共享FIFO大小。
-
cudaLimitMallocHeapSize: malloc()和free()设备系统调用使用的堆大小;
Note:-
请注意,此函数也可能返回之前异步启动的错误代码。
-
请注意,如果此调用尝试初始化CUDA RT内部状态,该函数也可能返回cudaErrorInitializationError、cudaErrorInsufficientDriver或cudaErrorNoDevice。
-
请注意,根据cudaStreamAddCallback的规定,回调函数中不得调用任何CUDA函数。在这种情况下,可能会(但不保证)返回cudaErrorNotPermitted作为诊断信息。
另请参阅:
- __host__ cudaError_t cudaThreadSetCacheConfig ( cudaFuncCache cacheConfig )
-
为当前设备设置首选的缓存配置。
参数
- cacheConfig
- - Requested cache configuration
返回
已弃用
请注意,此函数已弃用,因为其名称未能反映其实际行为。其功能与非弃用函数cudaDeviceSetCacheConfig()完全相同,建议改用后者。
描述
在L1缓存和共享内存使用相同硬件资源的设备上,通过cacheConfig设置当前设备的首选缓存配置。这仅是一个偏好设置。运行时系统会尽可能采用请求的配置,但必要时可以自由选择其他配置。通过cudaFuncSetCacheConfig ( C API)或cudaFuncSetCacheConfig ( C++ API)设置的任何函数级偏好都将优先于此设备全局设置。将设备全局缓存配置设为cudaFuncCachePreferNone会导致后续内核启动时优先保持原有缓存配置,除非必须更改才能启动内核。
在L1缓存和共享内存大小固定的设备上,此设置不起作用。
使用与最近偏好设置不同的偏好启动内核可能会插入一个设备端同步点。
支持的缓存配置包括:
-
cudaFuncCachePreferNone: 对共享内存或L1缓存无偏好(默认设置)
-
cudaFuncCachePreferShared: 优先使用更大的共享内存和更小的L1缓存
-
cudaFuncCachePreferL1: 优先使用更大的L1缓存和更小的共享内存
Note:-
请注意,此函数也可能返回之前异步启动的错误代码。
-
请注意,如果此调用尝试初始化CUDA RT内部状态,该函数也可能返回cudaErrorInitializationError、cudaErrorInsufficientDriver或cudaErrorNoDevice。
-
请注意,根据cudaStreamAddCallback的规定,回调函数中不得调用任何CUDA函数。在这种情况下,可能会(但不保证)返回cudaErrorNotPermitted作为诊断信息。
另请参阅:
- __host__ cudaError_t cudaThreadSetLimit ( cudaLimit limit, size_t value )
-
设置资源限制。
参数
- limit
- - Limit to set
- value
- - Size in bytes of limit
已弃用
请注意,此函数已弃用,因为其名称未能准确反映其行为。其功能与非弃用函数cudaDeviceSetLimit()完全相同,建议改用后者。
描述
将limit设置为value是应用程序请求更新设备当前维护的限制值。驱动程序可以自由调整请求值以满足硬件要求(可能将其限制在最小或最大值范围内,向上取整到最近的元素大小等)。应用程序可以使用cudaThreadGetLimit()来准确查询限制值最终被设置为何。
设置每个cudaLimit都有其特定的限制条件,因此这里分别进行讨论。
-
cudaLimitStackSize 控制每个GPU线程的堆栈大小。
-
cudaLimitPrintfFifoSize 控制由printf()设备系统调用使用的共享FIFO的大小。必须在启动任何使用printf()设备系统调用的内核之前设置cudaLimitPrintfFifoSize,否则将返回cudaErrorInvalidValue。
-
cudaLimitMallocHeapSize 控制由malloc()和free()设备系统调用使用的堆大小。必须在启动任何使用malloc()或free()设备系统调用的内核之前设置cudaLimitMallocHeapSize,否则将返回cudaErrorInvalidValue错误。
Note:-
请注意,此函数也可能返回之前异步启动的错误代码。
-
请注意,如果此调用尝试初始化CUDA RT内部状态,该函数也可能返回cudaErrorInitializationError、cudaErrorInsufficientDriver或cudaErrorNoDevice。
-
请注意,根据cudaStreamAddCallback的规定,回调函数中不得调用任何CUDA函数。在这种情况下,可能会(但不保证)返回cudaErrorNotPermitted作为诊断信息。
另请参阅:
- __host__ cudaError_t cudaThreadSynchronize ( void )
-
等待计算设备完成操作。
返回
已弃用
请注意,此函数已弃用,因为其名称未能反映其实际行为。其功能类似于未弃用的函数cudaDeviceSynchronize(),建议改用后者。
描述
阻塞当前线程,直到设备完成所有先前请求的任务。如果任一前置任务失败,cudaThreadSynchronize()将返回错误。若为该设备设置了cudaDeviceScheduleBlockingSync标志,主机线程将一直阻塞直到设备完成工作。
Note:-
请注意,此函数也可能返回之前异步启动的错误代码。
-
请注意,如果此调用尝试初始化CUDA RT内部状态,该函数也可能返回cudaErrorInitializationError、cudaErrorInsufficientDriver或cudaErrorNoDevice。
-
请注意,根据cudaStreamAddCallback的规定,回调函数中不得调用任何CUDA函数。在这种情况下,可能会(但不保证)返回cudaErrorNotPermitted作为诊断信息。
另请参阅:
-