算子 CastKernel

Operator Library: Base

使用 CastKernel 算子,您可以重新组织传入数据的 Parallelism 和内核大小。 如需重新解释,请更改输出链接处的内核大小。 例如,输入链接配置为两个内核行、两个内核列以及 4 的 Parallelism。 CastKernel 算子允许您将这些解释为 Parallelism 为 1 时的四个内核行和四个内核列,或者解释为 Parallelism 为 8 时的一个内核行和两个内核列等。 CastKernel 算子的约束条件是,输入链接和输出链接的内核行、内核列与 Parallelism 的乘积必须相同。

有关使用内核的实际指导,请参见 Working with Kernels 教程主题。 有关 Parallelism 的实际指导,请参见 Parallelism 教程主题。

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

示例 1:在保持 Parallelism 为 2 的同时,将内核大小(列 x 行)从 3x1 转换为 1x3:

示例 2:将 Parallelism 为 2 且内核大小(列 x 行)为 2x3 的配置转换为 Parallelism 为 3 且内核大小为 2x2:

示例 3:将 Parallelism 为 1 且内核大小(列 x 行)为 3x2 的配置转换为 Parallelism 为 6 且内核大小为 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 Properties

财产 值
操作员类型 O
Input Link I,数据输入
输出链接 O,数据输出

Supported Link Format

链接参数 输入链路 I 输出链路 O
Bit Width [1, 64]1 作为 I
Arithmetic {Unsigned, signed} 作为 I
Parallelism 任意 Auto2
内核列 任意 任意
内核行 任意 任意
图像协议 {VALT_IMAGE2D, VALT_LINE1D, VALT_PIXEL0D} 作为 I
Color Format 任意 作为 I
颜色口味 任意 作为 I
Max. Img Width 任意 Auto3
Max. Img Height 任意 作为 I

1

Bit Width 的范围为:

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

2

输出 parallelism is determined by the input parallelism 、输入 kernel 大小 以及输出 kernel 大小决定 :

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

3

输出的最大图像宽度由输入的最大图像宽度、输出 parallelism 以及输入 parallelism 决定 经过:

参数

无

Examples of Use

The use of operator CastKernel is shown in the following examples: