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 하드웨어나 관련 내용을 계속 추적해 보겠습니다.
감사합니다.
코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다
0
0
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
Warp 갯수에 대한 고찰입니다....
0
540
2
컴파일 시의 <typeinfo> 관련 에러
0
585
1

