다음을 통해 공유


parallel_reduce 함수

연속 부분 합계를 계산 하 여 지정한 범위에 있는 모든 요소의 합계를 계산 하거나 마찬가지로 지정 된 합계 이외의 이항 연산을 병렬로 사용을 얻을 연속 된 일부 결과의 결과 계산 합니다.parallel_reduce의미가 유사한 std::accumulate,이 이항 연산 결합 되도록 id 값이 초기 값 대신 필요 하며 제외 하 고.

template<
   typename _Forward_iterator
>
inline typename std::iterator_traits<_Forward_iterator>::value_type parallel_reduce(
   _Forward_iterator_Begin,
   _Forward_iterator_End,
   const typename std::iterator_traits<_Forward_iterator>::value_type &_Identity
);

template<
   typename _Forward_iterator,
   typename _Sym_reduce_fun
>
inline typename std::iterator_traits<_Forward_iterator>::value_type parallel_reduce(
   _Forward_iterator_Begin,
   _Forward_iterator_End,
   const typename std::iterator_traits<_Forward_iterator>::value_type &_Identity,
   _Sym_reduce_fun_Sym_fun
);

template<
   typename _Reduce_type,
   typename _Forward_iterator,
   typename _Range_reduce_fun,
   typename _Sym_reduce_fun
>
inline _Reduce_type parallel_reduce(
   _Forward_iterator_Begin,
   _Forward_iterator_End,
   const _Reduce_type& _Identity,
   const _Range_reduce_fun &_Range_fun,
   const _Sym_reduce_fun &_Sym_fun
);

매개 변수

  • _Forward_iterator
    반복기 형식 입력된 범위입니다.

  • _Sym_reduce_fun
    대칭 축소 함수 유형을 지정 합니다.이 함수의 형식 시그니처가 있어야 _Reduce_type _Sym_fun(_Reduce_type, _Reduce_type), 여기서 _Reduce_type 같은 id 유형을 사용 하 고 감소의 결과 형식입니다.세 번째 오버 로드에 대해이 출력 형식으로 일관성이 유지 되어야 합니다 _Range_reduce_fun.

  • _Reduce_type
    Input 요소의 형식에서 다를 수 있습니다 입력을 줄일 수 있는 형식입니다.반환 값 및 id 값이이 형식을 됩니다.

  • _Range_reduce_fun
    형식 범위 감소 함수입니다.이 함수의 형식 시그니처가 있어야 _Reduce_type _Range_fun(_Forward_iterator, _Forward_iterator, _Reduce_type), _Reduce_type 동일 id 유형을 사용 하 고 감소의 결과 형식입니다.

  • _Begin
    줄여야 합니다 주소 범위의 첫 번째 요소는 입력된 반복기입니다.

  • _End
    입력된 한 위치 최종 요소 외의 범위를 줄일 수 있는 요소 주소 지정 반복기입니다.

  • _Identity
    Id 값 _Identity 감소의 결과 형식과 동일한 형식의 한도 value_type 첫 번째와 두 번째 오버 로드에 대 한 반복기의.세 번째 오버 로드를 id 값은 감소의 결과 형식과 동일한 형식 이어야 하지만 다 수의 value_type 반복기의.적절 한 값이 있어야 합니다 있도록 범위 감소 연산자 _Range_fun형식의 단일 요소 범위를 적용 하면 value_type 의 id 값을 값 형식에서 형식 캐스팅 처럼 동작 하 고 value_type id 형식에.

  • _Sym_fun
    두 번째 감소에 사용 되는 대칭 함수입니다.에 대 한 설명에 대 한 자세한 내용은 참조 하십시오.

  • _Range_fun
    감소의 첫 번째 단계에서 사용 되는 함수입니다.에 대 한 설명에 대 한 자세한 내용은 참조 하십시오.

반환 값

감소의 결과입니다.

설명

병렬 감소를 수행 하려면 함수 범위 청크 기본 스케줄러를 사용할 수 있는 작업자 수가 기준으로 나눕니다.감소는 두 단계로 이루어집니다, 그리고 감소 내 각 청크를 첫 번째 단계를 수행 및 감소 사이의 각 청크를 부분 결과 두 번째 단계를 수행 합니다.

필요로 하는 첫 번째 오버 로드는 반복기 value_type, T, 동일한 id 값 형식 뿐만 아니라 감소 결과 형식으로 합니다.요소 형식이 T 연산자를 제공 해야 T T::operator + (T) 요소에서 각 청크를 줄일 수 있습니다.같은 연산자의 두 번째 단계에서 사용 됩니다.

두 번째 오버 로드는 또한 필요한 반복기의 value_type 감소 결과 형식 뿐 아니라 id 값 형식이 같아야 합니다.제공 된 이진 연산자 _Sym_fun 모두 감소 단계에서 첫 번째 단계에서 초기 값으로 id 값으로 사용 됩니다.

세 번째 오버 로드에 대 한 id 값 형식이 아니라 반복기의 감소 결과 형식을 같아야 value_type 에서 모두 다를 수 있습니다.함수 범위 감소 _Range_fun 초기 값을 사용 하 고 이진 함수는 첫 번째 단계는 id 값으로 사용 됩니다 _Sym_reduce_fun 결과 두 번째 단계에서 하위에 적용 됩니다.

요구 사항

헤더: ppl.h

네임 스페이스: 동시성

참고 항목

참조

동시성 네임스페이스