· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Tiled Display

1. 서론 CAVE(CAVE Automatic Virtual Environment)는 UIC/EVL에서 개발된 고성능 가시화 시스템이다. 이 시스템은 사용자에게 완전한 몰입감을 제공해준다는 강점이 있지만 초기 도입비용과 유지보수비가 매우 높기 때문에 충분한 예산을 확보하기 어려운 연구기관이나 학교 등에서는 운영이 쉽지 않다는 단점을 갖고 있다. 뿐만 아니라 CAVE는 일단 설치가 끝나면 이동이 불가능하고 전반적인 시스템의 업그레이드도 쉽지 않으며, 높은 해상도를 구현하기도 어렵다. 이러한 문제점들은 CAVE가 응용과학자들에게 매우 유용한 가시화 시스템이 될 수 있음에도 불구하고 널리 보급되지 못하는 직접적인 원인이 되고 있는 것이 현실이다.

(그림 ) KISTI의 CAVE 시스템


하지만 클러스터가 보편화되고 GPU(Graphics Processing Unit)가 빠르게 발전하면서 이들을 활용한 tiled display를 구축, 활용하는 사례가 점점 늘어나고 있다. Tiled display는 비록 CAVE와 같이 완전한 몰입감을 제공하지는 않지만(입체영상 생성은 가능), CAVE의 절반에 불과한 가격에 CAVE와는 비교할 수 없을 정도로 높은 해상도와 빠른 처리속도, 뛰어난 확장성 등을 갖고 있기 때문에 점점 그 활용영역이 넓어지고 있다.

(그림 ) Tiled display의 활용 예


본 논문은 슈퍼컴퓨팅응용실에서 tiled display를 구축할 때 거쳤던 모든 과정에 대해서 설명하고 있다. 특히 하드웨어의 구성과 필요한 소프트웨어의 설치 및 설정방법 등 실무에 바로 적용할 수 있는 내용을 중점적으로 다루고자 했다. 본 논문은 다음과 같이 구성되어 있다. 우선 2장에서는 해외의 주요 대학교에서 운영하고 있는 tiled display를 살펴본다. 그리고 3장과 4장에서는 tiled display를 구축할 때 사용한 하드웨어와 소프트웨어, 그리고 각 소프트웨어의 설정 방법에 대해서 설명한다. 마지막 5장에서는 tiled display를 실제로 활용한 사례를 보여준다.

2. 해외 사례 Tiled display는 CAVE보다 낮은 가격으로 매우 높은 성능을 구현할 수 있기 때문에 해외에서는 이미 다양한 규모의 tiled display를 구축, 활용하고 있다. 이 장에서는 해외의 주요 대학교와 연구기관에서 활용하고 있는 tiled display 중 대표적인 몇 가지 사례를 소개한다. 2.1 LambdaVision LambdaVision은 UIC의 EVL에서 제작한 대형 tiled display 시스템이다. 이 시스템은 55개의 tile로 구성되어 있으며 기반 시스템은 32노드 클러스터이다. 각 tile은 1,600 X 1,200의 해상도를 갖고 있으며 전체 해상도는 17,600 X 6,000로 화소의 수로 계산하면 105,600,000개가 된다.

(그림 ) LamdaVision


이 시스템은 현재 미국의 주요 대학이 참가하고 있는 OptIPuter 프로젝트의 가시화 플랫폼으로 쓰이고 있으며, 이 외에도 액세스 그리드, 지질 데이터의 가시화 등의 목적으로 이용되고 있다.

2.2 Texas Austin 텍사스 대학교의 CCV(Center for Computational Visualization)에서 활용하고 있는 tiled display는 Onyx와 가시화 클러스터가 같이 연결되어 있기 때문에 필요에 따라서 원하는 시스템의 출력을 선택할 수 있다는 특징을 갖고 있다. 특히 시스템을 구성하는 각 tile이 서로 다른 출력을 받아올 수 있다.

(그림 ) Texas Austin의 tiled display 시스템


2.3 NCSA NCSA(National Center for Supercomputing Applications)에서는 tiled display 구축을 위한 소프트웨어 패키지를 제작했다. 이 패키지는 NCSA에서 구축한 tiled display에 사용된 소프트웨어들로 구성되어 있으며 Display Wall In a Box라는 이름으로 NCSA의 웹사이트를 통해서 배포되고 있다. (그림 ) NCSA의 tiled display


3. 하드웨어 구성 3장과 4장은 슈퍼컴퓨팅응용실에서 구축한 tiled display에 대해서 설명한다. 모든 tiled display 시스템의 하드웨어는 크게 실제 렌더링을 담당하는 클러스터와 다수의 모니터(또는 프로젝터와 스크린)를 연결한 출력장치로 구분되며 tiled display 구축을 위한 미들웨어가 설치된다.

