Memory 接口¶
device_memory_allocate 【required】¶
接口定义¶
C_Status (*device_memory_allocate)(const C_Device device, void** ptr, size_t size)
接口说明¶
分配设备内存。
device_memory_deallocate 【required】¶
接口定义¶
C_Status (*device_memory_deallocate)(const C_Device device, void* ptr, size_t size)
接口说明¶
释放设备内存。
host_memory_allocate 【optional】¶
接口定义¶
C_Status (*host_memory_allocate)(const C_Device device, void** ptr, size_t size)
接口说明¶
分配主机锁页内存。
host_memory_deallocate 【optional】¶
接口定义¶
C_Status (*host_memory_deallocate)(const C_Device device, void* ptr, size_t size)
接口说明¶
释放主机锁页内存。
unified_memory_allocate 【optional】¶
接口定义¶
C_Status (*unified_memory_allocate)(const C_Device device, void** ptr, size_t size)
接口说明¶
分配统一地址空间内存。
unified_memory_deallocate 【optional】¶
接口定义¶
C_Status (*unified_memory_deallocate)(const C_Device device, void** ptr, size_t size)
接口说明¶
释放统一地址空间内存。
memory_copy_h2d 【required】¶
接口定义¶
C_Status (*memory_copy_h2d)(const C_Device device, void* dst, const void* src, size_t size)
接口说明¶
主机到设备的同步内存拷贝。
memory_copy_d2h 【required】¶
接口定义¶
C_Status (*memory_copy_d2h)(const C_Device device, void* dst, const void* src, size_t size)
接口说明¶
设备到主机的同步内存拷贝。
memory_copy_d2d 【required】¶
接口定义¶
C_Status (*memory_copy_d2d)(const C_Device device, void* dst, const void* src, size_t size)
接口说明¶
设备内同步内存拷贝。
memory_copy_p2p 【optional】¶
接口定义¶
C_Status (*memory_copy_p2p)(const C_Device dst_device, const C_Device src_device, void* dst, const void* src, size_t size)
接口说明¶
设备间同步内存拷贝。
async_memory_copy_h2d 【optional】¶
接口定义¶
C_Status (*async_memory_copy_h2d)(const C_Device device, C_Stream stream, void* dst, const void* src, size_t size)
接口说明¶
主机到设备的异步内存拷贝,如果没有实现,PaddlePaddle 会用同步接口代替。
async_memory_copy_d2h 【optional】¶
接口定义¶
C_Status (*async_memory_copy_d2h)(const C_Device device, C_Stream stream, void* dst, const void* src, size_t size)
接口说明¶
设备到主机的异步内存拷贝,如果没有实现,PaddlePaddle 会用同步接口代替。
async_memory_copy_d2d 【optional】¶
接口定义¶
C_Status (*async_memory_copy_d2d)(const C_Device device, C_Stream stream, void* dst, const void* src, size_t size)
接口说明¶
设备内异步内存拷贝,如果没有实现,PaddlePaddle 会用同步接口代替。
async_memory_copy_p2p 【optional】¶
接口定义¶
C_Status (*async_memory_copy_p2p)(const C_Device dst_device, const C_Device src_device, C_Stream stream, void* dst, const void* src, size_t size)
接口说明¶
设备间异步内存拷贝,如果没有实现,PaddlePaddle 会用同步接口代替。
参数¶
dst_device - 目的设备。
src_device - 源设备。
stream - 使用的 stream。
dst - 目的设备内存地址。
src - 源设备内存地址。
size - 需要拷贝的内存大小(字节形式)。
device_memory_set 【optional】¶
接口定义¶
C_Status (*device_memory_set)(const C_Device device, void* ptr, unsigned char value, size_t size)
接口说明¶
使用 value 填充一块设备内存,如果没有实现,PaddlePaddle 会用 memory_copy_h2d 代替。
device_memory_stats 【required】¶
接口定义¶
C_Status (*device_memory_stats)(const C_Device device, size_t* total_memory, size_t* free_memory)
接口说明¶
设备内存使用统计。
device_min_chunk_size 【required】¶
接口定义¶
C_Status (*device_min_chunk_size)(C_Device device, size_t* size)
接口说明¶
获取设备内存的最小快大小(字节形式)。为避免频繁调用硬件 API 申请/释放内存, PaddlePaddle 会自行管理设备内存,申请内存时优先从 PaddlePaddle 管理的内存中分配。申请 size 大小的内存时,会分配 size + extra_padding_size 大小的内存,并按 min_chunk_size 对齐。
device_max_chunk_size 【optional】¶
接口定义¶
C_Status (*device_max_chunk_size)(C_Device device, size_t* size)
接口说明¶
PaddlePaddle 管理的设备内存一次最多分配该大小(字节形式),超过该大小时,将直接调用硬件 API 进行分配,如果没有实现,则大小等于 device_max_alloc_size。
device_max_alloc_size 【optional】¶
接口定义¶
C_Status (*device_max_alloc_size)(C_Device device, size_t* size)
接口说明¶
设备最多可分配的内存大小(字节形式),如果没有实现,则大小等于目前可用的内存。
device_extra_padding_size 【optional】¶
接口定义¶
C_Status (*device_extra_padding_size)(C_Device device, size_t* size)
接口说明¶
分配设备内存需要的额外填充字节,如果没有实现,则默认为 0。为避免频繁调用硬件 API 申请/释放内存, PaddlePaddle 会自行管理设备内存,申请内存时优先从 PaddlePaddle 管理的内存中分配。申请 size 大小的内存时,会分配 size + extra_padding_size 大小的内存,并按 min_chunk_size 对齐。