태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Bit count with CUDA (T_T)

Tech 2010. 5. 16. 23:42

왠지 빨리 계산해보고 싶은게 있어서 이틀쯤 고민해보다가, 알고리즘으로는 내 머리에서 더 나오지 않아서 하드웨어적인 도움을 받아보는건 어떨까 생각했다. 틀은 CUDA API로 쉽게 만들 수 있을 것 같아서 메인함수에 꾸역꾸역 밀어넣기로 뚝딱.

그런데, 아무리 개떡같은 코드에 카드도 9500GT(OTL)라지만 GPU Accelerated가 CPU(코어 하나만 사용)보다 느리면 어뜩해. ㅠㅠ

코드 불량이라고 생각하고 싶지만, SDK 에 포함된 벡터계산 샘플 코드의 1. GPU에 던져서 계산, 2. CPU로 재계산해서 검증, 부분의 시간을 재어봤더니 여기도 GPU부분이 CPU보다 느렸다. 코드만의 문제는 아니라는 것.

음... 뭐 작업을 쪼개서 양쪽을 다 쓰면 결과적으로 빨라지긴 할 것 같은데 x100 faster 이런건 좀 무리일려나 싶다. 코드가 바보라도 말이지, GPU/CPU 양쪽다 똑같은 바보코드니까 대강 계산 속도에 비례해서 나와줘야 할 것 같은데 ...

... 9500GT 가 ㅂㅅ이라서 그런걸까? 라는 생각으로 다음주에 회사에 있는 Tesla를 꿀꺽-_-/ 해서 놀아봐야겠다.

Elapsed time with GPU: 0.87000s
Elapsed time with CPU: 0.66000s

대략 2억개 가량의 바이트에서 0번~7번 비트에 등장하는 1이 몇개인지 세는 작업이다. CPU 로 계산할 때에는 적당한 단위로 테이블 룩업하면 더 빨라질 수도 있을 것 같긴 한데 ... CUDA님은 어떨지 테스트를 한번 해볼까.

혹시 이 외에 N배 더 빠르게 할 수 있는 방안이 있으신 분은 저에게 하겐다즈 아이스크림을 요청하세요.
.
--
P.S CPU에서 테이블 참조를 했더니 2배쯤 빨라졌다. CUDA 커널에서 테이블 참조를 했더니(어디서 합치는지에 따라 몇가지 variation을 만들어서 해봤지만) 5배쯤 느려졌다. ... ㅠㅠ CPU: 0.28XXXX 정도... CUDA레퍼런스에

<캐시 참조보다 재계산이 빠를 수 있다>

고 자랑스럽게(-_-) 쓰여있던데, 느낌이 새롭다. 음...

<캐시 참조가 재계산보다 느릴 수 있다>

랑 똑같은 말이긴 한데.
tags : , , , , ,
Trackbacks 0 : Comments 3
  1. Favicon of http://www.wildartist.org WILD ARTIST 2010.05.17 09:40 Modify/Delete Reply

    오 이게 진짜면 대박이네요 ㅎㄷㄷ
    근데 CPU랑 GPU 테스트하실 때 쓰레드 하나로 돌리신건가요?

    • Favicon of http://deisys.net dgoon 2010.05.17 09:43 Modify/Delete

      CPU 는 스레드 하나, CUDA 한테 시킬때는 블럭당 128~512개 정도에, Grid 하나에 블럭을 3~4만개정도 ... ? 코드와 하드웨어 양쪽 다 구려서그러겠지?

  2. Favicon of http://9509udisglutensfree.com/nikeus.php nike shoes 2013.07.17 01:17 Modify/Delete Reply

    사람들은 죽을걸 알면서도 살잖아 .사랑은 원래 유치한거에요

Write a comment