3.1 클러스터 클러스터는 슈퍼컴퓨팅응용실이 보유하고 있는 6노드 가시화 클러스터를 활용했다. 이 클러스터는 현재 CAVE와 함께 운영중인 Onyx3400을 대체할 목적으로 도입했으나 다음의 몇 가지 이유로 CAVE로부터 분리시킨 후 tiled display의 구축에 활용했다.

• Onyx3400에 설치되어 있는, IRIX 전용 가시화 소프트웨어를 Linux로 옮겨오는 것이 쉽지 않다. OS가 다르기 때문에 어렵기도 하지만 Onyx3400과 같은 SMP 구조의 컴퓨터에서 실행되던 프로그램을 MIMD 구조를 갖는 클러스터에서 실행되도록 바꾸는 것은 프로그램의 근본적인 구조가 달라지는 문제에 해당되므로 더욱 더욱 어려워진다. • CAVE로 입체영상을 출력하려면 연결되어 있는 컴퓨터 시스템에서 CAVELib을 필수적으로 사용해야 한다. 하지만 CAVELib은 특성상 클러스터의 모든 노드에 똑같은 프로그램과 똑같은 데이터를 이용해서 렌더링을 해야 CAVE에 정상적인 이미지를 출력할 수 있게 된다. 이로 인해서 다음에 설명하는 문제가 발생한다. • 각 노드가 m GB의 메모리를 갖고 있는 n 노드 클러스터라면 사용자는 최대 m * n GB, 또는 그에 준하는 크기의 데이터를 각 노드에 분산시켜서 렌더링할 수 있을 것으로 기대하지만 CAVELib의 제약으로 인해 최대 m GB 이상의 데이터를 렌더링하는 것이 불가능하게 된다. 클러스터를 CAVE로부터 분리시키기 전까지 Onyx3400에는 6GB의 메모리가 장착되어 있고 클러스터의 각 노드는 2GB의 메모리가 장착되어 있었다. 따라서 클러스터를 이용할 경우에는 Onyx3400이 다룰 수 있는 데이터의 1/3 크기의 데이터밖에 다루지 못한다는 문제를 갖고 있었으며, 클러스터의 각 노드의 메모리를 최대로 확장한다고 해도 4GB 이상의 데이터를 가시화하는 것은 불가능했다.

위에 나열한 문제들로 인해서 클러스터를 CAVE로부터 분리시켰고, visualization 분야에서 본격적으로 활용이 가능한 수준의 시스템으로 구성하기 위해 다음과 같이 업그레이드를 진행했다. 3.1.1 로그인 노드 추가 CAVE는 5면으로 구성되어 있었기 때문에 6노드로 충분했지만 tiled display를 구축하기 위해서 별도의 로그인 노드를 추가하고, 기존의 6노드를 모두 tile 출력을 전담하도록 했다. 이렇게 함으로써 하드웨어적인 측면에서는 가로 3, 세로 2의 tile로 구성된 사각형 화면을 구축할 수 있었으며 소프트웨어적인 측면에서는 렌더링 노드가 애플리케이션까지 실행해야 하는 부담을 덜고, 렌더링 작업에 모든 계산 능력을 집중할 수 있게 됐다.

3.1.2 대용량 저장장치(RAID) 추가 고성능 가시화 시스템은 기본적으로 대용량 데이터를 다룰 수 있어야 한다. 특히 슈퍼컴퓨팅센터의 응용과학자들이 만들어내는 데이터의 크기는 이미 수백 GB를 넘어서 TB 수준에 접어들었기 때문에 대량의 데이터를 저장하기 위한 저장장치는 반드시 설치되어 있어야 한다. 현재 클러스터에는 다섯 대의 160GB 하드 디스크를 장착한 800GB의 RAID(Level 5)가 운영되고 있다. (그림 6) 클러스터에 설치된 레이드


RAID는 로그인 노드에 SCSI 인터페이스로 연결되어 있으며 렌더링 노드는 NFS로 RAID를 공유하고 있다.

3.1.3 메인 메모리의 확장 아무리 여러 대의 노드가 장착된 클러스터라고 해도 2GB/노드의 메인 메모리는 가시화 시스템으로서는 충분하지 않은 양이다. 따라서 모든 노드의 메인 메모리를 4GB로 확장했다.

3.1.4 클러스터 제원 앞에서 설명한 것과 같이 기본적인 수준의 업그레이드를 진행한 후의 클러스터의 제원은 (표 1)과 같다.


