Warp 갯수에 대한 고찰입니다....
SM내 warp가 24개가 이상일 경우에 overlab이 생기지 않아 효율적인 스케줄링이 가능하다는 것은 정확히 이해 했지만, Warp 갯수가 적어지면 근본적으로 작업시간 자체는 줄지 않을까? 그렇다면 빨리 끝나는게 스케줄링이 좋은거 아닐까? 라는 생각이 들었습니다.
다음은 제 생각을 담은 그림입니다.

다음과 같이 23개의 warp가 overhead가 걸릴 수는 있겠지만 일이 끝나는 시간은 짧지 않을까?
또 반대로 warp의 수가 작다는 것은 일 양이 많지 않다는 것이니 당연히 빨리 끝나는게 맞지 않을까?
라는 생각을 했습니다.
回答 2
0
아래 추가 질문하신 내용은, 병렬처리 나 CUDA 프로그래밍에서는 단순히 warp 숫자나, GPU의 overhead 정도로 예측할 수 있는 문제가 아닐 수 있습니다.
전문적인 CUDA 프로그래머 라면, 누구나 사용하는 테크닉 들이 있는데, 그것들은 강의에서 계속 설명하고 있습니다. bank conflict 나, memory hierarchy, memory access 패턴 같은 것은 CPU 기반의 C/C++/Java 강의에서는 개념조차 설명하지 않는 내용들이라는 점을 감안하셔야 합니다. 그것들까지 모두 염두에 두고, CUDA 프로그램을 짜야 최고의 성능이 나오게 되고, 역으로, 이 구조를 이해하지 못하거나, 잘못 적용하면, 의외로 더 느려질 수도 있습니다.
그리고, CUDA 의 설계 철학이, 계산량이 충분히 많은 때를 가정하고 설계 했다는 점도 고려하셔야 합니다.
강의에서도 예제를 최소 1M 개, 되도록이면 16M 개, 32M 개로 크게 크게 잡는 것이, 그게 CUDA 의 설계 철학이나, 운영 방식에 적합합니다. CPU 프로그램 과는 완전히 다른 철학으로 설계 되었고, 운영 구조도 CPU 스케줄러와는 완전히 다르다고 보셔야 합니다.
0
안녕하세요.
네, 생각하신 내용이 맞습니다.
전체적으로, 일의 양이 적으면, 전체 작업도 빨리 끝나는 것은 분명합니다.
설명한 부분은, 반대로, 일의 양이 일정 수준 보다 더 많을 때,
그 일을 빨리 끝내려면, SM 이 잠시도 쉬지 않고 일하게 하면,
SM 이 쉬면서 일하는 것보다는 더 효율적이라고 보시면 되겠습니다.
감사합니다.
0
답변 감사드립니다!
그렇다면 궁금한 점이 있는데요. 강사님이 말씀하신대로 SM이 쉬지 않고 일하는 것과 SM이 쉬고 일하는 것과 작업속도의 차이점이 있는건가요?
말씀하신점은 즉, SM이 연속적으로 일 처리 하는 것이 쉬고서 일하는 것보다 작업 처리 속도가 빠르다는 말씀이신가요?
사실 지금 딜레마에 빠진 것이 예를들어 Warp 30개를 일처리 하는 속도(overhead가 일어나지 않는 경우)가 WARP 22개 (overhead가 일어나는 경우)를 일처리 하는 속도보다 더 빨라 warp 스케줄링과 연관이 있나해서 질문드립니다.
0
아래 추가 질문하신 내용은, 병렬처리 나 CUDA 프로그래밍에서는 단순히 warp 숫자나, GPU의 overhead 정도로 예측할 수 있는 문제가 아닐 수 있습니다.
전문적인 CUDA 프로그래머 라면, 누구나 사용하는 테크닉 들이 있는데, 그것들은 강의에서 계속 설명하고 있습니다. bank conflict 나, memory hierarchy, memory access 패턴 같은 것은 CPU 기반의 C/C++/Java 강의에서는 개념조차 설명하지 않는 내용들이라는 점을 감안하셔야 합니다. 그것들까지 모두 염두에 두고, CUDA 프로그램을 짜야 최고의 성능이 나오게 되고, 역으로, 이 구조를 이해하지 못하거나, 잘못 적용하면, 의외로 더 느려질 수도 있습니다.
그리고, CUDA 의 설계 철학이, 계산량이 충분히 많은 때를 가정하고 설계 했다는 점도 고려하셔야 합니다.
강의에서도 예제를 최소 1M 개, 되도록이면 16M 개, 32M 개로 크게 크게 잡는 것이, 그게 CUDA 의 설계 철학이나, 운영 방식에 적합합니다. CPU 프로그램 과는 완전히 다른 철학으로 설계 되었고, 운영 구조도 CPU 스케줄러와는 완전히 다르다고 보셔야 합니다.
코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다
0
1
0
Reticle이 안나옵니다.
0
10
1
진행 방법 질문드립니다!
0
30
2
Singleton 관련 질문입니다.
1
31
2
안녕하세요. 계속 프로젝트를 해야지 하다가 결제하고 환경 설정 중입니다.
0
15
1
Export template 안됨
1
28
2
2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.
0
55
2
AddGameFrameworkComponentReceiver vs AddExtensionHandler
0
24
0
scanf("%d\n") 의미
0
20
1
필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)
0
37
2
2주차 개념#12 트리 순회
0
25
2
백준 사이트 서비스 종료
0
112
3
26년 1회 실기 해설 강의
0
51
2
프로젝트 질문 문의
0
46
1
ch .12 grid 설정 관련 질문 드립니다.
0
73
2
memcpy 시간 고려 시 gpu vs. cpu
0
82
2
common.cpp의 procArg 함수에 대해 질문이 있습니다.
0
133
2
Thread Block 개수에 제한이 있나요?
0
399
1
Warp를 동시에 돌린다는 말이 이해가 가지 않습니다.
0
312
1
매크로 함수를 쓴 이유
0
301
1
VS2022 컴파일 에러
0
365
2
global 변수가 cuda memory에서 사용되는 이유
0
369
1
15강 Block ID 예제 오류 질문입니다.
0
359
1
컴파일 시의 <typeinfo> 관련 에러
0
585
1

