2014/03/27

CUDA OddEvenSorting문제점 발생

http://ptjoker95.blogspot.kr/2014/03/cuda-sorting-oddevensorting.html

 뭐 알고리즘도 맞고, 결과도 대강맞는 것 같아서 냅두고 다음 정렬로 넘어가려고 잠깐 봤는데, 결과가 이상하게 나오는 겁니다. ㅋㅋㅋ

 정렬이 잘 되다가 중간에 잘리고 다른 결과가 나옵니다. 예를 들면,


0 0 0 0 0 1 2 2 2 2 2 ... 495 495 495 496 0 0 0 0 01 1 1 1 1 ...

 이런식으로요. 그래서 알고리즘 상에 문제가 있는 줄 알고 뚫어지게 봐도 이상은 없구요. 그래서 혹시나 해서 데이터를 줄여보니, 되더군요. 정확히는 4095 개가 한계이구, 그것보다 커지면 여지없이 잘못된 결과가 나옵니다.

 CUDA 강의 중에 작업 순서에 관한 설명이 나오더니 이건가 봅니다.

 그러니까 GPU가 돌아갈 때 모든 데이터를 한꺼번에 처리하는 게 아니고, 블럭별로 몇개 블럭씩 (제 경우에는 블럭 사이즈가 512이니까, 4개씩) 처리한다고 하던데, 그래서 문제가 발생한 것 같습니다. ㅋㅋ

 물리적 한계라는 게 이런거로군요.

댓글 없음: