1. Abstract
해석제어(유동) 옵션은 유동해석에 사용되는 수치해석 방법을 선택하는 옵션입니다. 해석의 목적에 따라 선택하여 사용할 수 있으며 계산의 정확도나 속도에 영향을 미치게 됩니다. 사용방법은 옵션의 해석/결과 탭에서 각종 해석제어 방법을 선택할 수 있습니다.
2. Technology
2-1 프로세스 개수
프로세스 개수는 계산에 사용하는 CPU core의 수를 결정해 줍니다. 현재 가지고 있는 컴퓨터의 코어 개수를 확인하기 위해서는 윈도우 하단부 작업표시줄에 우클릭을 한 후 "작업관리자 시작"을 클릭합니다. 그 후 성능 탭을 선택하면 CPU사용현황에서 코어의 개수를 확인할 수 있습니다. 최근에 나오는 PC는 쿼드(4) 코어가 대부분입니다. 쿼드 코어 이지만 8개로 표시되는 경우가 있습니다. 이것은 하이퍼 스레딩(Hyper threading)기능이 켜있는 경우이며 CMOS에서 끌 수 있습니다.
[그림 1] CPU core 개수
2-2 GPU 자원 사용
GPU는 컴퓨터에서 그래픽 처리를 담당하는 장치입니다. 사용목적의 차이 때문에 GPU와 CPU는 서로 다른 방향으로 개발되어 왔습니다. CPU의 경우 코어 하나의 성능을 발전시키는데 집중 했던 반면, GPU는 그 목적상 여러 개의 코어로 단순계산을 병렬화 하여 계산하는데 적합하도록 개발되어 왔습니다.
최근의 기술발전으로 GPU는 2,000개에 달하는 코어를 하나의 칩에 집적시켜 성능을 극대화하고 있습니다. GPU 칩 하나가 하나의 클러스터 정도의 성능을 낼 수 있으며, 최근 출시된 최신 GPU의 이론 성능은 불과 몇 년 전의 웬만한 슈퍼컴퓨터 성능에 필적합니다.
[그림2] GPU의 구조
이러한 GPU의 기능을 활용하기 위해midas NFX CFD에도 GPU 연산이 적용되었습니다. midas NFX CFD에서는 연립방정식 해법을 가속화 하기 위해서 반복해법 솔버(iterative solver)와 프리컨디셔너 (Preconditioner)에 GPU 연산이 적용 되었습니다. 효율적인 GPU 연산을 위해 프리컨디셔너는 GPU AMG(Algebraic Multigrid) 프리컨디셔너를 사용하게 됩니다.
GPU를 사용하여 계산하려면 GPU자원 사용을 선택하면 됩니다. 하지만 일반적으로 사용되는 그래픽카드를 사용할 경우는 계산이 오히려 느려질 수 있습니다. GPU를 사용하여 계산할 경우 배정도 실수(double-precision)를 지원하는 테슬라급 이상의 그래픽카드를 사용해야 합니다. 다음 표는 계산용 GPU에 대한 권장사항 입니다.
[표1] 계산용 GPU 권장사항
구분 | 권장사항 |
NFX 설치버전 | 64 bit |
권장 GPU 모델 | Tesla C20xx, Tesla K20 계열 |
CPU | 쿼드 코어 이상 권장 |
RAM | GPU 메모리보다 많은 메모리를 장착(6GB 이상) |
Driver | 최신 Nvidia 그래픽스 드라이버 |
기타 | 화면 출력용 GPU 1 + 연산용 GPU |
적절한 사양의 GPU를 사용하면 일반 계산속도의 2~3배 가량의 가속효과를 볼 수 있습니다. 반복해법 솔버 계산 측면에서만 보면 수십 배까지 가속되지만 행렬 구성단계(matrix assemble)에서는 CPU를 사용하기 때문에 전체적인 속도는 2~3배 정도가 됩니다.
[그림 3] GPU에 의한 계산시간 단축
GPU의 경우 수많은 코어가 함께 동작하면서 병렬연산을 수행하는 장치이기 때문에 CPU 결과와 약간의 차이가 있을 수 있습니다. 이것은 컴퓨터의 유효숫자와 관련된 일반적이고 정상적인 현상으로 오차 범위 내의 결과 차이일 경우 무시하여도 무방합니다. 하지만 오차범위 이상으로 크게 차이가 날 경우 GPU 연산에 오류가 있는 것으로 생각되므로 관련 모델에 대한 테스트가 필요합니다.
특히 ECC 기능이 없는 GPU나 Tesla에서 ECC 기능을 없앤 경우 오류가 있을 가능성이 있습니다. ECC기능이란 연산의 정확도를 향상시키고 GPU의 안정화를 위한 추가적인 옵션입니다. 이 기능을 사용하면 GPU메모리가 700Mbyte정도 줄어들지만 안정성과 정확성 때문에 수치해석에서는 사용하시는 것을 권장합니다.
2-3 고속 어셈블 사용
어셈블이란 요소단위로 생성된 방정식을 요소간의 관계를 고려하여 연립방정식으로 만들어주는 과정입니다. 기본 값은 요소기반 구성(elemental assemble) 방식을 사용합니다. "고속 어셈블 사용"을 체크하면 절점기반 구성(nodal assemble) 기능이 활성화 됩니다. 절점 기반으로 연산이 진행되고 요소망 구성 방식에 비해 더 빠른 속도(3~4배)로 어셈블이 가능해 집니다. 다만 정확도가 다소 저하되는 단점이 있습니다. 따라서 대략적인 값을 빠르게 파악할 경우 사용하는 것이 좋습니다. GPU 솔버의 경우 연립 방정식 계산만 빨라지므로 어셈블 과정까지 가속하려면 고속 어셈블을 사용하면 됩니다.
😥 미리 보기는 여기까지!
내용을 이어서 보고 싶다면,
아래 정보를 입력해 주세요.