Skip to content
版 本

LoadImageToLocal

产 品 支 持 情 况

产 品

是 否 支 持

Ascend 950PR/Ascend 950DT

Atlas A3 训 练 系 列 产 品/Atlas A3 推 理 系 列 产 品

Atlas A2 训 练 系 列 产 品/Atlas A2 推 理 系 列 产 品

Atlas 200I/500 A2 推 理 产 品

Atlas 推 理 系 列 产 品AI Core

Atlas 推 理 系 列 产 品Vector Core

x

Atlas 训 练 系 列 产 品

x

功 能 说 明

将 图 像 数 据 从Global Memory搬 运 到Local Memory。 搬 运 过 程 中 可 以 完 成 图 像 预 处 理 操 作:包 括 图 像 翻 转,改 变 图 像 尺 寸(抠 图,裁 边,缩 放,伸 展),以 及 色 域 转 换,类 型 转 换 等。图 像 预 处 理 的 相 关 参 数 通 过SetAippFunctions进 行 配 置。

函 数 原 型

Text
template <typename T>
__aicore__ inline void LoadImageToLocal(const LocalTensor<T>& dst, const LoadImageToLocalParams& loadDataParams)

参 数 说 明

表 1 参 数 说 明

参 数 名 称

输 入/输 出

含 义

dst

输 出

目 的 操 作 数,类 型 为LocalTensor。

LocalTensor的 起 始 地 址需 要 保 证32字 节 对 齐。

Ascend 950PR/Ascend 950DT,支 持 的 数 据 类 型 为:uint8_t、int8_t、half;支 持 的TPosition为VECIN、VECCALC、VECOUT。

Atlas A3 训 练 系 列 产 品/Atlas A3 推 理 系 列 产 品,支 持 数 据 类 型:int8_t、half;支 持 的TPosition为A1、B1。

Atlas A2 训 练 系 列 产 品/Atlas A2 推 理 系 列 产 品,支 持 数 据 类 型:int8_t、half;支 持 的TPosition为A1、B1。

Atlas 200I/500 A2 推 理 产 品 支 持 数 据 类 型 为:uint8_t、int8_t、half;支 持 的TPosition为A1、B1。

Atlas 推 理 系 列 产 品AI Core,支 持 的 数 据 类 型 为:uint8_t、int8_t、half;支 持 的TPosition为A1、B1。

loadDataParams

输 入

LoadData参 数 结 构 体,类 型 为LoadImageToLocalParams。

具 体 定 义 请 参 考${INSTALL_DIR}/include/ascendc/basic_api/interface/kernel_struct_mm.h,${INSTALL_DIR}请 替 换 为CANN软 件 安 装 后 文 件 存 储 路 径。

参 数 说 明 参 考表2

表 2 LoadImageToLocalParams结 构 体 内 参 数 说 明

参 数 名 称

输 入/输 出

含 义

horizSize

输 入

从 源 图 中 加 载 图 片 的 水 平 宽 度,单 位 为 像 素,取 值 范 围:horizSize∈[2, 4095] 。

vertSize

输 入

从 源 图 中 加 载 图 片 的 垂 直 高 度,单 位 为 像 素,取 值 范 围:vertSize∈[2, 4095]。

horizStartPos

输 入

加 载 图 片 在 源 图 片 上 的 水 平 起 始 地 址,单 位 为 像 素,取 值 范 围:horizStartPos∈[0, 4095] 。默 认 为0。

注 意:当 输 入 图 片 为YUV420SP、XRGB8888, RGB888和YUV400格 式 时,该 参 数 需 要 是 偶 数。

vertStartPos

输 入

加 载 图 片 在 源 图 片 上 的 垂 直 起 始 地 址,单 位 为 像 素,取 值 范 围:vertStartPos∈[0, 4095] 。默 认 为0。

注 意:当 输 入 图 片 为YUV420SP格 式 时,该 参 数 需 要 是 偶 数。

srcHorizSize

输 入

源 图 像 水 平 宽 度 ,单 位 为 像 素,取 值 范 围:srcHorizSize∈[2, 4095] 。

注 意:当 输 入 图 片 为YUV420SP格 式 时,该 参 数 需 要 是 偶 数。

topPadSize

输 入

