mstxMemPermissionsAssign

产品支持情况

产品 是否支持
Atlas 350 加速卡
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Atlas 训练系列产品

功能说明

为虚拟内存区间指定读、写、共享访问权限,指定权限前需保证此区间已注册为 region。

函数原型

void mstxMemPermissionsAssign(mstxDomainHandle_t domain, mstxMemPermissionsAssignBatch_t const *desc);

参数说明

表 1 参数说明

参数

输入/输出

说明

domain

输入

为globalDomain或mstxDomainCreateA返回的句柄。

数据类型:const char *。

desc

输入


/** @brief 该内存无访问权限
 */
#define MSTX_MEM_PERMISSIONS_REGION_FLAGS_NONE 0x00

/** @brief 该内存可读
 */
#define MSTX_MEM_PERMISSIONS_REGION_FLAGS_READ 0x01

/** @brief 该内存可写
 */
#define MSTX_MEM_PERMISSIONS_REGION_FLAGS_WRITE 0x02

/** @brief 该内存可在多设备间共享访问
 */
#define MSTX_MEM_PERMISSIONS_REGION_FLAGS_SHARED 0x04

/** @brief 用于描述为 Region 指定的内存权限
  * @member flags - 使用 MSTX_MEM_PERMISSIONS_REGION_FLAGS_* 表示的权限标志位
  * @member region - 指向已注册的虚拟内存区间的引用
  */
typedef struct mstxMemPermissionsAssignRegionsDesc_t {
    uint32_t flags;
    mstxMemRegionRef_t region;
} mstxMemPermissionsAssignRegionsDesc_t;

/** @brief 用于描述为多个 Region 指定内存权限
  * @member regionCount - regionDescArray 数组长度
  * @member regionDescArray - 权限描述数组
  */
typedef struct mstxMemPermissionsAssignBatch_t {
    size_t regionCount;
    mstxMemPermissionsAssignRegionsDesc_t const *regionDescArray;
} mstxMemPermissionsAssignBatch_t;

返回值说明

无。

调用示例

// 假定 handles 已由 mstxMemRegionsRegister 初始化
mstxMemRegionHandle_t handles[2];

mstxMemPermissionsAssignRegionsDesc_t perms[2];
mstxMemPermissionsAssignBatch_t permBatch{};
perms[0].flags = MSTX_MEM_PERMISSIONS_REGION_FLAGS_READ;
perms[0].region.refType = MSTX_MEM_REGION_REF_TYPE_HANDLE;
perms[0].region.handle = handles[0];
perms[1].flags = MSTX_MEM_PERMISSIONS_REGION_FLAGS_WRITE;
perms[1].region.refType = MSTX_MEM_REGION_REF_TYPE_HANDLE;
perms[1].region.handle = handles[0];
permBatch.regionCount = 2;
permBatch.regionDescArray = perms;
mstxMemPermissionsAssign(globalDomain, &permBatch);