현금흐름 속도측정
1. 속도측정용 엑셀 로직을 분석하여 GPGPU를 활용한 병렬프로그램 구현.
2. 테스트 장비 사양
3. 엑셀로직을 실행했을 경우
4. 로직 구현에 대한 값 검증
- 구현방법 : C++, C++AMP, CUDA
- 실행 보유계약 건수 : 9,994,530 건 (약 천만건)
- 3단계로 구현
- 데이터 로딩 : CPU 에서 처리(inforce.csv 파일로 된 보유계약을 로딩)
- 연산
- 결과 쓰기 : CPU 에서 처리(csv로 생성)
- 결과
- 데이터 로딩과 결과 쓰기는 CPU에서 처리하므로 시간이 비슷함
- 데이터로딩 : 약 13초
- 결과 쓰기 : 약 18.5초
- C++ 연산
- 약 198초 (3분18초)
- C++AMP 연산
- 약 9.5초
- CUDA 연산
- 약 5.1초
- 각각의 결과 파일은 inforce_cpp.csv, inforce_amp.csv, inforce_cuda.csv 가 생성되며 값에 대한 비교는 같은 것으로 확인했으며, 각각 파일 사이즈를 확인하면 똑같은 결과 값이 나온 것을 짐작할 수 있다.
- 결과는 컴퓨터 사양에 따라 달라질 수 있다.
2. 테스트 장비 사양
- 프로세서 : Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz (4 CPUs)
- 메모리 : 8G
- DirectX : 11버전(C++ AMP로 구현할 경우 관련됨)
- 그래픽카드 : GeForce GTX 970
- 그래픽카드 메모리 : 4G
3. 엑셀로직을 실행했을 경우
- 시간 관계상 1000건의 연산 후 종료
- 초기에는 빠르지만 시간이 갈수록 느려지는 현상이 발생
- 1000건 연산에 걸리는 시간은 약3분33초(213초)
- 만약 1000만건을 실행한다면 다음과 같은 시간이 소요됨
- 2130000초 => 35500분 => 591.6667시간 => 24.6527일
- 엑셀 내부에 존재하는 보유계약건(70만건)으로 실행하므로 inforce.csv 파일과 내용이 다름. 따라서 값 검증을 위해 엑셀에 포함되어 있는 보유 계약건을 csv파일로 만들어 값 검증에 사용
- 엑셀 값 비교를 위한 캡쳐 화면
댓글
댓글 쓰기