自定义 Runtime¶
自定义 Runtime 为 PaddlePaddle 提供了一种插件式注册新硬件 Runtime 的方式。 DeviceManager 管理 PaddlePaddle 的硬件设备以及 Runtime/Driver 接口,向上提供统一的接口供框架调用硬件功能,向下暴露一系列接口用于注册自定义 Runtime ,通过 C API 形式保证二进制兼容性。这些接口可以在 device_ext.h 文件中查看,开发者只需要实现这些接口即可为 PaddlePaddle 添加自定义 Runtime 。
数据类型 : 介绍自定义 Runtime 的数据类型定义。
Device接口 : 介绍Device接口的定义和功能。
Memory接口 : 介绍Memory接口的定义和功能。
Stream接口 : 介绍Stream接口的定义和功能。
Event接口 : 介绍Event接口的定义和功能。
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完成。 |