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