CPU와 GPU의 헤테로지니어스 멀티코어 성능 최적화를 위한 하이브리드 병렬 프로그래밍
- 주제(키워드) 멀티코어 , 헤테로지니어스 , 병렬 , 프로그래밍 , OpenMP , CUDA , SIMD , race condition , false sharing , 고성능 , hybrid , 성능 , 최적화 , multi core , multi thread , parallel programming , performance optimization
- 발행기관 고려대학교 융합소프트웨어전문대학원
- 지도교수 민성기
- 발행년도 2013
- 학위수여년월 2013. 2
- 학위구분 석사
- 학과 융합소프트웨어전문대학원 임베디드소프트웨어학과
- 세부전공 임베디드소프트웨어학
- 원문페이지 57 p
- 실제URI http://www.dcollection.net/handler/korea/000000039363
- 본문언어 한국어
- 제출원본 000045746234
초록/요약
CPU는 싱글 코어 구조에서 클록 속도를 높여 성능을 향상 시키려는 노력을 해왔으나 한계에 도달하자 하나의 칩에 코어를 여러 개 둔 멀티코어 형태로 발전하였다. 한편 고성능 컴퓨팅 시스템을 구성하기 위해 CPU와 3D영상을 연산처리하기 위해 만들어진 그래픽카드 GPU와 결합하기에 이르렀다. CPU와 GPU의 결합은 CPU간의 결합보다 훨씬 더 좋은 성능을 보였고 전력의 사용량도 더 적었으며 비용면에서도 경제적이라는 장점을 가지고 있다. 점점 고성능 시스템을 요구하는 어플리케이션들이 나오고 있으며 빅데이터 시대가 도래함에 따라 이를 충족시켜 줄 수 있는 고성능컴퓨팅 방법이 연구 되고 있다. 이렇게 대용량 연산처리를 필요로 하는 고성능 어플리케이션을 위해 CPU와 GPU의 하드웨어적 멀티코어 자원을 효율적으로 활용하기 위한 프로그래밍 방법에 대해 연구할 필요하다고 생각되었다. 본 논문에서는 CPU와 GPU의 Heterogeneous multicore상에서 하드웨어 성능을 최대한 이끌어 내기 위해 기존의 병렬화 모델을 조합하고 최적화를 시도하였다. CPU상에서는 성능 향상을 위해 기존의 병렬 프로그램 모델인 SIMD와 OpenMP, OpenCL을 하이브리드한 병렬 프로그래밍 연구를 하였다. 또한 병렬프로그래밍 모델의 조합을 통한 CPU 최적화 과정에서 발생할 수 있는 경쟁상태(Race condition), 거짓 공유(False sharing)등 성능 저하를 일으킬 수 있는 요소에 대한 해결방안 연구를 통해 CPU의 성능을 최적화 하였다. 한편 GPU에서는 CUDA, OpenCL을 사용한 GPU의 최적화에 관한 연구를 하였으며 메모리 결합전송, 뱅크 충돌 해결, 분기문 발산 해결 등을 통해 GPU상에서 성능저하를 일으킬 수 있는 요소를 제거하여 GPU성능을 최적화 하였다. 특히 본 논문에서는 기존의 CPU와 GPU를 연동한 연산 수행방법과 다른 방법을 시도하여 연구를 진행하였다. 이렇게 CPU와 GPU를 최적화하고 조합하여 대용량 연산을 요구하는 고성능 어플리케이션을 위한 Heterogeneous multicore 성능 최적화 프로그래밍 방법을 제안하였다.
more목차
1. 서론------------------------------------------------------1
1.1. 연구배경------------------------------------------------------1
1.2. 연구목표------------------------------------------------------3
1.3. 논문의 구성--------------------------------------------------4
2. 관련연구 -------------------------------------------------5
2.1. SIMD-----------------------------------------------------------------5
2.2. GPU와 CUDA, OpenCL -------------------------------------7
2.3. MPI와 OpenMP -------------------------------------------------------9
2.4. 하이브리드 병렬 프로그래밍 모델------------------------------10
2.4.1. SIMD와OpenMP--------------------------------------------10
2.4.2. OpenMP와 Multi GPUs--------------------------------------13
2.4.3. MPI/OpenMP+CUDA+SIMD----------------------------------15
2.4.4. Race condition과 False sharing--------------------------------16
3. 설계 ----------------------------------------------------18
3.1. SIMD를 사용한 CPU최적화------------------------------------18
3.2. OpenMP를 사용한 CPU 멀티코어 최적화 설계 --------------------21
3.3. GPU성능 최적화를 위한 설계 ----------------------------------23
3.4. CPU와 GPU의 하이브리드 설계--------------------------------26
4. 실험 환경------------------------------------------------31
5. 구현 ----------------------------------------------------35
6. 실험 결과------------------------------------------------------41
7. 결론 및 향후 과제 ----------------------------------------------45
참고 문헌--------------------------------------------------------47

