-1
this one에 대한 후속 질문입니다. 나는 내가 ThreadsPerWarp
(32)가되는 경우에 그것의 전문화를 구현하고있어32 와이드 CUDA 아키텍처를 대상으로 할 때 warpSize를 사용해야합니까?
template<unsigned ThreadsPerWarp>
___global__ foo(bar_t* a, const baz_t* b);
CUDA 커널이 있다고 가정
(이 내 앞의 질문에 대한 Talonmies '대답의 유효한 비판을 우회.)
이 함수의 본문 (또는 다른 __device__
함수에서 호출 한 함수) - ThreadsPerWarp
의 상수 값을 사용해야합니까? 또는 warpSize
을 사용하는 것이 더 낫습니까? 아니면 컴파일러가 생성하는 PTX의 관점에서 모두 동일 할 것입니까?
'ThreadsPerWarp'를 사용하는 것이 최적화 관점에서 더 나을 것입니다. –
@RobertCrovella : 예외없이 언제나? 즉, nvcc는'32'보다 "warpSize"를 "예고"하는 옵티마이 저를 더 명확하게 가지고 있지 않습니다. 결국, talonmies는 링크드 인 질문에서 PTX가 32의 워프 크기를 가정하지 않는다고 말했습니다. – einpoklum
[대답을 링크] (http://stackoverflow.com/q/36047035/1593077)에서 @ 그는 "동시에 warpSize를 코드에서 사용하는 것은 최적화를 방해합니다. 공식적으로 컴파일 타임에 알려진 상수가 아니기 때문입니다." 나는 꽤 많이 반복하고있다 (분명히 나는 동의한다). 나는 당신이 지금 뭔가 존재하지 않는다는 증거를 요구하고 있다고 생각합니다. –