한국어
스터디룸
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print

예전에 스터디 룸쪽에 써볼려다가 거기 쓸려니 제대로 써야할거 같은데 너무 길어서 쓸려다가 말았고, 그래서 자유 게시판에 쓰는데 뭔가 묻힐거 같지만 -_-;;; 

여하튼 졸업 작품으로 GPU 응용을 추천해볼려고 합니다.  

본 내용은 3학년 2학기 들어가는 사람에게도 이해가 안갈수도 있습니다? (....)


사실 전자통신공학과는 의외로 소프트웨어를 많이 써요. 근데 대부분 졸업 작품 보면, 대세는 안드로이드 같아요 -_-; 뭐 보이는게 있으니 확실히 좋긴하겠는데.

그래서 컴퓨터 공학쪽이나 컴퓨터 소프트웨어 과는 사실 졸업 작품을 모하는지는 잘 모르겠지만,

암튼 대세를 따라서 안드로이드를 따라서 하는것도 좋겠지만 갠적으로 GPU 같은것도 좋은 아이템 같은데... 한번 보죠^^;;;


GPU는 코어가 많습니다. 그래서 병렬화를 통한 가속에 유리해요 (참고로 지포스를 이용한 CUDA 라이브러리를 써야합니다)


얼마나 유리하냐구요? 코어가 1000개 넘어가는거 무지 많아요 최근 출시된 GTX 780는 2304개 있다고 하더라구요. 컴퓨터에 끽해야 4개 있는 것과는 다르죠.

물!론! 컴퓨터께 훨씬 빠릅니다. 비행기와 버스의 차이? 하지만 코어가 2304개를 쓴다면? 못해도 1000개만 쓴다면? 


비행기와 버스가 한 지점을 향해서 단순히 짐을 나른다고 생각하면 비행기가 여러번 나르는거보다 버스 수천대가 한번에 나르는게 좋을수있고 

이걸 토대로 CPU와 GPU를 비교해볼 수 있겠죠







이쪽을 공부하려면 일단 책은 CUDA by example 한글로 번역된 책을 추천하구요 (글케 안두꺼워요;) 

그냥 C알고 CUDA 라이브러리및 GPU 구조만 이해하면 할수 있습니다.

위의 책이  아니어도 CUDA 공식 사이트가면 가이드라인 있는데 영어로 되어있지만 그것도 볼만합니다.


그리고 만들때 꼭 주의하실점!!!  (지금 이해 안가도 이런게 있구나 하고 프로젝트 '주제를 잡을때' 꼭 고려해야할 사항입니다)