로그인 노드 렌더링 노드 CPU Model Intel Xeon Intel Xeon Clock 3.06 GHz 3.06 GHz CPU의 수 2 2 전체 노드 수 1 6 Video card GeForceFX 5900 QuadroFX 3000G Main memory 4 GB 4 GB HDD Local 80 GB (OS) 80 GB (OS) 160 GB (Home) NFS로 공유 RAID 800 GB (Level 5) NFS로 공유 OS Debian Linux Debian Linux Network Gigabit ethernet Gigabit ethernet (표 ) 클러스터 제원


3.2 출력화면 본격적인 수준의 tiled display를 구축할 때에는 고가의 프로젝터와 스크린을 이용하는 경우가 많지만 지금은 어디까지나 저가로 다양한 테스트를 할 수 있는 실험용 tiled display를 구축하는 것이므로 주변에서 쉽게 볼 수 있는 19인치 LCD 모니터를 이용해서 출력 화면을 구성했다.

3.2.1 Tile의 구성 앞에서 설명한 것과 같이 각각의 tile로는 19인치 LCD 모니터를 이용했으며, 6개(가로 3, 세로 2)의 tile로 구성된 출력장치를 구성했다. 각각의 tile은 1280 * 1024의 해상도를 갖고 있으므로 전체 해상도는 3840 * 2048(7,864,320개의 화소)가 된다. 이는 해외의 주요 대학교에서 구축한 초대형 tiled display 미국 EVL에서 제작한 LambdaVision은 55개의 tile을 이용해서 17,600 * 6,000의 해상도를 구현했다. 와 비교하면 많은 차이가 있지만 간단한 실험용으로는 충분히 활용할 수 있을 정도의 수준이다. LCD 모니터를 이용해서 tiled display를 구축할 때의 장점은 상대적으로 낮은 가격에 많은 수의 출력 장치를 이용할 수 있지만 모니터 자체의 프레임을 제거하기가 어렵기 때문에 tile 사이의 간격이 비교적 넓다는 단점이 있다. 따라서 모니터를 선택할 때 가능하면 프레임의 너비가 좁은 모델을 선택해서 tile 사이의 간격을 최소화시켜야 한다.

(그림 ) 6대의 LCD 모니터를 이용한 tiled display


3.2.2 Tile 거치용 프레임의 구성 6대의 모니터를 걸어놓기 위한 프레임은 별도로 주문 제작했다. 프레임의 전체 높이는 1.8m 정도로 맞췄는데, 그 정도 높이는 서서 보는 데에 큰 무리가 가지 않는다. 형태는 제작의 편의를 위해서 주위에서 흔히 볼 수 있는 화이트보드와 비슷하게 되어 있으며 전체 화면의 각도를 조절할 수 있도록 했다. Tiled display를 구성하는 모니터의 수가 많아지면 그만큼 중량도 무거워지므로 프레임을 제작할 때에는 반드시 어느 정도의 무게를 감당해야 하는지 고려해야 한다. 특히 이번 실험에서 구축한 화이트보드와 같은 형태의 프레임은 무게가 무거워지면 화면 전체가 앞으로 기울어지는 현상도 볼 수 있으므로 주의해야 한다.

(그림 ) Tile 거치용 프레임(좌) 및 완성된 tiled display


4. 소프트웨어 구성 Tiled display의 구축은 하드웨어보다는 소프트웨어의 구성 및 설정이 매우 중요한 역할을 차지한다. 특히 tiled display의 전반적인 display 성능과도 직접적인 관련이 있기 때문에 다양한 종류의 테스트를 통해서 해당 시스템이 최적의 상태로 운영될 수 있도록 조절해야 한다. 뿐만 아니라 클러스터 시스템의 특성으로 인해서 클러스터의 각 노드를 효과적으로 모니터링 및 관리할 수 있는 클러스터 관리 프로그램의 설치도 필수적이다. 이 장에서는 visualization 클러스터에 설치된 각종 소프트웨어 및 OS의 설정 방법에 대해서 설명한다.

4.1 OS 및 기본 소프트웨어의 설치 현재 클러스터에는 Debian 리눅스가 설치되어 있다. 이 배포판은 RPM을 기반으로 하는 배포판(레드햇, 페도라 등)에 비해서 패키지 업그레이드가 매우 용이하다는 장점을 갖고 있으며, 패키지의 구성 또한 개발자가 편리하게 이용할 수 있도록 구성되어 있다. 이 절에서는 OS를 설치한 후 클러스터 환경에 적합하도록 설정을 변경하는 방법에 대해서 설명한다.

