自定义 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 接口的定义和功能。
集合通讯接口 : 介绍集合通讯接口的定义和功能。
Profiler 接口 : 介绍 Profiler 接口的定义和功能。
Device 接口¶
接口名称 |
功能简介 |
必选 |
---|---|---|
initialize |
初始化硬件后端。 |
N |
finalize |
去初始化硬件后端。 |
N |
init_device |
初始化指定硬件设备。 |
N |
deinit_device |
去初始化指定硬件设备。 |
N |
set_device |
设置当前使用的硬件设备。 |
Y |
get_device |
获取当前使用的硬件设备。 |
Y |
synchronize_device |
同步指定的硬件设备。 |
Y |
get_device_count |
查询可用设备数量。 |
Y |
get_device_list |
查询可用设备号。 |
Y |
get_compute_capability |
查询设备算力。 |
Y |
get_runtime_version |
查询运行时版本号。 |
Y |
get_driver_version |
查询驱动版本号。 |
Y |
Memory 接口¶
接口名称 |
功能简介 |
必选 |
---|---|---|
device_memory_allocate |
分配设备内存。 |
Y |
device_memory_deallocate |
释放设备内存。 |
Y |
host_memory_allocate |
分配主机锁页内存。 |
N |
host_memory_deallocate |
释放主机锁页内存。 |
N |
unified_memory_allocate |
分配统一地址空间内存。 |
N |
unified_memory_deallocate |
释放统一地址空间内存。 |
N |
memory_copy_h2d |
主机到设备的同步内存拷贝。 |
N |
memory_copy_d2h |
设备到主机的同步内存拷贝。 |
N |
memory_copy_d2d |
设备内同步内存拷贝。 |
N |
memory_copy_p2d |
设备间同步内存拷贝。 |
N |
async_memory_copy_h2d |
主机到设备异步内存拷贝。 |
N |
async_memory_copy_d2h |
设备到主机异步内存拷贝。 |
N |
async_memory_copy_d2d |
设备内异步内存拷贝。 |
N |
async_memory_copy_p2d |
设备间异步内存拷贝。 |
N |
device_memory_set |
填充设备内存。 |
N |
device_memory_stats |
设备内存使用统计。 |
N |
device_min_chunk_size |
查询设备内存最小块大小。 |
N |
device_max_chunk_size |
查询设备内存最大块大小。 |
N |
device_max_alloc_size |
查询设备最大可分配内存大小。 |
N |
device_extra_padding_size |
查询设备内存额外填充大小。 |
N |
device_init_alloc_size |
查询设备初始化分配内存大小。 |
N |
device_realloc_size |
查询设备重分配内存大小。 |
N |
Stream 接口¶
接口名称 |
功能简介 |
必选 |
---|---|---|
create_stream |
创建一个 stream 对象。 |
N |
destroy_stream |
销毁一个 stream 对象。 |
N |
query_stream |
查询 stream 上任务是否完成。 |
N |
synchronize_stream |
同步 stream,等待 stream 上所有任务完成。 |
N |
stream_add_callback |
添加一个主机回调到 stream 上。 |
N |
stream_wait_event |
等待 stream 上的一个 event 完成。 |
N |
Event 接口¶
接口名称 |
功能简介 |
必选 |
---|---|---|
create_event |
创建一个 event 对象。 |
Y |
destroy_event |
销毁一个 event 对象。 |
Y |
record_event |
在 stream 上记录 event。 |
Y |
query_event |
查询 event 是否完成。 |
N |
synchronize_event |
同步 event,等待 event 完成。 |
Y |
集合通讯接口¶
接口名称 |
功能简介 |
必选 |
---|---|---|
xccl_get_unique_id_size |
获取 unique_id 对象的大小。 |
N |
xccl_get_unique_id |
获取 unique_id 对象。 |
N |
xccl_comm_init_rank |
初始化 communicator。 |
N |
xccl_destroy_comm |
销毁 communicator。 |
N |
xccl_all_reduce |
集合通讯 AllReduce 操作。 |
N |
xccl_broadcast |
集合通讯 Broadcast 操作。 |
N |
xccl_reduce |
集合通讯 Reduce 操作。 |
N |
xccl_all_gather |
集合通讯 AllGather 操作。 |
N |
xccl_reduce_scatter |
集合通讯 ReduceScatter 操作。 |
N |
xccl_group_start |
开始集合通迅操作聚合。 |
N |
xccl_group_end |
停止集合通迅操作聚合。 |
N |
xccl_send |
集合通讯 Send 操作。 |
N |
xccl_recv |
集合通讯 Recv 操作。 |
N |
Profiler 接口¶
接口名称 |
功能简介 |
必选 |
---|---|---|
profiler_initialize |
初始化硬件 Profiler |
N |
profiler_finalize |
去初始化硬件 Profiler |
N |
profiler_prepare_tracing |
Profiler 准备收集数据 |
N |
profiler_start_tracing |
Profiler 开始收集数据 |
N |
profiler_stop_tracing |
Profiler 停止收集数据 |
N |
profiler_collect_trace_data |
Profiler 数据转换 |
N |