1. Independency : 각각 연산해야할 주체가 독립적이어야합니다. 예를들어 벡터의 내적 곱들 경우 각각 엘레먼트들을 곱하는 부분 경우엔 독립적이죠.

                          (ex (1,2,3.......... 졸라 마니 ) dot product (3,4,5........... 엄청 마니)  = 1*3 + 2*4 + 3*5   ............... 엄청 마니

                               둘의 차원수 (그니까 엘레먼트 수라고하죠 쉽게) 가 무지 많다면 확실히 빨라지겠죠? 

                               더하는 것도 Reduction이라는 기법으로 어느정도 처리가능한데.. 그건 좀 공부하셔야 암.


                         (ex2 위의 짐나르는 거는 각각 짐들을 가져오는건 Dependent하지 않으니 Independent하고. 그래서 병렬적으로 버스 수천대가 막 날라도 되겠지요?)


2. Offloading : GPU는 일반적으로 CPU가 접근하는 메모리에 직접 접근할수 없어요... 그래서 원하는 데이터를 GPU로 Copy한후 연산을 시작하고, 

                    연산 끝나면 다시 CPU로 줘야합니다. --> 이로인한 시간 소모가 필요하죠, 즉 카피량에 비해 연산을 많이 하는거라면 GPU 적용에 적합합니다

                      (위의 벡터 예제 경우에는 연산량이 너무 적어서 진짜 심하게 많지 않는한은 효과가 별로없음 오히려 느려질수도 있음... 실제 측정해봄)



그리고 공부 좀 더 한사람들에게 직접 구현할 때에 더 좋게 만들기 위해서 추가로 고려해야할 사항을 말씀드리면,

1. Concurrent memory copy & calculation : 메모리를 일부 크기 만큼 보내면서 동시에 계산을 할 수 있도록 하는 방법인데... 이것도 공부하셔야 암...  

                                                             성능 향상에 매우 중요. (Offloading으로 인한 성능 손실이 어느 정도 복구됨 ^^;;)

2. Shared memory : 간단하게 GPU의 캐쉬라고 보면됩니다. 제한점은 있지만 의도적으로 이 메모리를 사용할수 있기 때문에

                             최대한 활용할수 있도록 프로그래밍한다면 속도가 더 빠를겁니다.






그리고 GPU로 만들면 굉장한 케이스를 말씀드릴께요. 둘다 카이스트 논문이고, 제가 있는 연구실은 아닙니다 ^^;


일단 국제 세계 탑 논문에서 Packet Shader라는 논문이 있어요. 이게 우리나라에서 네트워킹 분야에서 몇십년만에 나온 세계 탑 논문인데요.

간단히 GPU를 이용해서 라우터성능을 극대화 시킨 논문이라고 보면 되시겠습니다. 

핵심적으로 이게 가능한 이유는 패킷을 보낼때 각각 패킷이 서로 독립적이잖아요? 그럼 패킷이 100개 들어오면, GPU 코어와 메모리가 충분하다면 100개를 한꺼번에 연산처리해버리기 때문에, 라우터의 성능을 극대화 시켰죠. 그래서 세계 최고의 Software-based router 성능을 자랑합니다. 

(과장 아니고 진짜 1등 -_-;; 이전엔 프로그래밍 베이스 인거는 CPU로 처리해서 따라올수가 없음;;;)

1개의 CPU로 처리한다면, 1개 처리하고 1개 처리하고 1개처리하고 ... -_-;


또 이 연구실 논문엔 Kargus라는 논문이 있는데, 요놈은 보안관련이에요. 사실 정확히 아는바는 없지만, 요점은 이렇습니다

컴퓨터로 들어오는 모든 패킷들을 감시할때, 여기 역시도 모든 패킷이 independent하기 때문에 100개의 패킷에 대해 100개를 모두 병렬적으로 처리해버리는거죠. 

나머지 얘기는 위와 비슷합니다.

여기도 보안관련 세계 탑 컨퍼런스에 내서 잘나가는 논문이죠 -_-;



그외에 추가 예제로는 Matrix 연산 관련으로 정말 GPU 마니마니 씁니다 -_-; 이건 정말 Independent한 부분이 많거든요. 



그리고 마지막으로 위에도 썼지만 가장 중요한것을 얘기하면, 무엇보다 연산할 내용이 모두 'Independent' 해야합니다. 혹은 그렇게 만들 수 있는 부분이 알고리즘 적으로 있는지 따져보고 적용을 해야합니다. 뭐...... 그래픽 픽셀 다루는 것도 모두 독립적인데. 사실 GPU를 여기다 적용하는건 살짝 반칙이지만, 학부 수준에서 응용 및 아이디어가 나쁘지 않다면 괜찮을거 같아요 ^^; 

그리고 Offloading은 아주 심플한 연산을 하더라도, 연산해야할 데이터 량만 많으면 가속이 됩니다. (위의 Vector 내적 곱도 데이터 량이 많으면 가속되는 수준)




주저리 주저리 써놨지만, 아무도 안볼거 같고 어떤 천재분이 와도 GPU 모르시는분이 봐서 이걸 먼 내용인지 이해하실까도 의문임... -_-;

이제 그만 글싸고 공부해야징 -_-;


PS. 국내는 모를까... (제가 국내 논문은 안봐서리) 국제 논문 낼때는 추천하지 않습니다. 요즘 하도 이쪽 하는 사람들이 많아서 .... 

     CUDA 라이브러리 체계가 제대로 갖추어진지 불과 5년만에 핫이슈 되면서 왠만한 사람들이 생각할수 있는 어지간한 내용이 논문화 되어버림 




  • ?
    흙군 2013.08.15 22:22 (*.248.165.194)

    여하튼 많은 연산해야할 데이터가 있고 모두 Independent한 경우 병렬적으로 처리하는 방법 정도로 기억하시고, 그런거 관련 아이디어가 있으시면 적용하려는 것에서 시작하는 것도 나쁘지 않은거 같아요 (물론 교수님과 상담하시길)

  • ?
    광장_f4e02e (글쓴이) 2013.08.16 02:55 (*.161.205.9)

    양질에 글이기 때문에 스터디룸으로 이동되었습니다.:D

  • ?
    흙군 2014.03.30 15:37 (*.248.165.194)

    글쓴인데. 지워주세용 ^^ 내가 쓴건데 못지우네요.

  • ?
    광장지기 (글쓴이) 2014.03.31 14:51 (*.96.12.145)

    양질에 정보라... 지워야만하는지요?


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 안녕하세요. 전문예술단체 극단 디딤돌입니다. 음악연극 <행복을 찾아서> 공연 초대이벤트 문의합니다. file 단미여자 2018.05.30 9
공지 [라식/라섹] 여름방학 사전예약 대학생 추가할인 - 이벤트 기간내 신청자 50%할인 1 file 광장지기 2017.06.15 29
공지 [애플] 애플과 광장이 제휴합니다.(Apple on campus) file 광장지기 2017.02.07 183
공지 기타 스터디룸이 문을 열었습니다.(익명해제) 익명 2013.07.31 14160
공지 0
19 영어 [신촌] 하루 3시간씩 시사상식도 얻고 영어회화도 하실 분 모집합니다 ㅇㅇㄹ랑 2018.08.14 35
18 기타 [종로] 무료 자소서 첨삭 스터디 모집 file 플래니 2018.06.25 10
17 공학 [ 오라클 데이터베이스관리자 전액국비지원교육 ] 아이티윌GN 2018.03.06 49
16 기타 [무료 제공] sk그룹 채용담당자가 진행하는 하반기 전략 컨설팅 file 취업방정식연구소 2017.07.16 30
15 기타 supercollider 다룰 줄 아시는 분 찾고 있습니다. seo 2015.06.16 374
14 기타 광운대 레포트 표지 file 마리오 2014.06.25 6530
13 기타 코세라 추천합니다.(스탠포드 강의) apline88 2014.03.23 3442
12 기타 (기타)우리나라 위기의 건설업과 그 중요성에 대해 알아보자 넥서스 2014.02.01 3651
11 기타 (취업)우리나라 해운업의 위기와 중요성 넥서스 2014.01.31 5835
10 기타 [기업분석] 셀트리온 사기관련 기업분석 넥서스 2013.12.31 3623
9 기타 일본어 번역모임 vio9let 2013.12.23 4868
8 공학 혹시 리눅스쪽 아시는 분 있나요? 2 데니스 2013.08.17 7019
7 영어 타임즈 페이스북 관련된 글 광장_f55b1e 2013.08.16 7105
» 공학 컴퓨터 프로그래밍으로 졸업 작품할려는분 GPU같은거도 한번 응용을 고려해보세요. 4 광장_f4e02e 2013.08.15 8279
5 법학 곽윤직 채권총론 서브노트 1 file 광장_6064e6 2013.08.10 7826
4 기타 추천 무료 대학교 온라인 강좌 (광고 아닙니다 ㄱ-...) 3 익명 2013.08.08 8401
3 기타 학교내 열람실 1 익명 2013.08.05 40570
2 수학 선형독립 (Linear Indepence) 4 file 익명 2013.08.02 63040
1 수학 연립방정식의 해 구하기와 행렬식의 쓰임 (Solving simultaneous equations & use of determinant) 4 익명 2013.08.01 12050
Board Pagination ‹ Prev 1 Next ›
/ 1

Designed by sketchbooks.co.kr / sketchbook5 board skin

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5