Operator Library: Base
藉由 CastKernel 運算子,您可以重新組織輸入資料的 Parallelism 與 kernel 大小。 若要進行重新詮釋,請變更輸出連結上的 kernel 大小。 例如,某個輸入連結設定為兩個 kernel rows 與兩個 kernel columns,且 Parallelism 為 4。 CastKernel 運算子讓您能夠在 Parallelism 為 1 時將這些內容詮釋為四個 kernel rows 與四個 kernel columns,或者在 Parallelism 為 8 時詮釋為一個 kernel row 與兩個 kernel columns 等等。 CastKernel 運算子的限制是,輸入與輸出連結的 kernel row、kernel column 與 Parallelism 的乘積必須相同。
如需關於處理 kernel 的實用指導,請參閱 Working with Kernels 教學主題。 如需關於 Parallelism 的實用指導,請參閱 Parallelism 教學主題。
以下範例說明了由運算子執行的 kernel 組態與 Parallelism 轉換。 圖解下方的虛擬碼也描述了轉換模式。
範例 1:將 kernel 大小 (col x row) 3x1 轉換為 kernel 大小 1x3,同時保持 Parallelism 2:

範例 2:將 Parallelism 2 與 kernel 大小 (col x row) 2x3 轉換為 Parallelism 3 與 kernel 大小 2x2:

範例 3:將 Parallelism 1 與 kernel 大小 (col x row) 3x2 轉換為 Parallelism 6 與 kernel 大小 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:

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

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




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

表示核的行,而
表示核函數的列。
以及輸入並行度
作者:

上一頁

