Operator Library: Base
사용자는 CastKernel 오퍼레이터를 사용하여 수신 데이터의 Parallelism 및 커널 크기를 재조직할 수 있습니다. 재해석하려면 출력 링크에서 커널 크기를 변경하십시오. 예를 들어, 입력 링크는 2개의 커널 행, 2개의 커널 열, 그리고 4의 Parallelism으로 구성됩니다. CastKernel 오퍼레이터를 사용하면 이를 Parallelism 1에서 4개의 커널 행과 4개의 커널 열로, 또는 Parallelism 8에서 1개의 커널 행과 2개의 커널 열 등으로 해석할 수 있습니다. CastKernel 오퍼레이터의 제약 사항은 커널 행, 커널 열, Parallelism의 곱이 입력 링크와 출력 링크에서 동일해야 한다는 것입니다.
커널 작업에 대한 실질적인 지침은 ‘커널 작업’ 튜토리얼 항목을 참조하십시오. 병렬 처리에 대한 실질적인 지침은 Parallelism 튜토리얼 항목을 참조하십시오.
다음 예시는 연산자가 수행하는 커널 구성 및 병렬화 변환 과정을 보여줍니다. 그림 아래의 의사코드에서도 이러한 변환 패턴을 설명하고 있습니다.
예 1: 병렬성 2를 유지하면서 커널 크기(열 × 행) 3x1을 1x3으로 변환하는 방법:

예 2: 병렬도 2와 커널 크기(열 x 행) 2x3을 병렬도 3과 커널 크기 2x2로 변환하는 방법:

예 3: 병렬도 1과 커널 크기(열 x 행) 3x2를 병렬도 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 | 출력-병렬-인덱스 |
| pi | 입력-병렬-인덱스 |
| r | 출력-커널-행-인덱스 |
| ri | 입력-커널-행-인덱스 |
| c | 출력-커널-열-인덱스 |
| co | 출력-커널-열-인덱스 |
| 파이 | 입력-Parallelism |
| P | 출력-Parallelism |
| 리 | 입력-커널-행 |
| R | Input-Kernel-Columns |
| Ci | Input-KernelColumns |
| C | OutputKernelColumns |
표 32. 의사 코드 설명
CastKernel 오퍼레이터의 기능은 다음 오퍼레이터들을 조합하여 구현할 수도 있습니다. SplitKernel, MergeKernel, SplitParallel, MergeParallel

이 예시에서는 Parallelism 3에서의 4개 커널 열과 2개 커널 행으로 된 입력 구성이 Parallelism 4에서의 2개 커널 열과 3개 커널 행으로 재구성됩니다. 출력 링크를 적절히 구성하면 CastKernel 오퍼레이터를 통해 동일한 작업을 수행할 수 있습니다.

|
Bit Width의 범위는 다음과 같습니다.
|
|
|
출력 Parallelism은
![]() 여기서
|
|
|
최대 출력 이미지 너비는 최대 입력 이미지 너비, 출력 Parallelism,
![]() |
The use of operator CastKernel is shown in the following examples:




입력 Parallelism과
, 입력 커널 크기
출력 커널 크기에 의해 결정되며
:

커널 행을 나타내고
커널 열을 나타냅니다.
그리고 입력 Parallelism에 의해
다음과 같이 결정됩니다.

이전

