6.12. 内存管理 [已弃用]
本节介绍 CUDA 运行时应用程序编程接口中已弃用的内存管理功能。
某些函数具有重载的 C++ API 模板版本,在 C++ API 例程 模块中单独记录。
函数
- __host__ cudaError_t cudaMemcpyArrayToArray ( cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t count, cudaMemcpyKind kind = cudaMemcpyDeviceToDevice )
- 在主机和设备之间复制数据。
- __host__ cudaError_t cudaMemcpyFromArray ( void* dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, cudaMemcpyKind kind )
- 在主机和设备之间复制数据。
- __host__ cudaError_t cudaMemcpyFromArrayAsync ( void* dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, cudaMemcpyKind kind, cudaStream_t stream = 0 )
- 在主机和设备之间复制数据。
- __host__ cudaError_t cudaMemcpyToArray ( cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t count, cudaMemcpyKind kind )
- 在主机和设备之间复制数据。
- __host__ cudaError_t cudaMemcpyToArrayAsync ( cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t count, cudaMemcpyKind kind, cudaStream_t stream = 0 )
- 在主机和设备之间复制数据。
函数
- __host__ cudaError_t cudaMemcpyArrayToArray ( cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t count, cudaMemcpyKind kind = cudaMemcpyDeviceToDevice )
-
在主机和设备之间复制数据。
参数
- dst
- - 目标内存地址
- wOffsetDst
- - 目标起始 X 偏移量(列,以字节为单位)
- hOffsetDst
- - 目标起始 Y 偏移量(行)
- src
- - 源内存地址
- wOffsetSrc
- - 源起始 X 偏移量(列,以字节为单位)
- hOffsetSrc
- - 源起始 Y 偏移量(行)
- count
- - 要复制的字节大小
- kind
- - 传输类型
已弃用
描述
复制count从 CUDA 数组开始的字节数src起始于hOffsetSrc行和wOffsetSrc从左上角开始到 CUDA 数组的字节数dst起始于hOffsetDst行和wOffsetDst从左上角开始的字节数,其中kind指定复制的方向,并且必须是 cudaMemcpyHostToHost、cudaMemcpyHostToDevice、cudaMemcpyDeviceToHost、cudaMemcpyDeviceToDevice 或 cudaMemcpyDefault 之一。建议传递 cudaMemcpyDefault,在这种情况下,传输类型从指针值推断。但是,只有在支持统一虚拟寻址的系统上才允许使用 cudaMemcpyDefault。注意-
请注意,此函数也可能返回来自先前异步启动的错误代码。
-
请注意,如果此调用尝试初始化内部 CUDA RT 状态,则此函数也可能返回 cudaErrorInitializationError、cudaErrorInsufficientDriver 或 cudaErrorNoDevice。
-
请注意,根据 cudaStreamAddCallback 的规定,不得从回调中调用任何 CUDA 函数。在这种情况下,可能会返回 cudaErrorNotPermitted 作为诊断,但不保证一定返回。
另请参阅
cudaMemcpy, cudaMemcpy2D, cudaMemcpyToArray, cudaMemcpy2DToArray, cudaMemcpyFromArray, cudaMemcpy2DFromArray, cudaMemcpy2DArrayToArray, cudaMemcpyToSymbol, cudaMemcpyFromSymbol, cudaMemcpyAsync, cudaMemcpy2DAsync, cudaMemcpyToArrayAsync, cudaMemcpy2DToArrayAsync, cudaMemcpyFromArrayAsync, cudaMemcpy2DFromArrayAsync, cudaMemcpyToSymbolAsync, cudaMemcpyFromSymbolAsync, cuMemcpyAtoA
- __host__ cudaError_t cudaMemcpyFromArray ( void* dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, cudaMemcpyKind kind )
-
在主机和设备之间复制数据。
参数
- dst
- - 目标内存地址
- src
- - 源内存地址
- wOffset
- - 源起始 X 偏移量(列,以字节为单位)
- hOffset
- - 源起始 Y 偏移量(行)
- count
- - 要复制的字节大小
- kind
- - 传输类型
已弃用
描述
复制count从 CUDA 数组开始的字节数src起始于hOffset行和wOffset从左上角开始到由 指向的内存区域的字节数dst,其中kind指定复制的方向,并且必须是 cudaMemcpyHostToHost、cudaMemcpyHostToDevice、cudaMemcpyDeviceToHost、cudaMemcpyDeviceToDevice 或 cudaMemcpyDefault 之一。建议传递 cudaMemcpyDefault,在这种情况下,传输类型从指针值推断。但是,只有在支持统一虚拟寻址的系统上才允许使用 cudaMemcpyDefault。注意-
请注意,此函数也可能返回来自先前异步启动的错误代码。
-
对于大多数用例,此函数表现出 同步 行为。
-
请注意,如果此调用尝试初始化内部 CUDA RT 状态,则此函数也可能返回 cudaErrorInitializationError、cudaErrorInsufficientDriver 或 cudaErrorNoDevice。
-
请注意,根据 cudaStreamAddCallback 的规定,不得从回调中调用任何 CUDA 函数。在这种情况下,可能会返回 cudaErrorNotPermitted 作为诊断,但不保证一定返回。
另请参阅
cudaMemcpy, cudaMemcpy2D, cudaMemcpyToArray, cudaMemcpy2DToArray, cudaMemcpy2DFromArray, cudaMemcpyArrayToArray, cudaMemcpy2DArrayToArray, cudaMemcpyToSymbol, cudaMemcpyFromSymbol, cudaMemcpyAsync, cudaMemcpy2DAsync, cudaMemcpyToArrayAsync, cudaMemcpy2DToArrayAsync, cudaMemcpyFromArrayAsync, cudaMemcpy2DFromArrayAsync, cudaMemcpyToSymbolAsync, cudaMemcpyFromSymbolAsync, cuMemcpyAtoH, cuMemcpyAtoD
- __host__ cudaError_t cudaMemcpyFromArrayAsync ( void* dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, cudaMemcpyKind kind, cudaStream_t stream = 0 )
-
在主机和设备之间复制数据。
参数
- dst
- - 目标内存地址
- src
- - 源内存地址
- wOffset
- - 源起始 X 偏移量(列,以字节为单位)
- hOffset
- - 源起始 Y 偏移量(行)
- count
- - 要复制的字节大小
- kind
- - 传输类型
- stream
- - 流标识符
已弃用
描述
复制count从 CUDA 数组开始的字节数src起始于hOffset行和wOffset从左上角开始到由 指向的内存区域的字节数dst,其中kind指定复制的方向,并且必须是 cudaMemcpyHostToHost、cudaMemcpyHostToDevice、cudaMemcpyDeviceToHost、cudaMemcpyDeviceToDevice 或 cudaMemcpyDefault 之一。建议传递 cudaMemcpyDefault,在这种情况下,传输类型从指针值推断。但是,只有在支持统一虚拟寻址的系统上才允许使用 cudaMemcpyDefault。cudaMemcpyFromArrayAsync() 相对于主机是异步的,因此调用可能会在复制完成之前返回。复制可以可选地与流关联,方法是传递非零stream参数。如果kind是 cudaMemcpyHostToDevice 或 cudaMemcpyDeviceToHost 且stream为非零值,则复制可能会与其他流中的操作重叠。
注意-
请注意,此函数也可能返回来自先前异步启动的错误代码。
-
对于大多数用例,此函数表现出 异步 行为。
-
此函数使用标准 默认流 语义。
-
请注意,如果此调用尝试初始化内部 CUDA RT 状态,则此函数也可能返回 cudaErrorInitializationError、cudaErrorInsufficientDriver 或 cudaErrorNoDevice。
-
请注意,根据 cudaStreamAddCallback 的规定,不得从回调中调用任何 CUDA 函数。在这种情况下,可能会返回 cudaErrorNotPermitted 作为诊断,但不保证一定返回。
另请参阅
cudaMemcpy, cudaMemcpy2D, cudaMemcpyToArray, cudaMemcpy2DToArray, cudaMemcpyFromArray, cudaMemcpy2DFromArray, cudaMemcpyArrayToArray, cudaMemcpy2DArrayToArray, cudaMemcpyToSymbol, cudaMemcpyFromSymbol, cudaMemcpyAsync, cudaMemcpy2DAsync, cudaMemcpyToArrayAsync, cudaMemcpy2DToArrayAsync, cudaMemcpy2DFromArrayAsync, cudaMemcpyToSymbolAsync, cudaMemcpyFromSymbolAsync, cuMemcpyAtoHAsync, cuMemcpy2DAsync
- __host__ cudaError_t cudaMemcpyToArray ( cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t count, cudaMemcpyKind kind )
-
在主机和设备之间复制数据。
参数
- dst
- - 目标内存地址
- wOffset
- - 目标起始 X 偏移量(列,以字节为单位)
- hOffset
- - 目标起始 Y 偏移量(行)
- src
- - 源内存地址
- count
- - 要复制的字节大小
- kind
- - 传输类型
已弃用
描述
复制count从由 指向的内存区域开始的字节数src到 CUDA 数组dst起始于hOffset行和wOffset从左上角开始的字节数,其中kind指定复制的方向,并且必须是 cudaMemcpyHostToHost、cudaMemcpyHostToDevice、cudaMemcpyDeviceToHost、cudaMemcpyDeviceToDevice 或 cudaMemcpyDefault 之一。建议传递 cudaMemcpyDefault,在这种情况下,传输类型从指针值推断。但是,只有在支持统一虚拟寻址的系统上才允许使用 cudaMemcpyDefault。注意-
请注意,此函数也可能返回来自先前异步启动的错误代码。
-
对于大多数用例,此函数表现出 同步 行为。
-
请注意,如果此调用尝试初始化内部 CUDA RT 状态,则此函数也可能返回 cudaErrorInitializationError、cudaErrorInsufficientDriver 或 cudaErrorNoDevice。
-
请注意,根据 cudaStreamAddCallback 的规定,不得从回调中调用任何 CUDA 函数。在这种情况下,可能会返回 cudaErrorNotPermitted 作为诊断,但不保证一定返回。
另请参阅
cudaMemcpy, cudaMemcpy2D, cudaMemcpy2DToArray, cudaMemcpyFromArray, cudaMemcpy2DFromArray, cudaMemcpyArrayToArray, cudaMemcpy2DArrayToArray, cudaMemcpyToSymbol, cudaMemcpyFromSymbol, cudaMemcpyAsync, cudaMemcpy2DAsync, cudaMemcpyToArrayAsync, cudaMemcpy2DToArrayAsync, cudaMemcpyFromArrayAsync, cudaMemcpy2DFromArrayAsync, cudaMemcpyToSymbolAsync, cudaMemcpyFromSymbolAsync, cuMemcpyHtoA, cuMemcpyDtoA
- __host__ cudaError_t cudaMemcpyToArrayAsync ( cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t count, cudaMemcpyKind kind, cudaStream_t stream = 0 )
-
在主机和设备之间复制数据。
参数
- dst
- - 目标内存地址
- wOffset
- - 目标起始 X 偏移量(列,以字节为单位)
- hOffset
- - 目标起始 Y 偏移量(行)
- src
- - 源内存地址
- count
- - 要复制的字节大小
- kind
- - 传输类型
- stream
- - 流标识符
已弃用
描述
复制count从由 指向的内存区域开始的字节数src到 CUDA 数组dst起始于hOffset行和wOffset从左上角开始的字节数,其中kind指定复制的方向,并且必须是 cudaMemcpyHostToHost、cudaMemcpyHostToDevice、cudaMemcpyDeviceToHost、cudaMemcpyDeviceToDevice 或 cudaMemcpyDefault 之一。建议传递 cudaMemcpyDefault,在这种情况下,传输类型从指针值推断。但是,只有在支持统一虚拟寻址的系统上才允许使用 cudaMemcpyDefault。cudaMemcpyToArrayAsync() 相对于主机是异步的,因此调用可能会在复制完成之前返回。复制可以可选地与流关联,方法是传递非零stream参数。如果kind是 cudaMemcpyHostToDevice 或 cudaMemcpyDeviceToHost 且stream为非零值,则复制可能会与其他流中的操作重叠。
注意-
请注意,此函数也可能返回来自先前异步启动的错误代码。
-
对于大多数用例,此函数表现出 异步 行为。
-
此函数使用标准 默认流 语义。
-
请注意,如果此调用尝试初始化内部 CUDA RT 状态,则此函数也可能返回 cudaErrorInitializationError、cudaErrorInsufficientDriver 或 cudaErrorNoDevice。
-
请注意,根据 cudaStreamAddCallback 的规定,不得从回调中调用任何 CUDA 函数。在这种情况下,可能会返回 cudaErrorNotPermitted 作为诊断,但不保证一定返回。
另请参阅
cudaMemcpy, cudaMemcpy2D, cudaMemcpyToArray, cudaMemcpy2DToArray, cudaMemcpyFromArray, cudaMemcpy2DFromArray, cudaMemcpyArrayToArray, cudaMemcpy2DArrayToArray, cudaMemcpyToSymbol, cudaMemcpyFromSymbol, cudaMemcpyAsync, cudaMemcpy2DAsync, cudaMemcpy2DToArrayAsync, cudaMemcpyFromArrayAsync, cudaMemcpy2DFromArrayAsync, cudaMemcpyToSymbolAsync, cudaMemcpyFromSymbolAsync, cuMemcpyHtoAAsync, cuMemcpy2DAsync