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 参数说明
为globalDomain或mstxDomainCreateA返回的句柄。 |
||
/** @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);