4.1.1 Private IP address와 NAT 클러스터의 로그인 노드를 제외한 모든 렌더링 노드는 private IP address를 갖고 있다. 따라서 정상적인 방법으로는 렌더링 노드에서 외부의 네트워크에 접속하는 것이 불가능하다. 하지만 패키지 업그레이드 등 경우에 따라서는 외부 네트워크를 접속할 필요가 생기므로 로그인 노드에 두 개의 랜 카드를 장착해서 로그인 노드를 게이트웨이로 사용하도록 설정했다. 로그인 노드에서는 NAT를 이용해서 렌더링 노드의 패킷 중 source IP address를 로그인 노드의 IP address로 변환해서 외부로 전달해주는 역할을 한다. 이 기능은 로그인 노드가 부팅될 때마다 자동으로 실행되도록 (그림 9)와 같은 스크립트를 만들었다.

echo 1 > /proc/sys/net/ipv4/ip_forward /sbin/iptables -A FORWARD -i eth0 -o eth1 /sbin/iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 150.183.*.* (그림 ) NAT를 설정하는 스크립트 (부분발췌)


4.1.2 inittab의 수정 클러스터의 각 렌더링 노드는 사용자가 직접 로그인해서 작업하는 경우가 거의 없기 때문에 부팅을 할 때마다 자동으로 X-Window가 실행돼서 애플리케이션의 출력을 언제라도 보여줄 수 있도록 준비가 되어 있어야 한다. 이를 위해서 'tile'이라는, 렌더링 노드 전용 계정을 생성하고 시스템이 부팅 될 때마다 tile 계정으로 자동으로 로그인한 후에 X-Window가 실행되도록 했다.

# The default runlevel id:5:initdefault:

(중략)

1:2345:respawn:/sbin/mingetty 38400 tty1 2:23:respawn:/sbin/mingetty 38400 tty2 3:23:respawn:/sbin/mingetty 38400 tty3 4:23:respawn:/sbin/mingetty 38400 tty4 5:23:respawn:/sbin/mingetty 38400 tty5 6:23:respawn:/sbin/mingetty 38400 tty6 7:5:respawn:/usr/bin/open -f -c 1 -w -- /bin/login -f tile (그림 ) inittab의 내용


(그림 10)의 두 번째 줄에서 default runlevel을 5로 설정한 것을 알 수 있다. 그리고 마지막 줄에서는 runlevel이 5일 때 tty7에서 tile 계정으로 자동 로그인이 되도록 설정했다.

4.1.3 X-Windows의 실행 각 렌더링 노드를 부팅하면 앞에 설명한 내용에 의해서 tile 계정으로 자동 로그인 과정이 진행된다. 로그인 과정에서 tile 계정의 홈 디렉터리에 있는 .bash_profile과 .xinitrc를 기반으로 X-Windows가 실행된다.

if -f ~/.bashrc ; then
. ~/.bashrc
fi

PATH=$PATH:$HOME/bin

export PATH unset USERNAME

# auto start X if "$TERM" = "linux" -a `tty` = "/dev/tty1" ; then
/usr/bin/X11/startx ; exit
fi (그림 ) .bash_profile의 내용


(그림 11)은 tile 계정의 .bash_profile을 보여준다. 특별한 설정은 없지만 처음 로그인할 때 startx를 실행하도록 구성되어 있음을 유의해서 봐야한다.

xset s off # Disable screen saver xset -dpms # Disable DPMS unclutter -root -idle 1 & # Hide mouse cursor if `hostname` != "visc.ksc.re.kr" ; then
/usr/X11R6/bin/xhost + /usr/bin/gnome-wm # Run window manager (option)
fi (그림 ) .xinitrc의 내용


(그림 12)는 tile 계정의 .xinitrc를 보여준다. unclutter를 이용해서 마우스 커서를 사라지게 하는 것과 xhost를 이용해서 access control를 모두 해제시키는 부분을 유의해서 봐야 한다.

4.1.4 RSH 클러스터에서 MPI 애플리케이션을 실행하거나 C3와 같은 클러스터 관리 툴을 사용하기 위해서 rsh를 지원해야 한다. 이를 위해서 /etc/hosts.equiv에 로그인 노드와 모든 렌더링 노드의 호스트명을 적어야 한다. 일반적인 상황이라면 rsh는 보안상의 이유로 거의 사용하지 않겠지만 클러스터의 경우는 rsh을 이용하는 경우가 매우 많으므로 보안에 대해서 충분히 고려하면서 사용이 가능하도록 설정해야 한다. 4.2 Ganglia의 설치 Ganglia는 UC Berkeley에서 제작한 클러스터 모니터링 시스템이다. Ganglia를 이용하면 클러스터의 각 노드의 구성정보, CPU load, 메모리 사용량, 디스크 사용량, 네트워크 전송 상태 등을 실시간으로 볼 수 있다. 특히 대부분의 시스템 상태를 그래프로 보여주기 때문에 최근의 시스템 사용 현황의 변화를 알 수 있다는 장점이 있다. Ganglia의 소스파일 및 설치방법에 대한 안내는 http://ganglia.sourceforge.net에서 구할 수 있다.

