注:如下接口对外封装了相同含义的Python接口,详细信息可参考
src/smem/csrc/python_wrapper/memfabric_hybrid/pymf_hybrid.cpp。
C接口
安装完成 run 包并 source 安装路径下的 set_env.sh 后,会添加 memfabric_hybrid 安装路径的环境变量 MEMFABRIC_HYBRID_HOME_PATH
使用 memfabric_hybrid 相关接口时,需要 include 相关头文件(在 ${MEMFABRIC_HYBRID_HOME_PATH}/${arch}-${os}/include/smem/host路径下),并且在链接时需要添加libmf_smem.so(在 ${MEMFABRIC_HYBRID_HOME_PATH}/${arch}-${os}/lib64 路径下) 依赖
可以通过 MEMFABRIC_HYBRID_HOME_PATH 环境变量指定头文件和 lib 库依赖路径,从而完成代码构建
公共接口列表
1. 服务初始化/退出
smem_init
初始化运行环境
int32_t smem_init(uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| flags | 预留参数 |
| 返回值 | 成功返回0,其他为错误码 |
smem_uninit
退出运行环境
void smem_uninit();
2. 创建config store对象
smem_create_config_store
int32_t smem_create_config_store(const char *storeUrl, uint64_t flags);
| 参数/返回值 | 含义 |
|---|---|
| storeUrl | 业务面地址,格式支持 tcp://ip:port、etcd://ip:port、etcd://ip:port#instanceId(etcd 多集群隔离);如 tcp://[::1]:5124、tcp://127.0.0.1:5124、etcd://127.0.0.1:5124#clusterA |
| flags | 创建标记位,可选标记 SMEM_STORE_SKIP_RECOVER |
| 返回值 | 成功返回0,其他为错误码 |
3. 日志设置
smem_set_extern_logger
设置自定义日志函数
int32_t smem_set_extern_logger(void (*func)(int level, const char *msg));
| 参数/返回值 | 含义 |
|---|---|
| func | 函数指针 |
| level | 日志级别,0-debug 1-info 2-warn 3-error |
| msg | 日志内容 |
| 返回值 | 成功返回0,其他为错误码 |
smem_set_log_level
设置日志打印级别
int32_t smem_set_log_level(int level);
| 参数/返回值 | 含义 |
|---|---|
| level | 日志级别,0-debug 1-info 2-warn 3-error |
| 返回值 | 成功返回0,其他为错误码 |
4. 安全证书设置
smem_set_conf_store_tls
安装证书设置
int32_t smem_set_conf_store_tls(bool enable, const char *tls_info, const uint32_t tls_info_len);
| 参数/返回值 | 含义 |
|---|---|
| enable | whether to enable tls(当前为预留接口,功能尚未实现) |
| tls_info | the format describle in memfabric SECURITYNOTE.md, if disabled tls_info won't be use |
| tls_info_len | length of tls_info, if disabled tls_info_len won't be use |
| 返回值 | 成功返回0,其他为错误码 |
smem_set_config_store_tls_key
设置私钥、口令和解密的函数,在开启Tls时,需要调用该接口。
int32_t smem_set_config_store_tls_key(
const char *tls_pk,
const uint32_t tls_pk_len,
const char *tls_pk_pw,
const uint32_t tls_pk_pw_len,
const smem_decrypt_handler h
);
| 参数/返回值 | 含义 |
|---|---|
| tls_pk | 密钥内容 |
| tls_pk_len | 密钥内容长度 |
| tls_pk_pw | 口令内容 |
| tls_pk_pw_len | 口令内容长度 |
| h | 密钥解密函数 |
| 返回值 | 成功返回0,其他为错误码 |
typedef int (*smem_decrypt_handler)(const char *cipherText, size_t cipherTextLen, char *plainText, size_t &plainTextLen);
| 参数/返回值 | 含义 |
|---|---|
| cipherText | 密文(加密的用来加密私钥的密码) |
| cipherTextLen | 密文的长度 |
| plainText | 解密后的密码(出参) |
| plainTextLen | 解密后的密码长度(出参) |
| 返回值 | 错误信息 |
5. 错误信息获取/清理
smem_get_last_err_msg
获取最后一条错误信息
const char *smem_get_last_err_msg();
| 参数/返回值 | 含义 |
|---|---|
| 返回值 | 错误信息 |
smem_get_and_clear_last_err_msg
获取最后一条错误信息并清空所有错误信息
const char *smem_get_and_clear_last_err_msg();
| 参数/返回值 | 含义 |
|---|---|
| 返回值 | 错误信息 |
6. 错误码定义
| 错误码宏 | 值 | 说明 |
|---|---|---|
SMEM_OK |
0 | 成功 |
SMEM_ERROR |
-1 | 通用错误 |
SMEM_INVALID_PARAM |
-2000 | 无效参数 |
SMEM_MALLOC_FAILED |
-2001 | 内存分配失败 |
SMEM_NO_RESOURCES |
-2002 | 资源不足 |
SMEM_NOT_STARTED |
-2003 | 服务未启动 |
SMEM_TIMEOUT |
-2004 | 操作超时 |
SMEM_REPEAT_INVOKE |
-2005 | 重复调用 |
SMEM_DUPLICATED |
-2006 | 重复创建 |
SMEM_NOT_EXIST |
-2007 | 对象不存在 |
SMEM_NOT_INIT |
-2008 | 未初始化 |
SMEM_RES_IN_USE |
-2009 | 资源被占用 |
SMEM_PARTIAL_FAILED |
-2012 | 部分失败(批量操作) |
SMEM_NOT_CONNECTED |
-2014 | 连接断开 |
Store Backend 错误码(从 smem_def.h):
| 错误码宏 | 值 | 说明 |
|---|---|---|
SMEM_STORE_BACKEND_CODE_OK |
0 | 后端操作成功 |
SMEM_STORE_BACKEND_CODE_INTERNAL |
-3000 | 后端内部错误 |
SMEM_STORE_BACKEND_CODE_INVAL |
-3001 | 后端参数无效 |
SMEM_STORE_BACKEND_CODE_BUFEX |
-3002 | 后端缓冲区不足 |
SMEM_STORE_BACKEND_CODE_PERM |
-3003 | 后端权限不足 |
SMEM_STORE_BACKEND_CODE_NORES |
-3004 | 后端资源不足 |
SMEM_STORE_BACKEND_CODE_NOENT |
-3005 | 后端条目不存在 |
SMEM_STORE_BACKEND_CODE_LOCKED |
-3006 | 后端锁冲突 |
SMEM_STORE_BACKEND_CODE_UNLOCKED |
-3007 | 后端未锁定 |
注:以上错误码定义位于
smem.h(通用错误码)和smem_def.h(Store Backend 错误码)头文件中。
BM接口列表
1. BM初始化/退出
smem_bm_config_init
BM配置初始化
int32_t smem_bm_config_init(smem_bm_config_t *config);
| 参数/返回值 | 含义 |
|---|---|
| config | 初始化参数 |
| 返回值 | 成功返回0,其他为错误码 |
smem_bm_init
初始化BM
int32_t smem_bm_init(const char *storeURL, uint32_t worldSize, uint16_t deviceId, const smem_bm_config_t *config);
| 参数/返回值 | 含义 |
|---|---|
| storeURL | config store地址,格式支持 tcp://ip:port、etcd://ip:port、etcd://ip:port#instanceId(etcd 多集群隔离) |
| worldSize | 参与初始化BM的rank数量,最大支持1024 |
| deviceId | 当前rank的deviceId |
| config | BM初始化配置 |
| 返回值 | 成功返回0,其他为错误码 |
smem_bm_config_t 结构体参数说明:
| 参数 | 含义 |
|---|---|
| initTimeout | smem_bm_init 函数超时时间,默认120秒(最小1秒,最大SMEM_BM_TIMEOUT_MAX) |
| createTimeout | smem_bm_create 函数超时时间,默认120秒(最小1秒,最大SMEM_BM_TIMEOUT_MAX) |
| controlOperationTimeout | 控制操作超时时间,默认120秒(最小1秒,最大SMEM_BM_TIMEOUT_MAX) |
| startConfigStoreServer | 是否启动config store,默认true |
| startConfigStoreOnly | 仅启动config store |
| dynamicWorldSize | 成员能否动态加入 |
| unifiedAddressSpace | 全局统一地址空间,默认true,当前仅支持true |
| autoRanking | 自动分配rank ID,默认false |
| rankId | 用户指定的rank ID,仅当autoRanking为false时有效 |
| flags | 其他标志,默认0 |
| hcomUrl | hcom地址 |
| hcomTlsConfig | hcom的TLS配置 |
| storeTlsConfig | store的TLS配置 |
smem_bm_uninit
BM退出
void smem_bm_uninit(uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| flags | 预留参数 |
2. 创建/销毁BM
smem_bm_create
创建BM
smem_bm_t smem_bm_create(uint32_t id, uint32_t memberSize,
smem_bm_data_op_type_t dataOpType, uint64_t localDRAMSize,
uint64_t localHBMSize, uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| id | BM id,用户自定义,BM之间取不同值 |
| memberSize | 创建BM的rank数量(保留参数,后续迭代使用) |
| dataOpType | 数据操作类型,取值内容参考smem_bm_data_op_type定义 |
| localDRAMSize | 创建BM当前rank贡献的DRAM空间大小,单位字节,范围为(0, 2TB] |
| localHBMSize | 创建BM当前rank贡献的HBM空间大小,单位字节,范围为(0, 64GB] |
| flags | 创建标记位,预留 |
| 返回值 | 成功返回BM handle,失败返回空指针 |
smem_bm_create2
创建BM
smem_bm_t smem_bm_create2(uint32_t id, const smem_bm_create_option_t *option);
| 参数/返回值 | 含义 |
|---|---|
| id | BM id,用户自定义,BM之间取不同值 |
| option | 创建BM的配置参数 |
| 返回值 | 成功返回BM handle,失败返回空指针 |
smem_bm_create_option_t 结构体参数说明:
| 参数 | 含义 |
|---|---|
| maxDramSize | 所有rank贡献给BM对象的最大DRAM内存大小 |
| maxHbmSize | 所有rank贡献给BM对象的最大HBM内存大小 |
| localDRAMSize | 当前rank贡献给BM对象的DRAM内存大小,单位字节,范围为(0, 2TB] |
| localHBMSize | 当前rank贡献给BM对象的HBM内存大小,单位字节,范围为(0, 64GB] |
| dataOpType | 数据操作类型,如果tag或tagOpInfo为空,则使用此类型 |
| enable56BitsGva | 当总地址空间超过32TB时启用56位GVA |
| flags | 可选标志,默认0 |
| tag | BM的标识tag,例如:tag_1 |
| tagOpInfo | tag间的操作类型,例如:tag1:DEVICE_SDMA:tag1,tag1:DEVICE_RDMA:tag2 |
| dramShmFd | DRAM共享内存文件描述符 |
smem_bm_destroy
销毁BM
void smem_bm_destroy(smem_bm_t handle);
| 参数/返回值 | 含义 |
|---|---|
| handle | 待销毁BM handle |
3.加入/退出BM
smem_bm_join
加入BM
int32_t smem_bm_join(smem_bm_t handle, uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| handle | 待加入BM handle |
| flags | 预留参数 |
| 返回值 | 成功返回0,否则返回错误码 |
smem_bm_leave
退出BM
int32_t smem_bm_leave(smem_bm_t handle, uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| handle | 待退出BM handle |
| flags | 预留参数 |
| 返回值 | 成功返回0,否则返回错误码 |
smem_bm_extend_local_mem
在本地 rank 上动态扩增內存。待增加内存必须由 smem_bm_create() 创建
int32_t smem_bm_extend_local_mem(smem_bm_t handle, smem_bm_mem_type_t memType, uint64_t size);
| 参数/返回值 | 含义 |
|---|---|
| handle | 待扩展内存 handle |
| memType | 内存类型,支持 SMEM_MEM_TYPE_DEVICE、SMEM_MEM_TYPE_HOST |
| size | 当前rank扩展内存的大小 |
| 返回值 | 成功返回0,否则返回错误码 |
4.拷贝/批量拷贝数据对象
smem_bm_copy
拷贝数据对象
int32_t smem_bm_copy(smem_bm_t handle, smem_copy_params_t *params,
smem_bm_copy_type_t t, uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| handle | BM handle |
| params | 拷贝数据的相关参数 |
| t | 数据拷贝类型,L2G/G2L/G2H/H2G,L=local HBM memory,G=global space,H=Host memory |
| flags | ASYNC_COPY_FLAG:异步执行;COPY_EXTEND_FLAG:A3超节点内使用MTE执行拷贝 |
| 返回值 | 成功返回0,失败返回错误码 |
smem_bm_copy_batch
批量拷贝数据对象
int32_t smem_bm_copy_batch(smem_bm_t handle, smem_batch_copy_params_t *params, smem_bm_copy_type_t t, uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| handle | BM handle |
| params | 拷贝数据的相关参数 |
| t | 数据拷贝类型,L2G/G2L/G2H/H2G,L=local HBM memory,G=global space,H=Host memory |
| flags | ASYNC_COPY_FLAG:异步执行;COPY_EXTEND_FLAG:A3超节点内使用MTE执行拷贝 |
| 返回值 | 成功返回0,失败返回错误码 |
smem_bm_copy_batch_partial_succeed
批量拷贝数据对象,批量中部分失败时,可以通过出参判断具体哪个成功哪个失败
int32_t smem_bm_copy_batch_partial_succeed(
smem_bm_t handle,
smem_batch_copy_params_t *params,
smem_bm_copy_type_t t,
uint32_t flags, smem_batch_copy_result_t *result
);
| 参数/返回值 | 含义 |
|---|---|
| handle | BM handle |
| params | 拷贝数据的相关参数 |
| t | 数据拷贝类型,L2G/G2L/G2H/H2G,L=local HBM memory,G=global space,H=Host memory |
| flags | ASYNC_COPY_FLAG:异步执行;COPY_EXTEND_FLAG:A3超节点内使用MTE执行拷贝 |
| result | 出参:当部分失败时,此出参会指定具体哪个成功,哪个失败 |
| 返回值 | 成功返回0,部分失败返回SMEM_PARTIAL_FAILED(-2012),其它失败返回对应错误码 |
5.查询接口
smem_bm_get_rank_id
获取当前rank的id
uint32_t smem_bm_get_rank_id(void);
| 参数/返回值 | 含义 |
|---|---|
| 返回值 | 成功返回当前rank id,失败返回u32最大值 |
smem_bm_get_local_mem_size_by_mem_type
获取创建BM本地贡献的空间大小
uint64_t smem_bm_get_local_mem_size_by_mem_type(smem_bm_t handle, smem_bm_mem_type_t memType);
| 参数/返回值 | 含义 |
|---|---|
| handle | BM handle |
| memType | Bmemory type, device or host |
| 返回值 | 本地贡献空间大小,单位byte |
smem_bm_ptr_by_mem_type
获取rank id对应在gva上的地址位置
void *smem_bm_ptr_by_mem_type(smem_bm_t handle, smem_bm_mem_type_t memType, uint16_t peerRankId);
| 参数/返回值 | 含义 |
|---|---|
| handle | BM handle |
| memType | memory type, SMEM_MEM_TYPE_DEVICE or SMEM_MEM_TYPE_HOST |
| peerRankId | rank id |
| 返回值 | rank地址对应空间位置指针 |
smem_bm_get_rank_id_by_gva
根据全局地址获取rankId
uint32_t smem_bm_get_rank_id_by_gva(smem_bm_t handle, void *gva);
| 参数/返回值 | 含义 |
|---|---|
| handle | BM handle |
| gva | addr |
| 返回值 | rank id if successful, UINT32_MAX is returned if failed |
6. 用户内存register/unregister
smem_bm_register_user_mem
注册一段本地的用户内存
int32_t smem_bm_register_user_mem(smem_bm_t handle, uint64_t addr, uint64_t size);
| 参数/返回值 | 含义 |
|---|---|
| handle | BM handle |
| addr | 注册地址的起始地址指针 |
| size | 注册地址的大小 |
| 返回值 | 成功返回0,失败返回错误码 |
注意: device_rdma场景下注册的DRAM buffer需要保证首地址4K对齐,否则无法注册成功
smem_bm_unregister_user_mem
对一段注册过的本地用户内存执行反注册
int32_t smem_bm_unregister_user_mem(smem_bm_t handle, uint64_t addr);
| 参数/返回值 | 含义 |
|---|---|
| handle | BM handle |
| addr | 注销地址的起始地址指针 |
| 返回值 | 成功返回0,失败返回错误码 |
7.等待异步操作完成
smem_bm_wait
等待异步操作完成
int32_t smem_bm_wait(smem_bm_t handle);
| 参数/返回值 | 含义 |
|---|---|
| handle | BM handle |
| 返回值 | 成功返回0,失败返回错误码 |
SHM接口列表
1.SHM初始化/退出
smem_shm_config_init
SHM配置初始化
int32_t smem_shm_config_init(smem_shm_config_t *config);
| 参数/返回值 | 含义 |
|---|---|
| config | 初始化配置 |
| 返回值 | 成功返回0,失败返回错误码 |
smem_shm_init
SHM初始化
int32_t smem_shm_init(const char *configStoreIpPort, uint32_t worldSize, uint32_t rankId,
uint16_t deviceId, smem_shm_config_t *config);
| 参数/返回值 | 含义 |
|---|---|
| configStoreIpPort | config store地址,格式支持 tcp://ip:port、tcp6://[ip]:port、etcd://ip:port、etcd://ip:port#instanceId(etcd 多集群隔离) |
| worldSize | 参与SHM初始化rank数量,最大支持1024 |
| rankId | 当前rank id |
| deviceId | 当前rank的device id |
| config | 初始化SHM配置 |
| 返回值 | 成功返回0,失败返回错误码 |
smem_shm_uninit
SHM退出
void smem_shm_uninit(uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| flags | 预留参数 |
2. 创建/销毁SHM
smem_shm_create
创建SHM
smem_shm_t smem_shm_create(uint32_t id, uint32_t rankSize, uint32_t rankId, uint64_t localSize,
smem_shm_data_op_type dataOpType, uint32_t flags, void **gva);
| 参数/返回值 | 含义 |
|---|---|
| id | SHM对象id,用户指定,与其他SHM对象不重复,范围为[0, 63] |
| rankSize | 参与创建SHM的rank数量,最大支持1024 |
| rankId | 当前rank id |
| localSize | 每个rank贡献到创建SHM对象的对称空间大小,单位字节,范围为[0, 64GB](对应头文件参数名 localSize) |
| dataOpType | 数据操作类型,参考smem_shm_data_op_type类型定义 |
| flags | 预留参数 |
| gva | 出参,gva空间地址 |
| 返回值 | SHM对象handle |
smem_shm_destroy
销毁SHM
int32_t smem_shm_destroy(smem_shm_t handle, uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| handle | SHM对象handle |
| flags | 预留参数 |
| 返回值 | 成功返回0,失败返回错误码 |
3. 查询接口
smem_shm_query_support_data_operation
查询支持的数据操作
uint32_t smem_shm_query_support_data_operation(void);
| 参数/返回值 | 含义 |
|---|---|
| 返回值 | 参考smem_shm_data_op_type类型定义 |
smem_shm_get_global_rank
获取rank id
uint32_t smem_shm_get_global_rank(smem_shm_t handle);
| 参数/返回值 | 含义 |
|---|---|
| handle | SHM对象handle |
| 返回值 | 在SHM里的rank id |
smem_shm_get_global_rank_size
获取rank数量
uint32_t smem_shm_get_global_rank_size(smem_shm_t handle);
| 参数/返回值 | 含义 |
|---|---|
| handle | SHM对象handle |
| 返回值 | 在SHM里的rank个数 |
4. 设置用户context
smem_shm_set_extra_context
设置用户context
int32_t smem_shm_set_extra_context(smem_shm_t handle, const void *context, uint32_t size);
| 参数/返回值 | 含义 |
|---|---|
| handle | SHM对象handle |
| context | 用户context指针 |
| size | 用户context大小,最大64K,单位字节 |
| 返回值 | 成功返回0,失败返回错误码 |
5. 在SHM对象执行barrier/allgather
smem_shm_control_barrier
在SHM对象执行barrier
int32_t smem_shm_control_barrier(smem_shm_t handle);
| 参数/返回值 | 含义 |
|---|---|
| handle | SHM对象handle |
| 返回值 | 成功返回0,失败返回错误码 |
smem_shm_control_allgather
在SHM对象执行allgather
int32_t smem_shm_control_allgather(smem_shm_t handle, const char *sendBuf, uint32_t sendSize,
char *recvBuf, uint32_t recvSize);
| 参数/返回值 | 含义 |
|---|---|
| handle | SHM对象handle |
| sendBuf | 发送数据buffer |
| sendSize | 发送数据大小,单位字节 |
| recvBuf | 接收数据buffer |
| recvSize | 接收数据大小,单位字节 |
| 返回值 | 成功返回0,失败返回错误码 |
6. rank连通检查
smem_shm_topology_can_reach
rank连通检查
int32_t smem_shm_topology_can_reach(smem_shm_t handle, uint32_t remoteRank, uint32_t *reachInfo);
| 参数/返回值 | 含义 |
|---|---|
| handle | SHM对象handle |
| remoteRank | 待检查rank id |
| reachInfo | 连通信息类型,参考smem_shm_data_op_type定义 |
| 返回值 | 成功返回0,失败返回错误码 |
7. 注册退出回调函数
smem_shm_register_exit
注册退出回调函数
int32_t smem_shm_register_exit(smem_shm_t handle, void (*exit)(int));
| 参数/返回值 | 含义 |
|---|---|
| handle | SHM对象handle |
| exit | 退出函数 |
| 返回值 | 成功返回0,失败返回错误码 |
8. PE主动退出接口
smem_shm_global_exit
PE主动退出接口
void smem_shm_global_exit(smem_shm_t handle, int status);
| 参数/返回值 | 含义 |
|---|---|
| handle | SHM对象handle |
| status | 退出状态 |
注:如下接口对外封装了相同含义的Python接口,详细信息可参考
src/mooncake_adapter/csrc/transfer/pytransfer.cpp。
TRANS接口列表
1. TRANS初始化/退出
smem_trans_config_init
TRANS配置初始化
int32_t smem_trans_config_init(smem_trans_config_t *config);
| 参数/返回值 | 含义 |
|---|---|
| config | 初始化参数 |
| 返回值 | 成功返回0,其他为错误码 |
smem_trans_init
TRANS初始化
int32_t smem_trans_init(const smem_trans_config_t *config);
| 参数/返回值 | 含义 |
|---|---|
| config | TRANS初始化配置 |
| 返回值 | 成功返回0,失败返回错误码 |
smem_trans_uninit
TRANS退出
void smem_trans_uninit(uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| flags | 预留参数 |
2. 创建/销毁TRANS实例
smem_trans_create
创建TRANS实例
smem_trans_t smem_trans_create(const char *storeUrl, const char *uniqueId, const smem_trans_config_t *config);
| 参数/返回值 | 含义 |
|---|---|
| storeURL | config store地址,格式支持 tcp://ip:port、etcd://ip:port、etcd://ip:port#instanceId(etcd 多集群隔离) |
| uniqueId | 该TRANS实例的唯一标识,格式ip:port |
| config | TRANS初始化配置 |
| 返回值 | 成功返回 TRANS 实例句柄,失败返回 NULL |
smem_trans_destroy
销毁TRANS实例
void smem_trans_destroy(smem_trans_t handle, uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| handle | TRANS对象handle |
| flags | 预留参数 |
3. 注册/批量注册/注销内存
smem_trans_register_mem
注册内存
int32_t smem_trans_register_mem(smem_trans_t handle, void *address, size_t capacity, uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| handle | TRANS对象handle |
| address | 注册地址的起始地址指针 |
| capacity | 注册地址大小 |
| flags | 预留参数 |
| 返回值 | 成功返回0,其他为错误码 |
smem_trans_batch_register_mem
批量注册内存
int32_t smem_trans_batch_register_mem(smem_trans_t handle, void *addresses[], size_t capacities[], uint32_t count,
uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| handle | TRANS对象handle |
| addresses[] | 批量注册地址的起始地址指针列表 |
| capacities[] | 批量注册地址大小列表 |
| count | 批量注册地址数量 |
| flags | 预留参数 |
| 返回值 | 成功返回0,其他为错误码 |
smem_trans_deregister_mem
注销内存
int32_t smem_trans_deregister_mem(smem_trans_t handle, void *address);
| 参数/返回值 | 含义 |
|---|---|
| handle | TRANS对象handle |
| address | 注销地址的起始地址指针 |
| 返回值 | 成功返回0,其他为错误码 |
4. 同步读/写
smem_trans_read
同步读接口
int32_t smem_trans_read(smem_trans_t handle, void *localAddr, const char *remoteUniqueId,
const void *remoteAddr, size_t dataSize, uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| handle | TRANS对象handle |
| localAddr | 本地用于接收读取数据的起始地址指针 |
| remoteUniqueId | 远端TRANS实例对应的标识 |
| remoteAddr | 远端待读取数据的起始地址指针 |
| dataSize | 传输数据大小,单位字节 |
| flags | 标记位 |
| 返回值 | 成功返回0,其他为错误码 |
smem_trans_batch_read
批量同步读接口
int32_t smem_trans_batch_read(smem_trans_t handle, void *localAddrs[], const char *remoteUniqueId,
const void *remoteAddrs[], size_t dataSizes[], uint32_t batchSize, uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| handle | TRANS对象handle |
| localAddrs[] | 本地用于接收读取数据的起始地址指针列表 |
| remoteUniqueId | 远端TRANS实例对应的标识 |
| remoteAddrs[] | 批量远端待读取数据的起始地址指针列表 |
| dataSizes[] | 批量传输数据大小列表,单位字节 |
| batchSize | 批量读操作的任务数 |
| flags | 标记位 |
| 返回值 | 成功返回0,其他为错误码 |
smem_trans_write
同步写接口
int32_t smem_trans_write(smem_trans_t handle, const void *localAddr, const char *remoteUniqueId,
void *remoteAddr, size_t dataSize, uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| handle | TRANS对象handle |
| localAddr | 本地待写数据起始地址指针 |
| remoteUniqueId | 远端TRANS实例对应的标识 |
| remoteAddr | 远端存储数据起始地址指针 |
| dataSize | 传输数据大小,单位字节 |
| flags | 标记位 |
| 返回值 | 成功返回0,其他为错误码 |
smem_trans_batch_write
批量同步写接口
int32_t smem_trans_batch_write(smem_trans_t handle, const void *localAddrs[], const char *remoteUniqueId,
void *remoteAddrs[], size_t dataSizes[], uint32_t batchSize, uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| handle | TRANS对象handle |
| localAddrs[] | 批量本地待写数据起始地址指针列表 |
| remoteUniqueId | 远端TRANS实例对应的标识 |
| remoteAddrs[] | 批量远端存储数据起始地址指针列表 |
| dataSizes[] | 批量传输数据大小列表,单位字节 |
| batchSize | 批量写操作的任务数 |
| flags | 标记位 |
| 返回值 | 成功返回0,其他为错误码 |
5. 异步读/写提交
smem_trans_read_submit
异步读提交接口
int32_t smem_trans_read_submit(smem_trans_t handle, void *localAddr, const char *remoteUniqueId,
const void *remoteAddr, size_t dataSize, void *stream, uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| handle | TRANS对象handle |
| localAddr | 本地用于接收读取数据的起始地址指针 |
| remoteUniqueId | 远端TRANS实例对应的标识 |
| remoteAddr | 远端待读取数据的起始地址指针 |
| dataSize | 传输数据大小,单位字节 |
| stream | 需要将任务提交到的aclrtStream |
| flags | 标记位 |
| 返回值 | 成功返回0,其他为错误码 |
smem_trans_write_submit
异步写提交接口
int32_t smem_trans_write_submit(smem_trans_t handle, const void *localAddr, const char *remoteUniqueId,
void *remoteAddr, size_t dataSize, void *stream, uint32_t flags);
| 参数/返回值 | 含义 |
|---|---|
| handle | TRANS对象handle |
| localAddr | 本地待写数据起始地址指针 |
| remoteUniqueId | 远端TRANS实例对应的标识 |
| remoteAddr | 远端存储数据起始地址指针 |
| dataSize | 传输数据大小 |
| stream | 需要将任务提交到的aclrtStream |
| 返回值 | 成功返回0,其他为错误码 |
环境变量
| 环境变量 | 含义 |
|---|---|
| LD_LIBRARY_PATH | 动态链接库搜索路径 |
| ASCEND_HOME_PATH | cann包安装路径 |
| VERSION | 编译whl包版本 |