View
313
Download
0
Category
Preview:
Citation preview
Matlab을활용한병렬처리실습
권병천
목차
컴퓨터에서계량모형계산원리
Matlab에서병렬처리(실습)
VAR모형에대한병렬처리사례
더향상된기법은?
(SSD)
컴퓨터에서계량모형계산원리
중앙처리장치(CPU) 주기억장치(RAM) 보조기억장치(HDD)
메인보드
컴퓨터에서계량모형계산원리
1단계: 데이터이동
보조기억장치에 저장된모형코드 및 데이터를주기억장치로 이동 3
단계
: 결과
반환
4단계: 결과저장
2단
계: 계
산실
행Issue
각 장치의 속도차이로 인한 병목현상
각 장치의 용량차이로 인한 한계
작성한 모형이 대용량 데이터를 처리하는가?
혹은, 대량의 계산을 처리하는가?
아니면, 둘 다 포함되는가?
매트랩에서실제실행
주기억장치에올라온 변수
보조기억장치에존재하는 데이터
및 명령코드
출력 및한줄 명령어입력
명령코드 작성
매트랩에서실제실행function Fn_OlsExec(Y,X,printi)
T = size(Y,1);
X = [ones(T,1) X];
k = size(X,2);
X2 = X'*X;
X2 = 0.5*(X2 + X2');
XY = X'*Y;
bhat = X2\XY;
Yhat = X*bhat;
ehat = Y - Yhat;
sig2hat = ehat'*ehat/(T-k);
X2inv = invpd(X2);
varbhat = sig2hat*X2inv;
stde = sqrt(diag(varbhat));
b0 = zeros(k,1);
t_val = (bhat - b0)./ stde;
mY = meanc(Y);
TSS = Y'*Y - T*mY^2; % TSS
RSS = ehat'*ehat; % RSS
R2 = 1 - RSS/TSS; % R2
R2_ = 1 - (T-1)*RSS/(TSS*(T-k)); % AdjR2
SC = log(RSS/T) - k/T*log(T); % SC
AIC = log(RSS/T) - 2*k/T; % AIC
매트랩에서실제실행
GDP Nowcasting에서사용했던방법론을적용
엑셀 데이터 읽어드림
조합 생성 120C3
12개에서 하나씩 뽑아 Y 대입
280,840개에서 하나씩 뽑아OLS실행
For Loop의총횟수는약 337만(12˟28만)번이순차실행
약 15분소요
이를 병렬처리로 바꾼다면 얼마나 걸릴까?
매트랩에서실제실행
참고) 매트랩에서대용량엑셀실행시
Matlab에서 엑셀파일을 처리할 때 사용하는 함수인 ‘xlsread()’은 파일사이즈가클 경우 처리시간이 매우 늦으며, PC가 멈추는 현상이 발생하여 이를 보완할 수있는 기능을 개발
대용량 엑셀파일 처리 함수 f_BigXlsReader.m
Matlab 병렬처리
Matlab 병렬처리를 위해서는
PCT 툴박스가 필요
PCT 툴박스에서 사용할 worker의 수 설정
Worker의수는 CPU의 Core수에 맞춰 설정
만약 더 많은 수의 Worker가 필요하다면?
⇒ MDCS
Parallel Computing Toolbox
Matlab 병렬처리
MATLAB Distributed Computing Server
• Matlab에서 제공하는 MDCS를 이용하면 여러 PC를 묶어서 동시에 활용가능
• 따라서 여러 CPU에 명령을 할 수 있기 때문에 수십개의 Worker를 만들 수 있음
• 그러나, 하드웨어 및 소프트웨어 구입비용이 비싸며 관리 주체가 필요
※ 참고로 DSGE모형에서 사용하는 Dynare 툴박스 경우, MDCS 없이 Pstools를사용해 병렬처리를 지원(MDCS와 PStools는 다름)
Matlab 병렬처리
병렬처리에서는찍히는 순서가다르다?
지역변수와 전역변수를구분해서 사용해야함!
병렬처리를이용한 VAR모형
VAR모형 #1
VAR모형 #2
VAR모형 #3
VAR모형 #4
::
VAR모형 #25
VAR모형 #26
VAR모형 #27
GVAR모형Eigen > 1.00001
TOT = TOT+1
TOT == 5000
Y
Y
END
대략 2천만번의 VAR모형을 계산
컴퓨터에서계량모형계산원리
Matlab에서 단일처리시 CPU/RAM 사용량
보조기억장치에 파일을쓰느라 병목 발생
Matlab에서 병렬처리시 CPU/RAM 사용량
더향상된기법?
Vectorization
Python, Julia 이용Fortran Julia Python R Matlab Octave Java
gcc 4.8.2 0.3.2 2.7.6 3.1.1 R2014a 3.8.1 1.7.0_65
fib 0.7 2.39 79.95 553.57 4638.29 9764.56 0.9
parse_int 4.88 1.93 12.24 53.23 1580.52 9106.83 5.55
quicksort 1.31 1.24 33.23 255.73 54.43 1766.13 1.69
mandel 0.74 0.72 12.18 54.06 51.23 391.25 0.57
pi_sum 0.99 1.06 16.93 16.55 1.27 279.53 1
rand_mat_stat 1.15 2.14 19.04 16.65 10.48 35.92 4.01
rand_mat_mul 4.73 1.11 1.24 1.91 1.18 1.25 2.35
Recommended