(그림 ) Ganglia의 실행화면


4.3 DMX DMX는 Distributed Multihead X의 약자로, 서로 다른 컴퓨터에 연결된 독립된 출력장치들을 하나로 묶어서 단일 데스크톱 화면을 구성하기 위해서 사용하는 프락시 X 서버이다. 일반적인 X-Windows 시스템은 한 대의 컴퓨터에 연결된 다수의 출력장치를 지원하도록 구성되어 있으나, 여러 대의 독립적인 컴퓨터에 연결된 다수의 출력장치를 다루지는 못한다. DMX는 이러한 문제점을 해결하기 위해서 만들어졌으며, http://dmx.sourceforge.net을 통해서 공개 소스로 배포되고 있다.

4.3.1 DMX의 설치 DMX를 설치하는 방법은 1.이미 컴파일된 바이너리 패키지를 가져와서 설치하는 방법과 2.소스 파일을 가져와서 설치하는 방법으로 나누어진다. 만약 리눅스 기반 시스템이라면 불필요한 시간낭비를 최소화시키기 위해서 바이너리 패키지를 가져와서 설치할 것을 권장한다. 소스 파일을 설치하는 것도 크게 어렵지는 않기 때문에 여기에서는 자세한 설치 방법을 생략한다.

4.3.2 DMX의 설정 DMX의 컴파일 및 설치가 끝나면 해당 시스템에 맞게 별도의 설정을 해줘야 한다. 본 실험을 통해서 구현한 tiled display는 모두 6 대의 모니터로 구성되어 있기 때문에 다음과 같이 설정 파일을 구성해서 /etc/dmx/dmx.conf라는 이름으로 저장했다.

virtual visc 3840x2048 {
display node01:0 1280x1024; display node02:0 1280x1024 @1280x0; display node03:0 1280x1024 @2560x0; display node04:0 1280x1024 @0x1024; display node05:0 1280x1024 @1280x1024; display node06:0 1280x1024 @2560x1024;
} (그림 ) /etc/dmx/dmx.conf의 내용


직관적으로 알 수 있지만 첫 번째 줄의 visc는 호스트 명, 3840x2048은 전체 해상도를 나타낸다. 그리고 { }로 둘러싸인 영역은 각각의 tile을 어떤 호스트가 담당하며, 해상도와 전체 화면에서 해당 tile이 시작되는 지점을 의미한다. 예를 들어서 넷째 줄의 node03에 대한 설정은 다음과 같이 해석할 수 있다.

• 3번째 tile은 node03의 X-Window 출력이 담당한다. • 해당 tile의 해상도는 1280x1024이다. • 해당 tile은 전체(3840x2040) 디스플레이에서 2560x0지점부터 시작된다.

4.3.3 DMX의 실행 DMX의 설치 및 설정이 모두 끝나면 다음과 같이 DMX를 실행한다. 여기에서는 위에서 설명한 설정 파일을 그대로 사용하는 것을 가정한다. DMX의 실행파일 명은 Xdmx이며, 로그인 노드에서만 실행시키면 클러스터의 나머지 노드들을 제어할 수 있게 된다. 다만, 클러스터의 모든 노드들은 사전에 xhost 명령을 이용해서 접근 제어를 해제시켜 놓아야 한다. (4.1.3 X-Windows의 실행 참고)

Xdmx :1 +xinerama -configfile /etc/dmx/dmx.conf -input localhost:0 -ac -br -ignorebadfontpaths -norender (그림 ) DMX의 실행


각각의 인자가 의미하는 바는 다음과 같다.

