算子 CastKernel

Operator Library: Base

借助 CastKernel 算子,您可以重新组织输入数据的 Parallelism 和 kernel size。 如需重新解释,请更改输出链路处的 kernel size。 例如,某个输入链路配置了两个 kernel row、两个 kernel column 以及 4 的 Parallelism。 利用 CastKernel 算子,您可以将其解释为 Parallelism 为 1 时的 4 个 kernel row 和 4 个 kernel column,或者解释为 Parallelism 为 8 时的 1 个 kernel row 和 2 个 kernel column 等。 CastKernel 算子的约束条件是:输入链路和输出链路的 kernel row、kernel column 与 Parallelism 的乘积必须保持一致。

有关使用 kernel 的实用指导,请参阅 Working with Kernels 教程主题。 有关 Parallelism 的实用指导,请参阅 Parallelism 教程主题。

以下示例说明了算子执行的 kernel 配置和 Parallelism 转换。 插图下方的伪代码还描述了转换模式。

示例 1:将 kernel size(col x row)3x1 转换为 kernel size 1x3,同时保持 Parallelism 为 2:

示例 2:将 Parallelism 2 和 kernel size(col x row)2x3 转换为 Parallelism 3 和 kernel size 2x2:

示例 3:将 Parallelism 1 和 kernel size(col x row)3x2 转换为 Parallelism 6 和 kernel size 1x1:

该算子会更改图像的宽度。

映射遵循以下伪代码:

        
        pi = 0
        ri = 0
        ci = 0
        for p in 0 to P-1
          for r in 0 to R-1
            for c in 0 to C-1
              O[p][r][c] = I[pi][ri][ci]
              ci = ci + 1
              if ci >= Ci then ci = 0, ri = ri + 1
              if ri >= Ri then ri = 0, pi = pi + 1
        
      

该伪代码的含义如下:

伪代码 含义
p Output-Parallel-Index
pi Input-Parallel-Index
r Output-Kernel-Row-Index
ri Input-Kernel-Row-Index
c Output-Kernel-Column-Index
co Output-Kernel-Column-Index
Pi Input-Parallelism
P Output-Parallelism
Ri Input-Kernel-Rows
R Input-Kernel-Columns
Ci Input-KernelColumns
C OutputKernelColumns

表 32. 伪代码说明


CastKernel 算子的功能也可以通过组合以下算子来实现:SplitKernel、MergeKernel、SplitParallel 和 MergeParallel:

在本例中,将 Parallelism 为 3、包含 4 个 Kernel Columns 和 2 个 Kernel Rows 的输入配置重新组织为 Parallelism 为 4、包含 2 个 Kernel Columns 和 3 个 Kernel Rows。通过相应地配置输出连接,使用 CastKernel 算子也可以达到同样的效果:

I/O Property

Property 值
Operator Type O
Input Link I,数据输入
Output Link O,数据输出

Supported Link Format

Link Parameter Input Link I Output Link O
Bit Width [1, 64]1 As I
Arithmetic {Unsigned, signed} As I
Parallelism 任意 Auto2
Kernel Columns 任意 任意
Kernel Rows 任意 任意
Img Protocol {VALT_IMAGE2D, VALT_LINE1D, VALT_PIXEL0D} As I
Color Format 任意 As I
Color Flavor 任意 As I
Max. Img Width 任意 Auto3
Max. Img Height 任意 As I

1

Bit Width 的范围为:

  • 对于无符号输入:[1, 64]
  • 对于有符号输入:[2, 64]
  • 对于无符号彩色输入:[3, 63]
  • 对于有符号彩色输入:[6, 63]

2

输出 Parallelism 由输入 Parallelism 决定 、输入内核大小 以及输出内核大小 :

其中 表示 kernel rows 且 表示 kernel columns。

3

输出最大图像宽度由输入最大图像宽度、输出 Parallelism 和输入 Parallelism 决定,计算公式如下:

参数

无

使用示例

以下示例展示了 CastKernel 算子的使用方法: