ParaView

편집 역사 토론
소프트웨어 컴퓨터 그래픽스 마지막 수정: 2026-07-07 09:12:44

1. 개요[편집]

ParaView
종류오픈소스 과학 시각화·후처리
개발Kitware + Sandia·Los Alamos 국립연구소, ARL
기반 엔진VTK (Visualization Toolkit)
언어C++, Python(스크립팅)
라이선스BSD 3-Clause
최초 공개2002년
플랫폼Linux, Windows, macOS
병렬MPI 기반 분산 렌더링/처리

해석은 3일 돌리고, 결과 그림은 3분 만에 뽑는다. 그런데 그 3분을 위한 필터 조합을 찾느라 또 3일이 간다.

ParaView(파라뷰)는 VTK를 기반으로 만들어진 오픈소스 대규모 과학 데이터 시각화·후처리 애플리케이션이다. 전산유체역학 해석 결과, 구조해석 응력장, 기후 시뮬레이션, 의료 영상까지 — 격자 위에 정의된 스칼라·벡터·텐서 필드라면 무엇이든 읽어들여 등고선, 유선(streamline), 절단면, 볼륨 렌더링 등으로 시각화한다. 개발사는 미국의 Kitware이며, 원래 Sandia와 Los Alamos 국립연구소, 미 육군연구소(ARL)의 자금 지원으로 초대형 병렬 해석 결과를 처리하기 위해 태어났다.

핵심 특징은 이름 그대로 parallel, 즉 병렬성이다. 수십억 셀짜리 데이터를 노트북 한 대로 열려다 메모리가 터지는 상황에서, ParaView는 MPI로 데이터를 여러 노드에 쪼개어 분산 처리하고 화면에는 하나로 합쳐 보여준다. 슈퍼컴퓨터에서 돌린 해석 결과를 그 슈퍼컴퓨터 안에서 후처리하는 것이 원래의 설계 의도.

2. 역사[편집]

ParaView는 2000년에 Kitware와 Los Alamos 국립연구소의 협업 프로젝트로 시작해 2002년 첫 공개 버전이 나왔다. 목표는 처음부터 명확했다 — 국립연구소의 페타스케일 시뮬레이션 결과를 후처리할 수 있는, 병렬로 확장되는 시각화 도구.

  • 2000년 — Kitware·LANL·ARL 협업으로 개발 착수. 상용 도구 대신 오픈소스로 가기로 결정한 것이 신의 한 수였다.
  • 2005년 — ParaView 3.0을 위한 대대적 재설계 시작. Qt 기반 GUI와 클라이언트-서버 아키텍처가 이때 자리 잡는다.
  • 2007년 — ParaView 3.0 출시. 오늘날 우리가 아는 UI의 원형.
  • 2010년대 — Catalyst(인시츄 처리), 파이썬 스크립팅 강화, 볼륨 렌더링 고도화가 이어진다.
  • 현재 — 연 수 회 릴리스되며, 오픈소스 CAE 생태계에서 사실상의 표준 후처리 도구로 굳어졌다.

OpenFOAM에 기본 번들되는 후처리 도구가 바로 ParaView(paraFoam 래퍼)라는 점이 확산에 크게 기여했다. 공짜 솔버로 돌리고 공짜 뷰어로 본다 — 라이선스 비용에 시달리는 대학원생에게는 축복이다.

3. VTK — 심장부[편집]

ParaView를 이해하려면 그 밑에 깔린 VTK(Visualization Toolkit)를 알아야 한다. VTK 역시 Kitware가 개발하는 오픈소스 C++ 라이브러리로, 데이터 구조·필터·렌더링 파이프라인을 담당하는 실질적 엔진이다. ParaView는 이 VTK 파이프라인에 GUI와 병렬 처리, 클라이언트-서버 계층을 씌운 껍데기라고 봐도 크게 틀리지 않는다.1

VTK의 핵심 개념은 파이프라인이다. 데이터 소스 → 필터 → 매퍼 → 액터로 이어지는 흐름을 따라 데이터가 변형되며 흘러간다. ParaView에서 “필터를 적용한다”는 것은 이 파이프라인에 노드를 하나 추가하는 것과 같다. 각 노드는 요청이 있을 때만 계산되는 지연 실행(lazy evaluation) 구조라, 앞단 파라미터를 바꾸면 뒷단이 자동으로 갱신된다.

지원하는 격자 타입도 다양하다. 구조 격자, 비정렬 격자, 폴리곤 메시, 이미지 볼륨, AMR(적응 격자) 등 CAE에서 나올 법한 거의 모든 데이터 형식을 소화한다.