•Xdmx : DMX의 실행파일 명 •:1 : Tiled display의 디스플레이 번호 할당. 로그인 노드의 X-Window screen 1번을 tiled display로 활용하겠다는 뜻으로, 로그인 노드에서 xterm -display :1과 같이 display를 :1로 지정하면 모든 출력이 tiled display에 나타난다. •+xinerama : 여섯 개의 화면을 묶어서 하나의 데스크톱 화면으로 활용한다. 이 옵션은 거의 기본으로 사용하는 것으로 간주하면 된다. •-configfile /etc/dmx/dmx.conf : 4.3.2에서 설명한 설정파일의 위치 •-input localhost:0 : tiled display의 입력을 위한 패널을 로그인 노드의 :0에 출력한다. 이 입력 패널은 결국 tiled display의 전체 화면을 나타내는데 입력 패널 위에서 마우스 커서가 움직이면 tiled display 내에서 해당되는 tile 내에서 마우스 커서가 같이 움직인다. •-ac : disable access control restrictions •-br : 검정색 배경으로 루트 윈도우 생성 •-ignorebadfontpaths : DMX는 기본적으로 클러스터의 모든 노드에 똑같은 폰트가 똑같은 디렉터리에 설치되어 있는 것을 가정하며, 그렇지 않을 경우에는 에러 메시지가 출력되면서 정상적으로 실행되지 않는다. 이 옵션은 폰트패스가 다르거나 사용하고자 하는 폰트가 없어도 이를 무시하도록 지정한다. 대신 해당 폰트를 찾지 못하면 다른 폰트로 글자가 출력될 것이다. •-norender : X-Window의 RENDER extension을 사용하지 않는다. 이 옵션은 시스템의 상황에 따라서 사용해야 될 때도 있고 그렇지 않은 경우도 있으므로 주의해서 사용한다. 하지만 본 실험에서 사용한 시스템에서는 -norender 옵션이 반드시 필요했다.

4.3.4 Tiled display에서의 일반 X-Windows 애플리케이션의 실행 앞에서 설명한 방법으로 Xdmx이 정상적으로 실행되면 사용자는 일반 X-Window 애플리케이션을 다음과 같은 방법으로 tiled display에 출력되도록 할 수 있다. 만약 해당 애플리케이션이 -display 옵션을 처리할 수 있다면 아래와 같이 명령어를 실행하면 된다.

application -display :1 (그림 ) 애플리케이션의 실행 방법 1


-display 옵션을 처리하지 못하는 애플리케이션은 DISPLAY라는 환경변수를 지정해서 화면 출력을 tiled display로 돌릴 수 있다.

export DISPLAY=:1 (bash 기준) application (그림 ) 애플리케이션의 실행 방법 2


(그림 17)은 다수의 애플리케이션이 tiled display에 출력된 모습을 보여준다. 여기에서 특기할 사항은 애플리케이션 윈도우가 tiled의 경계선을 지나가도 정상적으로 출력된다는 점이다.

(그림 ) Tiled display를 이용한 애플리케이션의 실행


DMX를 사용할 때 고려해야 할 문제가 하나 있는데 그것은 바로 네트워크 대역폭이다. 실행중인 애플리케이션이 tile의 경계선을 지나서 움직일 경우, 내부적으로는 해당 tile을 담당하는 두 대 이상의 노드가 네트워크를 통해서 X-Windows 메시지를 지속적으로 교환하는데, 이는 생각보다 큰 부담으로 작용한다. 특히 애플리케이션의 화면이 여러 개의 tile에 걸쳐있고 그 내용이 지속적으로 바뀐다면 애플리케이션을 그려주는 노드 사이의 네트워크 통신이 계속 발생하기 때문에 사용자 입력에 대한 반응 속도가 느려지고 네트워크에 과부하가 걸리는 등의 부작용이 발생할 수 있음을 염두에 두어야 한다.

4.4 Chromium Chromium은 클러스터로 손쉽게 분산 렌더링 시스템을 구축할 수 있도록 해주는 소프트웨어 패키지이다. 이 소프트웨어는 원래 미국 Stanford 대학교의 그래픽스 연구실에서 WireGL이라는 이름의 프로젝트로 시작했으나, 어느 정도 안정화가 이루어지면서 소스를 일반에게 공개 http://chromium.sourceforge.net에서 다운받을 수 있다. 하고 명칭을 Chromium으로 변경했다. Tiled display system에서 Chromium은 일반 OpenGL 애플리케이션을 아무 수정 없이 tiled display로 출력할 수 있도록 해주는 역할을 한다. DMX는 일반 애플리케이션을 tiled display로 출력하는 것은 가능하지만 OpenGL 애플리케이션을 tiled display로 출력하는 것을 지원하지 못하는데, 이 문제를 Chromium을 이용해서 해결할 수 있다.
4.4.1 Chromium의 설치 Chromium은 소스 파일 형태로만 배포되기 때문에 사용자가 직접 컴파일을 해야 하지만 UNIX의 기본 명령어만 알고 있으면 비교적 손쉽게 컴파일/설치가 가능하다. 다만, DMX와 Chromium이 연동되도록 하기 위해서 컴파일 전에 설정 파일을 수정해야 한다. Chromium의 소스파일을 가져와서 압축을 풀면 CR-(version) 형식의 디렉터리가 생성된다. 이 디렉터리 내에 있는 options.mk라는 파일의 내용 중 USE_DMX=0이라는 부분을 찾아서 다음과 같이 수정해야 한다.

