현금흐름 속도측정

1. 속도측정용 엑셀 로직을 분석하여 GPGPU를 활용한 병렬프로그램 구현.
  • 구현방법 : C++, C++AMP, CUDA
  • 실행 보유계약 건수 : 9,994,530 건 (약 천만건)
  • 3단계로 구현
    • 데이터 로딩 : CPU 에서 처리(inforce.csv 파일로 된 보유계약을 로딩)
    • 연산
      • C++ : CPU 연산(비교를 위해 1 core만 사용해서 구현) 
      • C++AMP : GPGPU 연산
      • CUDA : GPGPU 연산
    • 결과 쓰기  : 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일 

4. 로직 구현에 대한 값 검증
  • 엑셀 내부에 존재하는 보유계약건(70만건)으로 실행하므로 inforce.csv 파일과 내용이 다름. 따라서 값 검증을 위해 엑셀에 포함되어 있는 보유 계약건을 csv파일로 만들어 값 검증에 사용

  • 엑셀 값 비교를 위한 캡쳐 화면

5. 이외의 장비에서 테스트한 결과

  • 노란색으로 표시된 장비는 같은 장비로 멀티 디바이스의 경우를 밑에 추가





댓글

이 블로그의 인기 게시물

3d 안테나 패턴 생성

GPGPU를 활용한 전파 영역분석(singleKnife, delta bullington)