Loading
2015. 10. 30. 22:55 - 성돌

Gerris에서 병렬계산(parallel computing) 하는 방법




다른 CFD 소프트웨어처럼 Gerris도 병렬계산을 함으로써
계산속도를 높힐 수 있게 해준다.

병렬계산이란, 여러개의 cpu를 사용하는 것을 말하는 데
한 시뮬레이션을 하나의 cpu를 사용하는 것보다 여러 개의 cpu로 나누어서
수행하면 속도가 훨씬 빨라질 것이다.

Gerris에서는 mpirun이라는 명령어를 사용해서 병렬계산을 수행한다.
여기서 mpi는 Message Passing Interface의 약자로
여러개의 컴퓨터들 간에 정보를 공유하는 방법의 종류를 지칭한다.

참고로, mpirun이라는 건 Gerris명령어가 아님은 기억해두자.



Gerris에서 병렬계산을 하는 방법은 2가지가 있는데,

첫번째로는 내가 별로 안 좋아하는 방법으로
시뮬레이션 박스(Gfsbox) 하나하나에 컴퓨터를 수동적으로 매치시켜주는 것이다.

즉, 10개의 컴퓨터를 사용하고 싶다면,
10개의 시뮬레이션 박스를 내가 일일히 만들어줘야 하는 것이다.

이는 내가 별로 좋아하지 않는 방법이기에 여기서는 설명하지 않도록 하겠고,
궁금하다면 홈페이지 설명을 참고하도록 하자.



두번째는 컴퓨터보고 알아서
내 시뮬레이션 박스를 쪼개고 자동적으로 컴퓨터를 대응시키게 하는 것이다.

예를 들어, 각각의 시뮬레이션 box를 42=16개로 쪼개어,
이 16개로 쪼개진 시뮬레이션 공간 조각들을 총 10개로 병합한 후에
mpirun 명령어를 이용하여 10개의 컴퓨터로 계산하게 하는 방법이다.


위에서 '-m'은 병렬계산과 관계없이 왠만한 시뮬레이션엔
Define명령어를 사용하기에 적어준 것이다.
자세한 설명은 튜토리얼을 참고하자.


'-s 2'는 각각의 시뮬레이션 box을 42=16
개로 쪼개는 것을 의미하고,
이 숫자는 당연히 나중에 시뮬레이션을 할 실제 컴퓨터 숫자보다 커야한다.

좀 더 자세히 설명하자면, 내가 설정한 gfsbox가 2개였다면
각각의 box가 16개로 쪼개지기에 총 32개의 시뮬레이션 조각 박스가 생성되게 된다.

그리고 쪼개진 결과를 '
파일이름.gfs > Splitted.gfs' 명령어에 의해서 Splitted.gfs에 저장한다.


그 이후, 이 전체의 조각박스를 10개의 시뮬레이션 박스로 병합하는 것이
두번째 줄에 있는 '-b 10'에 있는 명령어이다.

그리고 병합된 결과를 'Splitted.gfs > Parallel.gfs' 명령어에 의해서 Parallel.gfs에 저장한다.

그리고 마지막 줄에서 mpirun명령어의 '-np 10'옵션에 의해서
10개의 컴퓨터로 연산을 수행하게 한다.