# Set USE_DMX to 1 if you wantto enable DMX support. # You'll need the libdmx.a library and dmxext.h header file in the usual X # directories. USE_DMX=1 (그림 ) options.mk의 수정


위의 수정이 끝나면 바로 make를 실행해서 컴파일을 진행시킬 수 있다.

4.4.1 Chromium의 설정 Chromium의 설정은 단순한 텍스트 파일이 아닌 python 언어를 이용한다는 점이 여타의 소프트웨어와 다르다. CR의 설치 디렉터리 밑에 mothership/configs라는 디렉터리를 보면 템플릿으로 사용할 수 있는 설정 파일들이 존재하는 것을 볼 수 있다. 이 중 dmx.py라는 파일을 이용해서 tiled display에 맞게 고쳐주면 된다. 고쳐야 할 부분은 HOSTS라는 변수를 지정하는 부분과 TILE_WIDTH 및 TILE_HEIGHT, TILE_COLS와 TILE_ROWS를 정하는 부분이다.

# Fix these: TILE_COLS = 3 TILE_ROWS = 2 HOSTS = node01', 'node02', 'node03', 'node04', 'node05', 'node06'

# These values don't really matter! TILE_WIDTH=1280 TILE_HEIGHT=1024 (그림 ) dmx.py의 수정


4.4.2 Chromium의 실행 위와 같이 설정 파일을 수정한 후 다음과 같은 방법으로 Chromium을 가동시키면 된다. 이 부분은 실험 대상인 시스템의 상황에 따라서 조금씩 달라질 수 있으므로 상황에 맞게 내용을 바꿔야 함을 주의해야 한다. 보다 자세한 실행 방법은 http://chromium.sf.net에서 찾아볼 수 있다.

•CRMOTHERSHIP이라는 환경 변수를 node00(로그인 노드)로 지정하고 애플리케이션을 실행시킨다. 이 전에 DISPLAY 변수를 조작해서 애플리케이션의 실행 화면이 tiled display로 출력되도록 조절해야 한다.

export DISPLAY=node00:1 # Tiled display로 출력한다. export CRMOTHERSHIP=node00 python dmx.conf covise (그림 ) Chromium의 실행 준비

•위와 같이 실행하면 각 노드에서 crserver를 실행시키라는 메시지가 출력된다. 하지만 사용자가 매번 렌더링 노드로 로그인해서 crserver를 실행시키는 것은 번거롭기 때문에 C3라는 클러스터 관리 툴을 이용해서 간단한 조작으로 모든 렌더링 노드에서 crserver가 실행되도록 한다.

cexec 'export CRMOTHERSHIP=node00; crserver &' (그림 ) crserver의 실행


여기에서 cexec는 C3 툴의 명령어 중 하나로 C3가 관리하는 모든 노드에 대해서 인자로 주어지는 명령어를 실행시키는 역할을 한다. 여기에서 주의할 점은 crserver를 실행하는 모든 노드에서 LD_LIBRARY_PATH이라는 환경변수가 Chromium의 라이브러리를 찾을 수 있도록 미리 설정되어 있어야 한다는 것이다. 그렇지 않으면 cexec의 인자에 LD_LIBRARY_PATH를 설정하는 명령어를 추가해야 한다.

•각 렌더링 노드에서 crserver가 실행되고 있는 것을 확인하면 마지막으로 로그인 노드에서 crappfaker를 실행시킨다.

crappfaker (그림 ) crappfaker의 실행


5. 활용사례 앞에서 설명한 내용을 통해 구축된 tiled display는 우선 시범적으로 두 가지 정도의 애플리케이션에 활용되었다.

5.1 COVISE COVISE는 COllaborative VIsualization and Simulation Environment의 약자로 독일 HLRS에서 개발한 가시화 소프트웨어이다. 슈퍼컴퓨팅응용실에서는 이 소프트웨어를 이용해서 응용과학자들이 생성한 데이터 가시화를 지원하고 있는데, 특히 몇몇 데이터에 대해서는 tiled display를 이용해서 성공적으로 가시화 작업을 수행할 수 있었다. (그림 ) KTX 데이터의 가시화(좌측 하단)

대상 데이터는 KTX(한국형 고등 훈련기)의 유동장 해석 결과로, 비행기의 속도에 따른 표면의 공기의 밀도의 변화를 보여주고 있다.

