28-4 shuffle shared - shared memory 강의에서 질문이 있습니다.
안녕하세요. 강의 정말 너무 잘 보고 있습니다!!
다름이 아니라 28-4 강의를 보다 궁금하게 있어서 질문을 드립니다.
even odd방식이 Half and Half 알고리즘보다 느린 이유
Global Memory에서 Half and Half가 even odd보다 더 느린 이유
위 두 가지 이유에 대해서는 이해가 되었지만, Shared Memory를 사용하는 부분에서 이해가 잘되지 않는 부분이 있습니다. Global Memory에서는 Memory Coalescing이 중요하기 때문에 Half and Half가 더 느린게 맞지만, Shared Memory를 사용하는 부분에서는 두 방식(even odd, Half and Half)에서 차이가 없지 않을까 하고 생각했습니다. 두 방식 모두 Global Memory에 접근하고 Write하는 로직은 같기 때문에 Shared Memory에서 성능을 저해하는 요소로는 Bank Conflict만 있다고 생각했는데, 제가 잘못 이해 하고 있는 걸까요??
답변 1
1
안녕하세요.
우선, CUDA 프로그래밍 강의를 수강해 주셔서 감사합니다.
28-4 동영상에서 나왔던 내용은 상당히 디테일하게 속도를 따지는 부분이었습니다.
메모리 억세스 속도만 따진다면, 말씀하신 대로, 쉐어드 메모리에 가져온 후에는,
쉐어드 메모리 상에서 even-odd 를 쓰거나, half-and-half 를 쓰거나,
메모리를 읽어오는 속도에서는 큰 차이가 없을 겁니다.
bank conflict 도 어느 한쪽이 엄청 빨라질 정도로 발생할 것 같지는 않습니다.
다만, 28번 강의의 주제가 "control flow" 로, 메모리 억세스 보다는
GPU core 의 수행 경로를 따지고 있는 상황이라서,
control-flow 레벨에서의 최적화를 고려하고 있습니다.
28-1 동영상의 2808 슬라이드를 보시면, (28-1 동영상에서는 8:05 부분의 앞뒤 정도가 됩니다)
even-odd 방법은 대부분의 경우, 1개의 warp 내에서도 if-part, else-part 가 모두 수행되어야 하고,
half-and-half 방법에서는 1개의 warp 내에서는 대부분 if-part 만, 또는 else-part 만 수행하게 될 것입니다.
warp 1개의 입장에서는 몇 개의 instruction 을 더 수행할 것인가, 말 것인가의 차이가 됩니다.
예제로 사용한 CUDA kernel 들은 단순히 assignment 문장 1,2개를 수행하는 정도라서,
warp 입장에서는 GPU core instruction 2,3개 정도를 더 수행하느냐 정도가 될 것 같습니다.
그래서, 현재 구현 결과에서는 미미한 차이를 보이는 정도가 나왔습니다.
(28-4 동영상의 24번 슬라이드, 7,808 usec 대 7,747 usec )
다만, if-part 와 else-part 가 상당히 heavy 해 진다면?
이야기가 달라질 수도 있습니다.
그래서, 동영상에서도, 혹시 모르니까, 습관적으로 half-and-half 방식으로
알고리즘을 설계/구현 하는 것이 나을 것이라고 했던 것입니다.
종합적으로 보면, 현재의 구현 에서는 미미한 차이를 보이는 게 맞습니다.
다만, heavy 한 알고리즘을 구현한다면, 경우에 따라서 차이가 커질 수도 있기 때문에,
되도록 half-and-half 를 선호하게 된다고 보시면 될 것 같습니다.
감사합니다.
26년2회 실기기출은 언제쯤...
0
11
2
이론 공부법 요약본 버전 업데이트 문의
0
15
2
코딩살구클럽 가입부탁드립니다
0
26
2
vs 디버그 옵션 설정
0
26
2
코딩살구클럽 가입 요청 확인부탁드립니다
0
30
2
54강 양자화의 끝판왕, 터보퀀트 (예정) 강의 업로드
0
28
1
블로그에 학습 내용 올려도 되나요?
0
31
1
5-S 테스트 케이스 질문
0
34
2
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
54
2
코살 문제풀이 환경
0
46
2
2 - T 오큰수 문제가 있는 것 같습니다.
0
43
1
추천 추가문제들
0
43
2
프로그래머스 코테 환경 관련해서 질문드립니다.
0
45
2
최댓값 구하기(서바이벌)에서 수식 구성에 대한 질문
0
41
2
자료 한번에 다운받기
0
30
1
해당 문제에 대한 채점이 코딩살구클럽에서 올바르게 처리되지 않습니다.
0
40
2
균형 이진 트리 설명 시 높이 숫자
0
30
2
4-H 질문드립니다.
0
35
2
1-K 질문드립니다.
0
41
2
대기업 인적성 시험 질문
0
41
2
4-C 질문드립니다
0
41
2
[30-4] hist-shared.cu 에서 질문있습니다.
0
167
2
선생님 gpu->cpu 속도 개선에 대해서 질문드려요
0
632
1
32-2의 warp의 early terminate에 대해 질문드립니다.
0
382
1





