쿠다 병렬 환원

참고 : https://developer.download.nvidia.cn/assets/cuda/files/reduction.pdf

이 논문은 다음과 같이 더 중요한 아이디어가있는 스칼라 감소 최적화 단계 6을위한 선물 :

1.Avoid 경사 발산

2.Sequential 주소 지정 충돌 무료 (나의 이해는 연속 해결 속도가 빠른 것입니다)

마지막 워프를 3.Unroll (warpReduce 매개 변수가 휘발성 타입으로 선언해야하는 경우 즉 warpReduce, 여기, 휘발성 키워드의 역할을 주목하는)

4.Use의 템플릿 (다른 ..하면 ..) 모든 루프를 풀다 && 조건문을 피하기 위해

5.Multiple 추가해 (shared_data 줄이기 전에 그러한 256 shared_data 크기로 각 스레드 몇 요소, 2560 입력 배열의 크기는, 각각의 스레드에 10 개을 더한 요소하자 그래서, 최대한이다진다 shared_data에 할당 차례 후 감소 않는 256 개 요소)

: 또한이 스칼라 감소 열 Reudction, 행 감소, 특히 소스 tensorflow 참조 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/reduction_gpu_kernels.cu.h을

: 열 또는 행의 개수가 16 미만이면, 또한, 휨 프리미티브 레벨 프로그래밍 기법을 이용하는 것을 상세하게 참조 https://devblogs.nvidia.com/using-cuda-warp-level-primitives/

그 이유는 간단 수가 16 미만이면 휘어짐이 두 개의 행 또는 2 최소로 간주 될 수 있으며, 약간의 번호를 추가하고, 각각의 경사에 필요하며, 이는 정확하게 경사 프리미티브 특성을 이용하여 산출 할 수있다.

tensorflow는 내부적으로 사실, 자신 달성 할 수있다 (즉, 일부 CUDA API를 포장하는 경우 새끼) 라이브러리가 제공하는 API 새끼를 호출합니다.

추천

출처www.cnblogs.com/deepllz/p/11350764.html