5.2 유체 데이터의 가시화 슈퍼컴퓨팅응용실에서 생성한 데이터 중 비행선 주위의 유동장 해석 결과를 렌더링하는 데에 tiled display를 이용했다. 이 데이터는 비행선이 steady state로 있을 때 측풍이 불어오는 상황을 계산한 것으로, 57개의 timestep을 갖고 있는 240GB 크기의 curvilinear grid 볼륨 데이터이다. 이 실험의 특징은 Chromium이 아닌, 자체개발한 개발한 분산 렌더링 애플리케이션을 이용해서 렌더링을 수행했다는 점인데 QuadroFX3000G의 frame lock 기능을 활용해서 tile 사이의 synchronization을 맞추고 있다. 현재는 다각형(polygon) 데이터만을 렌더링하고 있으나 연말까지 direct volume rendering 기능을 추가할 예정이다.

(그림 ) Tiled display를 이용한 렌더링 (Time-variant, curvilinear grid, 240GB)


6. 결론 및 향후 계획 지금까지 슈퍼컴퓨팅응용실에서 구축한 tiled display에 대해서 설명했다. Tiled display는 낮은 가격으로 높은 성능을 구현할 수 있고, 확장성이 뛰어나기 때문에 세계의 유수 대학교 및 연구기관에서는 이미 일정수준 이상의 고성능 tiled display 시스템을 구축해서 활용하고 있으며, 앞으로 이러한 종류의 시스템은 더욱 많이 보급될 것이다.

앞으로의 계획은 다음과 같다. •클러스터 튜닝 및 성능 최적화 : Tiled display와 연결되어 있는 클러스터는 아직 최적화가 되지 않은 상태이다. 특히 전반적인 frame rate에 가장 큰 영향을 주는 네트워크 성능을 중점적으로 조율하고 시스템이 어느 정도 궤도에 들어서면 본격적인 수준의 벤치마크 테스트를 수행할 예정이다. •Choromium의 최적화 및 성능개선 : 클러스터를 이용해서 OpenGL 애플리케이션을 실행하기 위해서는 Chromium이 절대적으로 필요하게 된다. Chromium은 현재 노드 사이의 sync를 맞추는 데에 S/W sync를 사용하지만 QuadroFX3000G의 frame lock 기능을 활용하면 더 높은 frame rate와 정확도를 제공할 수 있다. •대규모 클러스터 및 tiled display 구축기술 축적 : CAVE의 뒤를 잇는 차기 고성능 가시화 시스템은 tiled display 형태를 갖는 것이 바람직하다.(표 2, 표 3 참조) 본 실험을 통해 구축된 tiled display 시스템을 이용해서 다양한 실험을 수행하면 향후 KISTI에서 고성능 가시화 시스템을 구축하는 데에 직접 활용할 수 있는 기술을 축적할 수 있을 것이다.


CAVE(SeeMore) ImmersaDesk Tiled Display 도입가격 30억원 3억원 1.2억원 화면 해상도 1024 X 768 1280 X 1024 3840 X 2048 화소의 수 786,432 1,310,720 7,864,320 업그레이드 거의 불가능 쉽지 않음(가격) 용이함 이동성 불가능 가능 가능 연 유지보수비 2.1억원 1천만원 미만 표 CAVE, ImmersaDesk와 Tiled display의 비교


분야 세부내용 EVL KISTI 비고 출력장치 Tile 수 55 (11 X 5) 6 (3 X 2) 9.2배 Tile 해상도 1,600 X 1,200 1,280 X 1,024 1.5배 전체 해상도 17,600 X 6,000 3,840 X 2,048 13.4배 클러스터 노드 수 32 7 4.5배 네트워크 3 Gbps (fiber) 1 Gbps (TP) 3배 표 EVL의 LamdaVision과 KISTI의 tiled display 비교


표 2에서 tiled display를 구축하는 데에 소요된 총 비용과 KISTI에서 운영중인 CAVE 및 ImmersaDesk의 가격을 비교했다. 표에서 볼 수 있는 것과 같이 CAVE의 1/25에 불과한 가격으로 10배의 해상도를 구현할 수 있다는 것이 tiled display의 가장 큰 장점이다. 표 3은 EVL의 LambdaVision과 KISTI의 tiled display의 규모를 비교한 것이다. 아직 실험단계에 있기 때문에 많은 차이가 있지만 앞으로 체계적으로 발전시켜나갈 수 있을 것이다.

앞으로 tiled display가 국내 연구진들에게 많이 보급돼서 손쉽게 대용량 데이터를 가공해서 고해상도 영상으로 접할 수 있을 것으로 기대한다.


ID
Password
Join
You recoil from the crude; you tend naturally toward the exquisite.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2004-12-08 16:55:23
Processing time 0.0170 sec