Operator CastKernel

Operator Library: Base

透過CastKernel運算子,您可以重新組織輸入資料的並行度與核心大小。 若要重新詮釋,請在輸出連結處變更核心大小。 例如,某個輸入連結配置為兩個核心行、兩個核心列,且並行度為四。 CastKernel運算子讓您能夠將這些設定詮釋為:在平行度為 1 時為四行四欄,或 在平行度為 8 時為一行兩欄,等等。 CastKernel運算子的限制在於,輸入與輸出連結中,核心行數、核心列數與平行度的乘積必須完全相同 。

有關使用核心的實務指引,請參閱 「使用核心」教學主題。 有關並行處理的實務指引,請參閱 Parallelism 教學主題。

以下範例說明了運算子所執行的核心配置與並行化轉換。 圖示下方的偽代碼亦描述了該轉換模式。

範例 1:將核尺寸(列 × 行)3×1 轉換為 1×3,同時維持並行度 2:

範例 2:將並行度 2 和核心大小(列 × 行)2x3 轉換為並行度 3 和核心大小 2x2:

範例 3:將並行度 1 和核心大小(列 × 行)3×2 轉換為並行度 6 和核心大小 1×1:

此運算子會變更圖片的寬度。

此映射遵循以下偽程式碼:

        
        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 輸出並行索引
π 輸入-並行-索引
r Output-Kernel-Row-Index
ri 輸入-核心-行索引
c 輸出-核心-欄位-索引
co 輸出-核心-欄位-索引
π 輸入-Parallelism
P 輸出-Parallelism
Ri 輸入-核心-行
R 輸入-核心-欄位
Ci 輸入-核心欄位
C 輸出核心欄位數

表 32. 偽代碼說明


CastKernel運算子的功能也可透過組合以下運算子來實現: SplitKernel、 MergeKernel、 SplitParallel 以及 MergeParallel:

在此範例中,原始輸入配置為 4 列核心與 2 行核心(並行度為 3),經重新組織後 變為 2 列核心與 3 行核心(並行度為 4)。透過分別設定CastKernel運算子的輸出連結,亦可達到相同效果:

I/O Properties

Property Value
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 Any Auto2
Kernel Columns Any Any
Kernel Rows Any Any
Img Protocol {VALT_IMAGE2D, VALT_LINE1D, VALT_PIXEL0D} As I
Color Format Any As I
Color Flavor Any As I
Max. Img Width Any Auto3
Max. Img Height Any As I

1

位寬的範圍為:

  • 針對無號輸入:[1, 64]
  • 對於有號數值:[2, 64]
  • 對於無號彩色輸入:[3, 63]
  • 對於有號彩色輸入:[6, 63]

2

輸出並行度 取決於輸入的並行度 , 輸入核心大小 以及輸出核心大小 :

其中 表示核函數的行,而 表示核列。

3

輸出影像的最大寬度取決於輸入影像的最大寬度以及輸出的並行度 以及輸入並行度 作者:

Parameters

無

Examples of Use

以下範例展示了 CastKernel 運算子的使用方式: