6.28. 表面对象管理
本节介绍 CUDA 运行时应用程序编程接口的底层纹理对象管理功能。表面对象 API 仅在计算能力为 3.0 或更高的设备上受支持。
函数
- __host__ cudaError_t cudaCreateSurfaceObject ( cudaSurfaceObject_t* pSurfObject, const cudaResourceDesc* pResDesc )
- 创建表面对象。
- __host__ cudaError_t cudaDestroySurfaceObject ( cudaSurfaceObject_t surfObject )
- 销毁表面对象。
- __host__ cudaError_t cudaGetSurfaceObjectResourceDesc ( cudaResourceDesc* pResDesc, cudaSurfaceObject_t surfObject )
- 返回表面对象的资源描述符。返回由 surfObject 指定的表面对象的资源描述符。
函数
- __host__ cudaError_t cudaCreateSurfaceObject ( cudaSurfaceObject_t* pSurfObject, const cudaResourceDesc* pResDesc )
-
创建表面对象。
参数
- pSurfObject
- - 要创建的表面对象
- pResDesc
- - 资源描述符
返回值
cudaSuccess, cudaErrorInvalidValue, cudaErrorInvalidChannelDescriptor, cudaErrorInvalidResourceHandle
描述
创建表面对象并在pSurfObject. pResDesc中返回它,描述要执行表面加载/存储的数据。cudaResourceDesc::resType 必须是 cudaResourceTypeArray,并且 cudaResourceDesc::res::array::array 必须设置为有效的 CUDA 数组句柄。
表面对象仅在计算能力为 3.0 或更高的设备上受支持。此外,表面对象是一个不透明的值,因此,应仅通过 CUDA API 调用访问。
注意-
请注意,如果此调用尝试初始化内部 CUDA RT 状态,则此函数也可能返回 cudaErrorInitializationError、cudaErrorInsufficientDriver 或 cudaErrorNoDevice。
-
请注意,如 cudaStreamAddCallback 所指定,不得从回调中调用任何 CUDA 函数。cudaErrorNotPermitted 可能会(但不保证)作为这种情况下的诊断信息返回。
另请参阅
- __host__ cudaError_t cudaDestroySurfaceObject ( cudaSurfaceObject_t surfObject )
-
销毁表面对象。
参数
- surfObject
- - 要销毁的表面对象
描述
销毁由surfObject.
注意-
请注意,如果此调用尝试初始化内部 CUDA RT 状态,则此函数也可能返回 cudaErrorInitializationError、cudaErrorInsufficientDriver 或 cudaErrorNoDevice。
-
请注意,如 cudaStreamAddCallback 所指定,不得从回调中调用任何 CUDA 函数。cudaErrorNotPermitted 可能会(但不保证)作为这种情况下的诊断信息返回。
-
指定的表面对象。在此调用之后使用句柄是未定义的行为。
另请参阅
- __host__ cudaError_t cudaGetSurfaceObjectResourceDesc ( cudaResourceDesc* pResDesc, cudaSurfaceObject_t surfObject )
-
返回表面对象的资源描述符。返回由surfObject.
参数
- pResDesc
- - 资源描述符
- surfObject
- - 表面对象
描述
注意-
请注意,如果此调用尝试初始化内部 CUDA RT 状态,则此函数也可能返回 cudaErrorInitializationError、cudaErrorInsufficientDriver 或 cudaErrorNoDevice。
-
请注意,如 cudaStreamAddCallback 所指定,不得从回调中调用任何 CUDA 函数。cudaErrorNotPermitted 可能会(但不保证)作为这种情况下的诊断信息返回。
另请参阅