다중 GPU에서 행렬의 곱 프로그램 구현과 성능 분석
Implementation and Performance Analysis of Matrix Multiplication Program on Multiple GPUs
- 주제(키워드) 도움말 Matrix Multiplication , GPU , CUDA
- 발행기관 강릉원주대 일반대학원
- 지도교수 도움말 김영태 교수님
- 발행년도 2019
- 학위수여년월 2019. 8
- 학위명 석사
- 학과 및 전공 도움말 일반대학원 컴퓨터공학과
- 원문페이지 36페이지
- 실제URI http://www.dcollection.net/handler/kangnung/000000010479
- UCI I804:42001-000000010479
- 본문언어 한국어
초록/요약 도움말
그래픽 장치인 GPU에서 실행될 수 있는 CUDA 프로그램은 수백 개의 core를 사용하여 병렬로 계산할 수 있기 때문에 일반적인 CPU 프로그램보다 성능이 뛰어나다. 단일 GPU 프로그램은 전체 데이터를 GPU 내부 스레드가 병렬로 처리하기 때문에 낮은 전력과 저비용으로 빠른 계산이 가능하다. 본 논문에서는 하나 이상의 GPU를 사용하여 행렬의 곱 프로그램을 구현하였으며, 행렬의 곱은 병렬화가 가능하고 계산량이 많기 때문에 사용하였다. 하나 이상의 GPU를 사용하는 프로그램의 GPU 연산은 단일 프로그램과 동일하며, 전체 데이터를 GPU 개수로 분할하여 각 GPU가 수행하는 연산 크기가 작아진다. 행렬을 분할하여 연산하는 부분은 병렬 행렬의 곱 알고리즘 중 Cannon 알고리즘을 사용하였다. 기존의 병렬 Cannon 알고리즘은 프로세스의 수가 정방() 형태에서만 가능하기 때문에 다중 GPU에서 사용하기 위해서는 정방형()의 개수가 필요하다. 하지만 다중 GPU의 사용이 제한적이기 때문에 본 논문에서는 짝수 개()의 GPU를 사용할 수 있도록 개선하였다. 본 논문에서 구현한 프로그램의 성능을 분석하기 위하여 1, 2, 4개의 GPU를 사용하였다. 그리고 노드사이에 발생하는 통신부하를 확인하기 위하여 2개의 GPU는 동일 노드의 GPU만 사용하는 경우와 서로 다른 노드의 두 GPU를 사용한 경우로 나누어 분석하였다. 성능 분석 결과 전체 데이터가 GPU 개수로 나누어지기 때문에 연산 시간은 감소하지만, 연산을 수행하기 위한 통신 시간이 GPU 개수에 비례하여 많아지게 된다. 하지만 통신 시간 증가량이 연산 시간 감소량에 비해 작기 때문에 GPU 개수가 증가할수록 성능은 선형으로 좋아진다.
more목차 도움말
Ⅰ. 서론 1
Ⅱ. 이론적 배경 3
1. GPU와 CUDA, MPI 3
2. 행렬의 곱 프로그램 5
1) 일반적인 행렬의 곱 5
2) 블록단위 행렬의 곱 5
3) Fox 알고리즘 7
4) Cannon 알고리즘 9
Ⅲ. 프로그램 구현 11
1. 단일 GPU 프로그램 11
2. 하나 이상의 GPU 프로그램 13
1) 기존 Cannon 알고리즘을 이용한 행렬의 곱 15 2) 개선된 Cannon 알고리즘을 이용한 행렬의 곱 18
Ⅳ. 실험 결과 22
1. 실험 환경 22
2. 성능 분석 23
3. 구성 요소 비율 분석 25
Ⅴ. 결론 29
참 고 문 헌 30

