15강 Block ID 예제 오류 질문입니다.
안녕하세요?
Jetson TX2 및 Xavier를 사용하여 CUDA예제를 실행하고 있습니다.
Block 예제에서 tx2와 xavier의 결과가 달라서 질문드립니다.
dimgrid<<<2,2,1>>>에 의해 Block의 갯수가 4개가 되고, warpid=0인 영역은 blockid가 (0,0), (1,0), (0,1), (1,1)인 곳에서 총 4개가 있을 것입니다.
하지만 Tx2에서 예제를 돌려본 결과 blockid가 (0,0), (1,0)인 곳에만 나옵니다.
혹시나 해서 xavier에서 실험을 해본 결과 총 4개가 나와 정상적으로 출력됩니다.
CUDA언어는 GPU구조와 상관 없이 출력되기 위해 grid-block-thread 구조를 가지므로 속도는 느리지만 동일한 결과를 출력해야하는데, 왜 tx2와 xavier가 같은 예제를 돌렸는데도 다른 결과가 나오는걸까요?
(혹시나 해서 <<<2,2,1>>> => <<<4,1,1>>>로 변경하여 돌려봤지만 여전히 tx2에서 blockid 2개만 출력되었습니다.)
답변 1
0
안녕하세요.
우선, CUDA 프로그래밍 강의를 수강해 주셔서 감사합니다.
제가 가진 하드웨어 환경에서는 말씀하신 내용을 재현할 수가 없어서,
정확한 답변을 드리기는 힘들다는 점은 양해를 부탁 드립니다.
말씀하신 상황에 대해서, 몇가지 가능성을 생각해 볼 수 있습니다.
우선, 정말로 TX2 에서 Thread Block 이 제대로 생성되지 않는다면?
TX2 모델이 출시된지가 몇년 되었다는 점을 고려하면,
실제로 이런 치명적인 문제가 있지는 않을 것이라고 생각됩니다.
있었더라도 출시 후 몇년이 지난 지금 시점에는 해결되었을 것으로 보입니다.
그러면, 제대로 생성되었다면, 왜 block id 는 제대로 나오지 않았을까?
추측할 수 있는 것은 CUDA printf 문장이 제대로 작동하지 않았을 가능성입니다.
CUDA 의 초기 버전들에서는 printf 문장이 원래 없었고,
현재도 printf 문장은 CUDA 나 GPU 가 직접 처리하기는 곤란한 구조입니다.
그래서, 가끔 이쪽에서 출력이 제대로 안 나왔다는 내용들이 나옵니다.
cudaDeviceSynchronize(); 함수를 kernel 수행 이후에 적절히 추가해서
해결했다는 보고들도 있고, CUDA hardware architecture에 따라 결과가 다르게 나와서,
CUDA hardware architecture 를 compile 시에 강제로 설정해서 해결했다는 보고들도 있습니다.
제공되는 소스코드들에서, print 출력 외에, 다른 계산 결과들은 제대로 나왔는지 체크가 필요하고,
아마도 TX2 모델에서의 CUDA 버그나, CUDA 프로그래밍 시에 유의할 점 같은 리포트들이 없었던 것을 고려하면,
printf 출력 상의 문제였을 가능성이 커 보입니다.
계속해서 다른 프로그램들에서도 계산 결과에 문제가 있다면, 다시 알려주시면 감사하겠습니다.
저도 TX2 하드웨어나 관련 내용을 계속 추적해 보겠습니다.
감사합니다.
26년2회 실기기출은 언제쯤...
0
19
2
이론 공부법 요약본 버전 업데이트 문의
0
15
2
코딩살구클럽 가입부탁드립니다
0
27
2
vs 디버그 옵션 설정
0
26
2
코딩살구클럽 가입 요청 확인부탁드립니다
0
30
2
54강 양자화의 끝판왕, 터보퀀트 (예정) 강의 업로드
0
29
1
블로그에 학습 내용 올려도 되나요?
0
32
1
5-S 테스트 케이스 질문
0
34
2
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
54
2
코살 문제풀이 환경
0
48
2
2 - T 오큰수 문제가 있는 것 같습니다.
0
43
1
추천 추가문제들
0
43
2
프로그래머스 코테 환경 관련해서 질문드립니다.
0
45
2
최신 엔비디아 CUDA 아키텍처에서의 결정적 변경 사항
1
41
1
ch .12 grid 설정 관련 질문 드립니다.
0
105
2
memcpy 시간 고려 시 gpu vs. cpu
0
120
2
common.cpp의 procArg 함수에 대해 질문이 있습니다.
0
158
2
Thread Block 개수에 제한이 있나요?
0
439
1
Warp를 동시에 돌린다는 말이 이해가 가지 않습니다.
0
337
1
매크로 함수를 쓴 이유
0
327
1
VS2022 컴파일 에러
0
394
2
global 변수가 cuda memory에서 사용되는 이유
0
394
1
Warp 갯수에 대한 고찰입니다....
0
574
2
컴파일 시의 <typeinfo> 관련 에러
0
612
1





