自定义 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 完成。

集合通讯接口

接口名称

功能简介

xccl_get_unique_id_size

获取 unique_id 对象的大小。

xccl_get_unique_id

获取 unique_id 对象。

xccl_comm_init_rank

初始化 communicator。

xccl_destroy_comm

销毁 communicator。

xccl_all_reduce

集合通讯 AllReduce 操作。

xccl_broadcast

集合通讯 Broadcast 操作。

xccl_reduce

集合通讯 Reduce 操作。

xccl_all_gather

集合通讯 AllGather 操作。

xccl_reduce_scatter

集合通讯 ReduceScatter 操作。

xccl_group_start

集合通讯 AllReduce 操作。

xccl_group_end

集合通讯 AllReduce 操作。

xccl_send

集合通讯 Send 操作。

xccl_recv

集合通讯 Recv 操作。

Profiler 接口

接口名称

功能简介

profiler_initialize

初始化硬件 Profiler

profiler_finalize

去初始化硬件 Profiler

profiler_prepare_tracing

Profiler 准备收集数据

profiler_start_tracing

Profiler 开始收集数据

profiler_stop_tracing

Profiler 停止收集数据

profiler_collect_trace_data

Profiler 数据转换