Warning: This package contains Makefiles for Solaris, but they do not work because of an /RPC/types.h dependency in tipsy.h. At the moment, the following versions work: Windows, RedHat and SuSE without MPI support. The SuSE version with Scali MPI support works as well (file hubp).

Read some technical details here.

Readme Overview


Installing "Hubble in a bottle!"

First, download the latest version of the program, model and required libraries from the Hubble homepage.

NOTE: The actual distribution already includes binaries for Linux on the Intel x86 platform. If you want the program to run on another platform, you will need to recompile it (see the How to compile section below).

Next, unzip and untar the downloaded packages into the directory of your choosing using:

gunzip package.tar.gz
tar -xf package.tar

If you have superuser access on the machine you want to install the program, move the required libraries to /lib. If not, you have different possibilities: you can move the libraries into the same directory of hubble, or you can set up an environment library before you launch the program with:

tcsh:  setenv LD_LIBRARY_PATH [path to the libraries]
bash:  export LD_LIBRARY_PATH=[path to the libraries]

NOTE: you can use ldd hub to check which libraries are missing.

Once the libraries are in the right place, you can experience the vastness of the Universe by running "Hubble in a bottle!":

./hub [path to the model]

for example:

./hub ../data/virgo2.0050

Press 'h' on the window to view the help text and see how to navigate.

Have fun, and remember that the project is open source and new features are welcome! :-)

Compiling "Hubble in a bottle!"

"Hubble in a bottle!" uses the OpenGL graphics library. You need to download and install Mesa GL (an Open Source implementation of the OpenGL) on your machine. You will need superuser access for this. For example:

../make install

You are almost done. "Hubble in a bottle!" uses the GLUT library, too. Download from the Mesa GL site the package oss-opengl-glu-20000925-1.i386.rpm and install it. For example with:

rpm -Uhv oss-opengl-glu-20000925-1.i386.rpm

Now move the /hubble_prj directory into the /Mesa-5.x directory. In /Mesa-5.x/hubble_prj, you can compile with make because the Makefile uses ../ to reference the Mesa files. As far as I know, it should be possible to compile on Linux for Mac and Windows as well. We would be glad to receive your compiled binary on any platform, so that we can offer them on the homepage as well.

Running "Hubble in a bottle!" on supercomputer clusters

In order for "Hubble in a bottle!" to run on clusters you will need (1) a supercomputer or some Linux computers wired together and (2) an MPI library on each of the clustered computers.

Unfortunately, there are different implementations of MPI. The following instructions apply for the commercial scali library only. We would be glad to receive your Makefiles for LAM and MPICH, both Open Source implementations of MPI, so that we can make them available to the entire community. Thank you!

First, try to compile the code "as-is" using the directions specified in the How to compile section. If that is successful, you are a few steps away from getting Hubble up and running on your cluster.

  1. Open startracker.h and enable the compiler switch MPI_SUPPORT.
  2. Type "cp Makefile.MPI Makefile", so that you get a new Makefile.
  3. Open Makefile and make sure it points to the directory where your MPI libraries are installed.
  4. Compile the code with make. Another binary, called hubp will be created.

    Decide where you want to output the display. This must be a machine the internal nodes can see.

    For example, you might decide to display the output on andromeda.bla.ch:0.0, while the nodes are called lcx01y01, lcx01y02, lcx01y03, ...

  5. On the display machine (andromeda.bla.ch, in our example) type "xhost lcx01y01", so that the node lcx01y01 has the right to use the monitor of andromeda.bla.ch

    The command to run "Hubble in a bottle!" is then:

    mpimon ./hubp ../data/virgo2.00500 andromeda.bla.ch:0.0 -- lcx01y01 1 lcx01y02 1 lcx01y03 1

    In this example, three nodes are used.

    The main node distributes particles to the other nodes. The nodes do the projection, while the main node merges the results. mpimon ensures that if one process crashes on one processor, all other processes are killed. Never run "Hubble in a bottle!" without mpimon.

NOTE: The "Hubble in a bottle!" project is partner of "GPU, a giga@lobal processing unit". If you're interested, go and check it out. GPU is an experimental framework for distributed computing based on the peer-to-peer network Gnutella.

Get the latest development version

"Hubble in a bottle" is developed using the Concurrent Version System (CVS) which is sort of common practice in the Open Source world. Hubble file releases often are behind from one or two weeks in respect to the actual development level. This probably because packaging files requires some work (about 3/4 hour) and because we try to release code in strategic moments, e.g. when the project's activity is low. The development code fixes sometimes bugs and adds new features and therefore new bugs :-). Sometimes, the last development version is broken for some reason. If you still want to be up to date, simply type the following two commands into your console:

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/hubble login 
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/hubble co hubble_prj

Et voila, you should now have a new hubble_prj directory with updated source code.

Support for "Hubble in a bottle!"

We are happy to provide support to "Hubble in a bottle!" users. Please submit a support request through the project's sourceforge interface. In addition, please inform us of any problems with the documentation.

As this project is free we need your help and motivation to improve it and fix the bugs, so please feel free to send reports, or just tell how you like/hate the software! Sourceforge.net provides a good way of submitting/reading feedbacks, bug reports, features requests or patches. Thanks!