ACESgrid
Alliance for Computational Earth Science
About & News
Getting Started
Sites
   itrda.acesgrid.org
   geo.acesgrid.org
   cs.acesgrid.org
   ao.acesgrid.org
      HyperWall Main
      HyperWall Use
      HyperWall Hardware
      HyperWall Software
      HyperWall Debugging
Available software
Status
People
FAQ
Mailing Lists
Quick Links
Contact Us
Sponsors
Search

MIT logo

Booting and preparing hyperwall cluster nodes to display image

Verify that the aces-54.csail.mit.edu (ao.acesgrid.org) machine is up:

$ ping aces-54.csail.mit.edu 
and contact if it isn't.

Turn on the LCD panels by flipping the four power strips on the back of the wall.

Log into hyperwall head node and perform as $ROOT the following:

     $ cd ~/LCD
     $ ./reboot_all
     $ Wait for all machines to come up.
     $ ./startx_all
     $ Wait for X to come up on all hyperwall terminals
     $ ./xhost_all
Now read the section below to find out how to display and manipilate an image on the hyperwall.

Displaying a big image over all the panels in the hyperwall

Once the system software is configured on all the nodes you can test the setup by displaying a big image. Links to several test images are given above. The commands steps below describe how to do this on our four x four Dell cluster based hyperwall. This cluster is configured as follows
  • rendering machines have been set up according to the Fedora Core 1 steps above.

  • the controller machine has Fedora Core 2 installed. This machine has IP address 10.12.2.250.

  • the rendering machines have IP addresses 10.12.2.12 - 10.12.2.27. They are connected to the LCD panel in the following matrix

      10.12.2.15(0,3)  10.12.2.19(1,3)  10.12.2.17(2,3)  10.12.2.26(3,3)
      10.12.2.22(0,2)  10.12.2.21(1,2)  10.12.2.12(2,2)  10.12.2.16(3,2)
      10.12.2.20(0,1)  10.12.2.25(1,1)  10.12.2.18(2,1)  10.12.2.24(3,1)
      10.12.2.14(0,0)  10.12.2.23(1,0)  10.12.2.27(2,0)  10.12.2.13(3,0) 
      
    The numbers in parentheses show the coordinates in the LCD matrix that the showPaged program uses to refer to a particular LCD in the panel matrix.

  • an account on all the machines is required in order to display an image.

