파라뷰

파라뷰(ParaView)는 상호작용적인 과학적 시각화를 위한 오픈 소스 다중 플랫폼 응용 소프트웨어이다. 데이터 세트의 원격 시각화를 용이하게 하기 위한 클라이언트-서버 아키텍처를 갖추고 있으며, 대규모 데이터 세트에 대해 상호작용 가능한 프레임 속도를 유지하기 위해 레벨 오브 디테일(LOD) 모델을 생성한다. 이 애플리케이션은 시각화 툴킷(VTK) 라이브러리를 기반으로 구축되었다. 파라뷰는 분산 메모리 또는 공유 메모리 아키텍처 멀티컴퓨터 및 클러스터에서 데이터 병렬성을 구현하도록 설계된 애플리케이션이다. 또한 단일 컴퓨터 애플리케이션으로도 실행할 수 있다.

 요약 
파라뷰는 오픈 소스이며 다중 플랫폼 데이터 분석 및 시각화 애플리케이션이다. 파라뷰는 과학 데이터 세트를 분석하고 시각화하기 위해 다양한 커뮤니티에서 널리 알려져 있고 사용된다. 질적 및 양적 기술을 사용하여 데이터를 분석하기 위한 시각화를 구축하는 데 사용할 수 있다. 데이터 탐색은 3D에서 상호작용적으로 수행하거나 파라뷰의 배치 처리 기능을 사용하여 프로그래밍 방식으로 수행할 수 있다.

파라뷰는 분산 메모리 컴퓨팅 리소스를 사용하여 매우 거대한 데이터 세트를 분석하기 위해 개발되었다. 소규모 데이터를 위해 노트북에서 실행할 수 있을 뿐만 아니라, 테라스케일급 데이터 세트를 분석하기 위해 슈퍼컴퓨터에서 실행할 수도 있다.

파라뷰는 턴키(turn-key) 애플리케이션일 뿐만 아니라 애플리케이션 프레임워크이기도 하다. 파라뷰 코드 베이스는 모든 구성 요소를 재사용하여 수직적 애플리케이션을 빠르게 개발할 수 있도록 설계되었다. 이러한 유연성 덕분에 파라뷰 개발자는 특정 문제 영역에 특화된 기능을 가진 애플리케이션을 신속하게 개발할 수 있다.

파라뷰는 분산 및 공유 메모리 병렬 시스템과 단일 프로세서 시스템에서 실행된다. 윈도우, macOS, 리눅스, IBM 블루 진, Cray XT3, 그리고 다양한 유닉스 워크스테이션, 클러스터 및 슈퍼컴퓨터에서 성공적으로 테스트되었다. 내부적으로 파라뷰는 데이터 처리 및 렌더링 엔진으로 VTK를 사용하며, Qt를 사용하여 작성된 사용자 인터페이스를 갖추고 있다.

파라뷰 팀의 목표는 다음과 같다:
 오픈 소스, 다중 플랫폼 시각화 애플리케이션 개발.
 대규모 데이터 세트 처리를 위한 분산 컴퓨팅 모델 지원.
 개방적이고 유연하며 직관적인 사용자 인터페이스 생성.
 개방형 표준에 기반한 확장 가능한 아키텍처 개발.

 역사 
파라뷰 프로젝트는 2000년에 미국 에너지부 ASCI Views 프로그램의 지원을 받아 Kitware, Inc.와 로스앨러모스 국립연구소 간의 협력 작업으로 시작되었다. 첫 번째 공개 버전은 2002년 10월에 발표되었다.

파라뷰와는 별개로, Kitware는 2001년 12월에 웹 기반 시각화 시스템을 개발했다. 이 프로젝트는 미국 육군 연구소의 SBIR 1단계 및 2단계 자금 지원을 받았으며, 결국 파라뷰 엔터프라이즈 에디션(PVEE)이 되었다. PVEE는 파라뷰의 클라이언트/서버 아키텍처 개발에 크게 기여했다.

