다음을 통해 공유


DML_CUMULATIVE_SUMMATION_OPERATOR_DESC 구조체(directml.h)

축을 따라 텐서의 요소를 합산하여 합계의 실행 집계를 출력 텐서에 기록합니다.

구문

struct DML_CUMULATIVE_SUMMATION_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  Axis;
  DML_AXIS_DIRECTION    AxisDirection;
  BOOL                  HasExclusiveSum;
};

멤버

InputTensor

형식: const DML_TENSOR_DESC*

합계할 요소를 포함하는 입력 텐서입니다.

OutputTensor

형식: const DML_TENSOR_DESC*

결과 누적 합계를 쓸 출력 텐서입니다. 이 텐서는 InputTensor와 크기 및 데이터 형식이 동일해야 합니다.

Axis

형식: UINT

요소의 합계를 계산할 차원의 인덱스입니다. 이 값은 InputTensorDimensionCount보다 작아야 합니다.

AxisDirection

형식: DML_AXIS_DIRECTION

DML_AXIS_DIRECTION 열거형의 값 중 하나입니다. DML_AXIS_DIRECTION_INCREASING 설정하면 요소 인덱스를 오름차순으로 지정한 축을 따라 텐서를 트래버스하여 합계가 발생합니다. DML_AXIS_DIRECTION_DECREASING 설정하면 역방향이 true이고 인덱스를 내림차순으로 요소를 트래버스하여 합계가 발생합니다.

HasExclusiveSum

형식: BOOL

TRUE이면 실행 중인 집계를 출력 텐서에 쓸 때 현재 요소의 값이 제외됩니다. FALSE이면 현재 요소의 값이 실행 중인 집계에 포함됩니다.

예제

이 섹션의 예제에서는 모두 다음 속성과 함께 입력 텐서를 사용합니다.

InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 1, 3, 5],
   [3, 8, 7, 3],
   [9, 6, 2, 4]]]]

예제 1. 가로 슬라이버의 누적 합계

Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: FALSE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2,  3,  6, 11],     // i.e. [2, 2+1, 2+1+3, 2+1+3+5]
   [3, 11, 18, 21],     //      [...                   ]
   [9, 15, 17, 21]]]]   //      [...                   ]

예제 2. 배타적 합계

HasExclusiveSumTRUE로 설정하면 출력 텐서에 쓸 때 실행 중인 집계에서 현재 요소의 값을 제외하는 효과가 있습니다.

Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: TRUE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[0, 2,  3,  6],      // Notice the sum is written before adding the input,
   [0, 3, 11, 18],      // and the final total is not written to any output.
   [0, 9, 15, 17]]]]

예제 3. 축 방향

AxisDirectionDML_AXIS_DIRECTION_DECREASING 설정하면 실행 중인 집계를 계산할 때 요소의 순회 순서를 반전하는 효과가 있습니다.

Axis: 3
AxisDirection: DML_AXIS_DIRECTION_DECREASING
HasExclusiveSum: FALSE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[11,  9,  8,  5],    // i.e. [2+1+3+5, 1+3+5, 3+5, 5]
   [21, 18, 10,  3],    //      [...                   ]
   [21, 12,  6,  4]]]]  //      [...                   ]

예제 4. 다른 축을 따라 합산

이 예제에서 합계는 높이 축(차원 2)을 따라 세로로 발생합니다.

Axis: 2
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: FALSE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 2,  1,  3,  5],   // i.e. [2,    ...]
   [ 5,  9, 10,  8],   //      [2+3,  ...]
   [14, 15, 12, 12]]]] //      [2+3+9 ...]

설명

이 연산자는 현재 위치 실행을 지원합니다. 즉, OutputTensor 가 바인딩하는 동안 InputTensor 의 별칭을 지정하도록 허용됩니다.

가용성

이 연산자는 에서 DML_FEATURE_LEVEL_2_1도입되었습니다.

텐서 제약 조건

InputTensorOutputTensor 에는 동일한 DataType, DimensionCount크기가 있어야 합니다.

텐서 지원

DML_FEATURE_LEVEL_5_0 이상

텐서 Kind 지원되는 차원 수 지원되는 데이터 형식
InputTensor 입력 1~8개 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32
OutputTensor 출력 1~8개 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32

DML_FEATURE_LEVEL_4_0 이상

텐서 Kind 지원되는 차원 수 지원되는 데이터 형식
InputTensor 입력 1~8개 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor 출력 1~8개 FLOAT32, FLOAT16, INT32, UINT32

DML_FEATURE_LEVEL_2_1 이상

텐서 Kind 지원되는 차원 수 지원되는 데이터 형식
InputTensor 입력 4 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor 출력 4 FLOAT32, FLOAT16, INT32, UINT32

요구 사항

   
지원되는 최소 클라이언트 Windows 10 빌드 20348
지원되는 최소 서버 Windows 10 빌드 20348
머리글 directml.h