4. 주요 기능[편집]

ParaView의 진짜 힘은 필터에 있다. 대표적인 것만 꼽아도:

  • Contour / Isosurface — 특정 스칼라 값의 등고선·등가면 추출. 온도 500K 면을 뽑는다든지.
  • Slice / Clip — 임의 평면으로 자르거나 잘라내기. 내부 유동을 들여다볼 때 필수.
  • Stream Tracer — 벡터장에서 유선·유적선을 그린다. 카르만 와열 같은 와류 구조를 눈으로 확인하는 순간이 CFD의 낭만이다.
  • Glyph — 벡터를 화살표로, 텐서를 타원체로 표시.
  • Volume Rendering — 3D 스칼라장을 반투명하게 통째로 렌더링. GPU를 갈아 넣는다.
  • Calculator / Programmable Filter — 필드끼리 사칙연산하거나, 파이썬 코드로 임의의 새 필드를 정의.

여기에 시간에 따라 변하는 결과를 애니메이션으로 뽑고, 특정 지점의 값을 시간에 대해 그래프로 그리는 등, 후처리에 필요한 기능이 거의 다 들어 있다.

5. 아키텍처와 병렬 처리[편집]

ParaView는 클라이언트-서버 구조다. 사용자가 조작하는 GUI(클라이언트)와 실제 데이터를 처리하는 서버(pvserver)가 분리되어 있어, 무거운 데이터는 원격 클러스터의 서버가 처리하고 클라이언트는 렌더링 결과만 받아 보는 것이 가능하다. 데이터가 100GB인데 노트북 RAM이 16GB여도 문제없다는 뜻.

병렬 처리는 데이터 병렬(data-parallel) 방식이다. 전체 도메인을 여러 프로세스에 분할(domain decomposition)하고, 각 프로세스가 자기 몫만 필터링·렌더링한 뒤 마지막에 이미지를 합성(compositing)한다. 전산유체역학의 병렬 솔버가 도메인을 쪼개 푸는 것과 완전히 같은 철학이다.

한 걸음 더 나아간 것이 Catalyst(인시츄, in-situ 처리)다. 해석이 끝난 뒤 결과 파일을 저장하고 다시 읽는 대신, 솔버가 도는 도중에 메모리 상의 데이터를 곧바로 시각화한다. 페타스케일에서는 결과를 디스크에 다 쓸 수조차 없기 때문에2 이런 접근이 필수가 된다.

6. 현업의 현실[편집]

파이썬 스크립팅(pvpython, pvbatch)을 익히면 ParaView의 세계가 달라진다. GUI에서 마우스로 필터를 조합하다 보면 손목이 나가는데, 파이썬으로 후처리 스크립트를 짜두면 새 해석 결과가 나올 때마다 같은 그림을 자동으로 뽑을 수 있다. 사실 GUI에서 하는 모든 조작은 파이썬 API 호출로 번역되며, ParaView는 친절하게도 조작 내역을 파이썬 트레이스로 기록해준다.

다만 진입 장벽은 있다. 필터가 워낙 많아서 원하는 결과를 얻는 조합을 찾는 것 자체가 노하우이고, 대규모 데이터에서는 필터 순서 하나로 성능이 몇 배씩 차이 난다. 그래도 검증 및 확인을 거친 해석 결과를 남에게 보여줄 때, 잘 만든 ParaView 그림 한 장이 발표 자료의 승패를 가른다는 것은 CAE 판의 오랜 진리다.3 경쟁자로는 Tecplot, EnSight, VisIt 등이 있지만, “공짜 + 병렬 + VTK 생태계”라는 삼박자를 갖춘 ParaView의 아성은 견고하다.

7. 관련 문서[편집]

8. Footnotes[편집]

  1. 물론 이 “껍데기”를 만드는 것이 결코 쉬운 일이 아니다. 병렬 렌더링과 클라이언트-서버 통신은 그 자체로 하나의 거대한 소프트웨어 공학 과제다.

  2. 예를 들어 매 타임스텝마다 수 TB씩 쏟아지면, 저장할 디스크도 없고 저장할 시간도 없다. 그래서 “저장하지 말고 그 자리에서 봐라”가 된 것.

  3. 반대로 무지개색(rainbow) 컬러맵을 무비판적으로 쓴 그림은 시각화 커뮤니티에서 은근히 조롱받는다. 요즘은 지각적으로 균일한 viridis 계열이 권장된다.