2005년 9월, Kitware, 샌디아 국립 연구소 및 CSimSoft(현 Coreform LLC)는 파라뷰 3.0 개발을 시작했다. 파라뷰 3.0은 2007년 5월에 출시되었다. 2013년 6월에는 VTK 6.0을 기반으로 한 파라뷰 4.0이 출시되었다. 버전 5.0은 2016년 1월에 출시되었으며, 이 버전에는 새로운 렌더링 백엔드가 포함되었다.

 기능 

 시각화 능력 
 구조화된 격자(균일 직선, 비균일 직선 및 곡선 격자), 비구조화된 격자, 다각형, 이미지, 멀티 블록 및 AMR 데이터 유형을 처리한다.
 모든 처리 작업(필터)은 데이터 세트를 생성한다. 이를 통해 사용자는 모든 작업의 결과를 추가로 처리하거나 결과를 데이터 파일로 저장할 수 있다. 예를 들어, 사용자는 절단면을 추출하고, 마스킹을 통해 이 표면의 점 개수를 줄이고, 결과에 글리프(예: 벡터 화살표)를 적용할 수 있다.
 데이터 세트의 점에 글리프(화살표, 원뿔, 선, 구 및 다양한 2D 글리프)를 적용하여 벡터 필드를 검사할 수 있다. 글리프는 스칼라, 벡터 성분 또는 벡터 크기에 따라 크기를 조정할 수 있으며 벡터 필드를 사용하여 방향을 정할 수 있다.
 스칼라 또는 벡터 성분을 사용하여 모든 데이터 유형에서 등치선(Contours) 및 등치면(Isosurfaces)을 추출할 수 있다. 결과는 다른 변수로 색상화하거나 추가 처리할 수 있다. 가능한 경우, 구조화된 데이터의 등치선/등치면은 효율적인 데이터 레이아웃을 활용하는 빠르고 효율적인 알고리즘으로 추출된다.
 임의의 평면으로 절단 또는 클리핑(모든 데이터 유형), 셀을 제외하기 위한 임계값 기준 지정(모든 데이터 유형) 및 VOI(관심 영역 - 구조화된 데이터 유형만 해당) 지정을 통해 데이터 세트의 하위 영역을 추출할 수 있다.
 고정 단계 또는 적응형 적분기를 사용하여 유선(Streamlines)을 생성할 수 있다. 결과는 점, 선, 튜브, 리본 등으로 표시될 수 있으며 다수의 필터로 처리될 수 있다. 시간적 데이터 세트에서 입자의 경로를 추출할 수 있다.
 데이터 세트의 점은 스칼라(사용자 정의 변위 벡터 사용 시) 또는 벡터를 사용하여 변형(Warp)될 수 있다(비선형 직선 격자에는 사용할 수 없음).
 배열 계산기(Array calculator)를 사용하여 기존의 점 또는 셀 필드 배열로 새로운 변수를 계산할 수 있다. 다수의 스칼라 및 벡터 연산이 지원된다.
 VTK, NumPy, SciPy 및 기타 파이썬 모듈과 함께 파이썬 프로그래밍 가능 필터(Python Programmable filter)를 사용하여 고급 데이터 처리를 수행할 수 있다.
 점 또는 선을 따라 데이터를 프로브(Probe)할 수 있다. 결과는 그래픽 또는 텍스트로 표시되며 추가 분석을 위해 내보낼 수 있다. 시간 경과에 따른 데이터 추출도 가능하다(최소값, 최대값 및 표준 편차와 같은 통계 정보 포함).
 강력한 선택 메커니즘과 스프레드시트 뷰를 사용하여 데이터를 정량적으로 검사할 수 있다. 선택 메커니즘을 통해 사용자는 점을 집거나 사각형 영역을 선택하는 상호작용적 선택 또는 정량적 선택 메커니즘을 사용하여 데이터 세트의 중요한 하위 집합에 집중할 수 있다.
 스프레드시트 뷰를 통해 사용자는 전체 데이터 세트 또는 선택된 하위 집합을 원시 숫자로 검사할 수 있다.
 파라뷰는 기본적으로 많은 다른 데이터 소스와 필터를 제공한다. 모든 VTK 소스 또는 필터는 간단한 XML 설명을 제공함으로써 추가할 수 있다.

 입력/출력 및 파일 형식 
 다음을 포함한 다양한 파일 형식을 지원한다: VTK (신규 및 구형 버전, 병렬, ASCII 및 바이너리 포함 모든 유형 읽기 및 쓰기 가능).
 EnSight 6 및 EnSight Gold (병렬, ASCII 및 바이너리 포함 모든 유형 지원; 다중 파트 지원 - 각 파트는 별도로 로드되어 개별적으로 처리될 수 있음) (읽기 전용).
 CGNS (다중 블록, 비정상 솔루션 및 메쉬 변형 지원, HDF5 저수준 형식 기반) (읽기 전용).
 STL 및 BYU를 포함한 다양한 다각형 파일 형식 (기본적으로 읽기 전용이며, XML 설명을 작성하여 다른 VTK 라이터를 추가할 수 있음).
 다른 많은 파일 형식이 지원된다.
 모든 VTK 소스 또는 필터는 간단한 XML 설명을 제공함으로써 추가할 수 있다(VTK는 많은 리더를 제공함).
 파라뷰는 오픈 소스이므로 사용자가 직접 리더와 라이터를 제공할 수 있다.

 사용자 상호작용 
 Qt 애플리케이션 프레임워크를 기반으로 한 직관적이고 유연한 인터페이스.
 3D 위젯(조작기)을 사용하여 3D 뷰와 직접 상호작용함으로써 많은 필터의 매개변수를 변경할 수 있다. 예를 들어, 사용자는 제어 점을 클릭하고 선을 새 위치로 드래그하여 유선 필터의 시드 라인을 조작할 수 있다.
 컴팩트한 사용자 인터페이스 디자인. 기본적으로 모든 중요한 도구는 메인 창에 위치한다. 이는 복잡한 데스크톱에서 찾기 어려운 수많은 창의 필요성을 제거한다. 메인 창에서 인스펙터를 분리하는 것도 가능하다.
 레벨 오브 디테일(LOD) 모델을 사용하여 대규모 데이터로 작업할 때도 상호작용 가능한 프레임 속도를 유지한다. 사용자는 상호작용 중에 모델의 축소 버전이 표시되는 임계값(점의 개수)을 결정한다(모델의 크기도 조정 가능). 상호작용이 끝나면 전체 모델이 렌더링된다.

 대규모 데이터 및 분산 컴퓨팅 
 MPI를 사용하여 분산 및 공유 메모리 시스템에서 병렬로 실행된다. 여기에는 워크스테이션 클러스터, 시각화 시스템, 대형 서버, 슈퍼컴퓨터 등이 포함된다.
 사용자 인터페이스는 클라이언트/서버 모드를 사용하여 별도의 컴퓨터에서 실행된다.
 파라뷰는 데이터를 여러 조각으로 나누어 서로 다른 프로세스에서 처리하는 데이터 병렬 모델을 사용한다. 대부분의 시각화 알고리즘은 병렬로 실행될 때 변경 없이 작동한다. 파라뷰는 조각에 관계없이 일관된 결과를 생성하기 위해 사용되는 고스트 레벨(Ghost levels)도 지원한다. 고스트 레벨은 프로세스 간에 공유되는 점/셀이며 이웃 정보가 필요한 알고리즘에서 사용된다.
 분산 렌더링(결과가 각 노드에서 렌더링되고 나중에 깊이 버퍼를 사용하여 합성됨), 로컬 렌더링(결과 다각형이 한 노드에 수집되어 로컬에서 렌더링됨) 및 이 둘의 조합(예: LOD 모델은 로컬에서 렌더링되는 반면 전체 모델은 분산 방식으로 렌더링됨)을 모두 지원한다. 이는 소규모 데이터로 작업할 때 성능을 희생하지 않으면서 대규모 데이터에 대해 확장 가능한 렌더링을 제공한다.
 분산 렌더링 및 타일형 디스플레이는 샌디아의 Ice-T 라이브러리를 사용하여 수행된다.

 스크립팅 및 확장성 
 파라뷰는 단순하지만 강력한 파이썬 언어를 사용하여 완전히 스크립트화할 수 있다. 서버 매니저라고 불리는 파라뷰의 데이터 엔진은 파이썬 인터페이스를 통해 완전히 접근 가능하다. 파이썬을 통해 엔진에 가해진 모든 변경 사항은 사용자 인터페이스에 자동으로 반영된다.
 파라뷰는 파이썬 인터페이스를 사용하여 배치 애플리케이션으로 실행될 수 있다. IBM 블루 진 및 Cray Xt3를 포함한 슈퍼컴퓨터에서 배치 모드를 사용하여 성공적으로 실행되었다.
 파이썬 프로그래밍 가능 필터를 사용하여 파이썬에서 분산 데이터 처리를 수행할 수 있다. 이 필터는 NumPy 및 SciPy와 원활하게 작동한다.
 인터페이스의 XML 설명을 작성하거나 C++ 클래스를 작성하여 추가 모듈을 추가할 수 있다. XML 인터페이스를 통해 사용자/개발자는 특별한 코드를 작성하거나 재컴파일하지 않고도 자신의 VTK 필터를 파라뷰에 추가할 수 있다.

 사용 중인 파라뷰 
 2005년 샌디아 국립 연구소, 엔비디아 및 키트웨어는 파라뷰에서 수행된 확장 가능한 시각화 및 렌더링 작업에 대해 여러 차례 보도 자료를 발표했다. 해당 발표에서는 파라뷰를 사용하여 초당 80억 개 이상의 다각형을 렌더링하는 속도를 달성하여 확장 가능한 성능의 획기적인 발전을 알렸다.
 파라뷰는 모델링 소프트웨어인 OpenFOAM의 시각화 플랫폼으로 사용된다.
 노스캐롤라이나 대학교 채플힐의 '과학 시각화' 과정은 파라뷰를 다룬다.
 오크리지 국립연구소의 국가 컴퓨팅 과학 센터는 대규모 데이터 세트를 시각화하는 데 파라뷰를 사용한다.
 SimScale은 통합 포스트 프로세싱 환경의 대안으로 파라뷰를 사용하며, 파라뷰를 이용한 포스트 프로세싱에 대한 여러 튜토리얼과 웨비나를 제공하고 있다.
 FEATool Multiphysics 시뮬레이션 툴박스는 파라뷰 글랜스(ParaView Glance) 상호작용형 웹 플롯으로 원클릭 내보내기 기능을 제공한다.
 PeriLab Peridynamics 시뮬레이션은 대규모 모델 시각화를 위해 Exodus 인터페이스를 사용한다.

 같이 보기 
 CMake
 과학적 시각화
 VisIt
 VTK

 각주 

 외부 링크 
 다양한 분야에서의 파라뷰 사용
 파라뷰 갤러리
 파라뷰 출판물
 파라뷰 시각화 Flickr 페이지
 Vimeo의 Kitware 동영상

분류:BSD 라이선스 소프트웨어