To display a big image over all the hyperwall panels a program called showPaged is used. The showPaged program is run on every rendering machine. It is given a specially preprocessed .ppm image file (known as a .ppm.paged file) as input, the LCD matrix size, and the location in the LCD matrix that the particular rendering machine is responsible for (this location corresponds to the (n,m) number in the IP address matrix). This requires the following steps
  • converting the original image to .ppm file. The hyperwall software is written to use .ppm style image files. This means that images in other formats must be converted to .ppm files before they can be used. The command convert, found on most Linux systems, can be used to convert an image file of some other format to a .ppm format. For example issuing the command

      % convert foo.jpg foo.ppm
      
    will generate a .ppm form of the image file foo.jpg. The convert program is available on most Linux systems and can convert to .ppm from many different formats. In general using convert to create .ppm image format files seems to work well. However, for one postscript file we generated, using the GMT software package, convert did not create a .ppm file that could be processed by the genPaged program (see next step). For this file the following conversion command did work
      % gs -q -dNOPAUSE -dNO_PAUSE -sDEVICE=ppmraw -sOutputFile=erzican_srtm3.ppm erzican_srtm.ps
      

  • preprocessing to convert .ppm image to .ppm.paged format. Before an image can be displayed by showPaged it must be converted to a special form of .ppm file known as a .ppm.paged file. This conversion is performed by the genPaged program that can be found in the directory /root/LCD/bigView on the controller machine (10.12.2.250). The input to genPaged is a .ppm file, it produces a file with the suffix .ppm.paged. The program is run with no arguments except the name of the .ppm file e.g.

       % /root/LCD/bigView/genPaged foo.ppm
      
    the name of the file produced by genPaged is the name of the input file with the suffix .paged added e.g. foo.ppm.paged. When genPaged runs sucessfully it produces output like the text shown below.
    [root@localhost bigView]# ./genPaged foo.ppm
    ===== foo.ppm =====
    Format: Binary PPM
    Max Pixel Value = 255
              Width = 9600
             Height = 7200
         Components = 3[1=grey,3=rgb]
          Bit Depth = 8 bits
         Pixel Size = 3 bytes
             Offset = 17 bytes
    P6
    # Paged format with mipmaps: 256x256x3 = 196608 bytes per page
    # Level 0 : [9600,7200] => [38,29] = 1102 pages starting at page    0 @
    # 835 bytes
    # Level 1 : [4800,3600] => [19,15] =  285 pages starting at page 1102 @
    # 216662851 bytes# Level 2 : [2400,1800] => [10, 8] =   80 pages starting at page 1387 @
    # 272696131 bytes
    # Level 3 : [1200, 900] => [ 5, 4] =   20 pages starting at page 1467 @
    # 288424771 bytes
    # Level 4 : [ 600, 450] => [ 3, 2] =    6 pages starting at page 1487 @
    # 292356931 bytes
    # Level 5 : [ 300, 225] => [ 2, 1] =    2 pages starting at page 1493 @
    # 293536579 bytes
    # Level 6 : [ 150, 112] => [ 1, 1] =    1 pages starting at page 1495 @
    # 293929795 bytes
    # ========================================
    # Total pages = 1496
    # Total bytes = header + pages
    #             = 835 + 294125568 = 294126403
    9600 7200 255
    
    Levels = 6
      

  • staging the file to the rendering machines. Once a .ppm.paged file has been created it should be copied to a local directory on each of the rendering machines. This ensures that I/O performance is as fast as possible. The script cppic (shown below) in the LCD/ directory on the controller machine automates this copying.

       i=12
       while test ! "x$i" = x28 ; do
        scp  $1 "@10.12.2."$i":/HYPERWALL/bigView/"$1 &
        i=$(( $i + 1 ))
       done
      
    Run this script after creating a .ppm.paged file by entering the command
       % ./cppic foo.ppm.paged
      

  • displaying the file from the rendering machines. Once a .ppm.paged file has been distributed to all the rendering machines it can be displayed by the showPaged program. The showPaged program understands the geometry of the LCD wall and controls the display of an image that is paged over the entire wall. The showPaged program executes on each of the rendering machines separately. The script showpage_all(shown below), in the directory /root/LCD on the controlling machine can be used to start showPaged on all 16 machines with the appropriate topology. The -r4,4,n,m option is used to tell showPaged the fraction of the full matrix it is responsible for.

      ssh 10.12.2.14 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,0,0  '$1 &
      ssh 10.12.2.23 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,1,0  '$1 &
      ssh 10.12.2.27 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,2,0  '$1 &
      ssh 10.12.2.13 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,3,0  '$1 &
    
      ssh 10.12.2.20 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,0,1  '$1 &
      ssh 10.12.2.25 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,1,1  '$1 &
      ssh 10.12.2.18 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,2,1  '$1 &
      ssh 10.12.2.24 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,3,1  '$1 &
    
      ssh 10.12.2.22 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,0,2  '$1 &
      ssh 10.12.2.21 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,1,2  '$1 &
      ssh 10.12.2.12 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,2,2  '$1 &
      ssh 10.12.2.16 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,3,2  '$1 &
    
      ssh 10.12.2.15 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,0,3  '$1 &
      ssh 10.12.2.19 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,1,3  '$1 &
      ssh 10.12.2.17 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,2,3  '$1 &
      ssh 10.12.2.26 'cd /HYPERWALL/bigView; export DISPLAY=":0.0"; ./showPaged -r4,4,3,3  '$1 &
      
    Run the showpage_all on the controlling machine by entering the command
       ./showpage_all foo.ppm.paged
      

  • launching the control program. Once showPaged has launched on the

    ./hyperx          \
      10.12.2.12:0.0 \
      10.12.2.13:0.0 \
      10.12.2.14:0.0 \
      10.12.2.15:0.0 \
      10.12.2.16:0.0 \
      10.12.2.17:0.0 \
      10.12.2.18:0.0 \
      10.12.2.19:0.0 \
      10.12.2.20:0.0 \
      10.12.2.21:0.0 \
      10.12.2.22:0.0 \
      10.12.2.23:0.0 \
      10.12.2.24:0.0 \
      10.12.2.25:0.0 \
      10.12.2.26:0.0 \
      10.12.2.27:0.0
      

  • panning and zooming with an image displayed by showPaged. The table below shows the commands that are supported by the showPaged program. These commands cause the image that is displayed to move around and to resize.

    Key or button Action
    right_mouse Pan
    middle_mouse Zoom in and out
    left_mouse Rotate (sphere mode only)
    m Toggle project onto sphere
    q Quit showPaged