自定义 Runtime

自定义 Runtime 为 PaddlePaddle 提供了一种插件式注册新硬件 Runtime 的方式。 DeviceManager 管理 PaddlePaddle 的硬件设备以及 Runtime/Driver 接口,向上提供统一的接口供框架调用硬件功能,向下暴露一系列接口用于注册自定义 Runtime ,通过 C API 形式保证二进制兼容性。这些接口可以在 device_ext.h 文件中查看,开发者只需要实现这些接口即可为 PaddlePaddle 添加自定义 Runtime 。

Device接口

接口名称

功能简介

initialize

初始化硬件后端。

finalize

去初始化硬件后端。

init_device

初始化指定硬件设备。

deinit_device

去初始化指定硬件设备。

set_device

设置当前使用的硬件设备。

get_device

获取当前使用的硬件设备。

synchronize_device

同步指定的硬件设备。

get_device_count

查询可用设备数量。

get_device_list

查询可用设备号。

get_compute_capability

查询设备算力。

get_runtime_version

查询运行时版本号。

get_driver_version

查询驱动版本号。

Memory接口

接口名称

功能简介

device_memory_allocate

分配设备内存。

device_memory_deallocate

释放设备内存。

host_memory_allocate

分配主机锁页内存。

host_memory_deallocate

释放主机锁页内存。

unified_memory_allocate

分配统一地址空间内存。

unified_memory_deallocate

释放统一地址空间内存。

memory_copy_h2d

主机到设备的同步内存拷贝。

memory_copy_d2h

设备到主机的同步内存拷贝。

memory_copy_d2d

设备内同步内存拷贝。

memory_copy_p2d

设备间同步内存拷贝。

async_memory_copy_h2d

主机到设备异步内存拷贝。

async_memory_copy_d2h

设备到主机异步内存拷贝。

async_memory_copy_d2d

设备内异步内存拷贝。

async_memory_copy_p2d

设备间异步内存拷贝。

device_memory_set

填充设备内存。

device_memory_stats

设备内存使用统计。

device_min_chunk_size

查询设备内存最小块大小。

device_max_chunk_size

查询设备内存最大块大小。

device_max_alloc_size

查询设备最大可分配内存大小。

device_extra_padding_size

查询设备内存额外填充大小。

device_init_alloc_size

查询设备初始化分配内存大小。

device_realloc_size

查询设备重分配内存大小。

Stream接口

接口名称

功能简介

create_stream

创建一个stream对象。

destroy_stream

销毁一个stream对象。

query_stream

查询stream上任务是否完成。

synchronize_stream

同步stream,等待stream上所有任务完成。

stream_add_callback

添加一个主机回调到stream上。

stream_wait_event

等待stream上的一个event完成。

Event接口

接口名称

功能简介

create_event

创建一个event对象。

destroy_event

销毁一个event对象。

record_event

在stream上记录event。

query_event

查询event是否完成。

synchronize_event

同步event,等待event完成。