目 的 图 像 顶 部 填 充 的 像 素 数 ,取 值 范 围:topPadSize∈[0, 32] ,默 认 为0。进 行 数 据 填 充 时 使 用,需 要 先 调 用SetAippFunctions通 过AippPaddingParams配 置 填 充 的 数 值,再 通 过topPadSize、botPadSize、leftPadSize、rightPadSize配 置 填 充 的 大 小 范 围。

botPadSize

输 入

目 的 图 像 底 部 填 充 的 像 素 数,取 值 范 围:botPadSize∈[0, 32] ,默 认 为0。

leftPadSize

输 入

目 的 图 像 左 边 填 充 的 像 素 数,取 值 范 围:leftPadSize∈[0, 32] ,默 认 为0。

rightPadSize

输 入

目 的 图 像 右 边 填 充 的 像 素 数,取 值 范 围:rightPadSize∈[0, 32] ,默 认 为0。

sid

输 入

预 留 参 数。为 后 续 的 功 能 做 保 留,开 发 者 暂 时 无 需 关 注,使 用 默 认 值 即 可。

约 束 说 明

  • 操 作 数 地 址 对 齐 要 求 请 参 见通 用 地 址 对 齐 约 束
  • 加 载 到dst的 图 片 的 大 小 加padding的 大 小 必 须 小 于 等 于 所 在 存 储 空 间 的 大 小。
  • 当 通 过SetAippFunctions配 置padding模 式 为 块 填 充 模 式 或 者 镜 像 块 填 充 模 式 时,因 为padding的 数 据 来 自 于 抠 出 的 图 片,左 右padding的 长 度(leftPadSize、rightPadSize)必 须 小 于 或 等 于 抠 图 的 水 平 长 度(horizSize),上 下padding的 长 度(topPadSize、botPadSize)必 须 小 于 或 等 于 抠 图 的 垂 直 的 长 度(vertSize)。

返 回 值 说 明

调 用 示 例

该 调 用 示 例 支 持 的 运 行 平 台 为Atlas 推 理 系 列 产 品AI Core,示 例 图 片 格 式 为YUV420SP。

Text
uint16_t horizSize = 32, vertSize = 32, horizStartPos = 0, vertStartPos = 0, srcHorizSize = 32, srcVertSize = 32, leftPadSize = 0, rightPadSize = 0;
uint32_t dstHorizSize = 32, dstVertSize = 32, cSize = 32;
uint8_t topPadSize = 0, botPadSize = 0;
uint32_t gmSrc0Size = 0, gmSrc1Size = 0, dstSize = 0;
AscendC::AippInputFormat inputFormat = AscendC::AippInputFormat::YUV420SP_U8;
uint32_t cPadMode = 0;
int8_t cPaddingValue = 0;

AscendC::TPipe pipe;
AscendC::TQue<AscendC::TPosition::A1, 1> inQueueA1;
AscendC::TQue<AscendC::TPosition::VECOUT, 1> outQueueUB;
AscendC::LocalTensor<int8_t> featureMapA1 = inQueueA1.AllocTensor<int8_t>();
uint64_t fm_addr = static_cast<uint64_t>(reinterpret_cast<uintptr_t>(fmGlobal.GetPhyAddr()));
// aipp config
AscendC::AippParams<int8_t> aippConfig;
aippConfig.cPaddingParams.cPaddingMode = cPadMode;
aippConfig.cPaddingParams.cPaddingValue = cPaddingValue;
// fmGlobal为 整 张 输 入 图 片,src1参 数 处 填 入 图 片UV维 度 的 起 始 地 址
AscendC::SetAippFunctions(fmGlobal, fmGlobal[gmSrc0Size], inputFormat, aippConfig);
AscendC::LoadImageToLocal(featureMapA1, { horizSize, vertSize, horizStartPos, vertStartPos, srcHorizSize, topPadSize, botPadSize, leftPadSize, rightPadSize });

免 责 声 明:本 站 内 容 由 asc-devkit 仓 master 分 支 自 动 编 译 生 成,属 于 持 续 开 发 版 本,可 能 存 在 缺 陷,仅 供 预 览 与 参 考。如 需 稳 定 及 商 用 资 料,请 查 阅 官 方 昇 腾 社 区