logo
Go to the homepage of the Vrije Universiteit. Go to the homepage of the department of computer science. Go to the homepage of the faculty of sciences.

ASCI a14 Ibis/GAT Assignment: Capture Go


For the Ibis/GAT assignment of the ASCI a14 course students are required to write a parallel application using the Satin programming model (which in turn uses the Ibis communication library) and deploy it using the JavaGAT.

For more information on Ibis/JavaGAT, also see the A14 course site

If, after reading this website, you have any questions, feel free to email me at niels AT cs DOT vu DOT nl

Capture Go

Capture go is a simplified variant of the Go board game where whoever captures something first, wins :) Some links:

The goal of the assignment is to write an application which is able to determine the best possible move for the current player, given some initial board. Download a sequential Java go solving application here.The application includes a build.xml file for building the application with ant, as well as a doc, bin and external directory to hold any documentation, scripts and external dependancies for your application.

Although the application randomly creates boards it is deterministic, with a given setting and seed it will always generate and solve the same board, allowing for easy benchmarking of the application. The different command line parameters drasticly change the application runs. If the default parameters do not work for you, try to adjust them somewhat.

Satin

As part of the assignment, you are required to turn the sequential program provided into a Satin application. Satin is a parallel programming environment for divide-and-conquer parallelization, and master-worker parallelization. Satin extends Java with two simple primitives for divide-and-conquer programming: spawn and sync.

Satin is implemented using the IPL communication library and is part of the Ibis project. For more information and downloads see the Ibis website.

The JavaGAT

After developing and testing your application on your local machine, use the JavaGAT to deploy it on the DAS-3 system. JavaGAT is the Java version of the Grid Application Toolkit (GAT) developed by the Gridlab project. The JavaGAT provides a set of interfaces which allow you to perform the basic tasks needed on a grid, such as copying files or scheduling jobs.

In a grid environment, there are often many different ways of performing the same task. For example, a file can be copied using any one of the following commands: cp, scp, ftp, gsiftp, gridftp, globus-url-copy or wget. Although each of these command are somehow different, in the end they all perform the same task; copying a file.

The purpose of the GAT is to hide most of this complexity from the programmer. For each of the basic tasks that applications need to perform on the grid the GAT offers a single (and simple) interface. This interface allows the application to perform the task it is interested in (copying a file for example), without having to worry about how this is exactly implemented.

The GAT is designed in a modular plug-and-play manner. This allows multiple implementations (called adaptors in the GAT) of each interface. The file copy interface, for example, has an implementation (cp), an ssh implementation (scp), an ftp implementation, etc. When the application is trying to use an interface, the GAT will decide which implementation to use, depending on the information it has available (such as source and target URLs, user certificates, etc). Multiple implementations of the same interface may even be used at the same time.

Sometimes the GAT does need some help from the application. When starting a job, for example, there may be more than one way of running it. It can always run it locally, but this is usually not what you want. It may also be able to submit it to some cluster using Globus or start it on some remote machine using ssh. In these cases, you can help the GAT by explicity specifying where you want to run and which adaptor you which to use. For example, by providing te following information to JavaGAT:

"ResourceBroker.adaptor.name", "globus"

This example will submit applications using Globus.

The DAS-3 System

We will use the the Distributed ASCI Supercomputer (DAS-3) as the platform for the practical Send me an e-mail if you don't have an account yet.

The DAS-3 system consist of 5 clusters, each located in a different university.
To use the DAS-3, you can log in to our local frontend machine (fs0.das3.cs.vu.nl) using ssh. For security reasons, this can only be done from VU machines. Once you are on the frontend machine, you can use ssh to get access to one of the other frontends. If you are located at any of the other DAS sites you can ofcourse login to your local cluster instead.

Once you've logged in to one of the frontend machines, you can use it for development and to start jobs on one or more of its compute nodes (using the JavaGAT for example). You should not run cpu intensive applications on the frontend itself, since it used by many users simulateously and also servers as a file server. You may get a lot of angry e-mails if you are using too much CPU-time on one of the frontends!

To be able to submit jobs to the one of the DAS clusters, the JavaGAT will use Globus, for which you need a certificate from DutchGrid. If you do not have a Globus certificate already you should get a Demo certificate, which is good enough for submitting jobs to the entire DAS-3 system. The website to request a certificate can be found here. Make sure you select Demo certification at the bottom of the form. For this demo certificate, you only have to fill in the fields marked with a star. Here's an example (click for a larger version)



Once you've installed the certificate, you can use the following command to generate a certificate-proxy:

grid-proxy-init


The generate a certificate-proxy will have a limited lifetime (12 hours or so). After it has expired you'll need to generate a new one. If your current certificate is expired, you may get the following error when trying to submit a job:

       Proxy file (/tmp/x509up_uXYZ) not found.

Your DutchGrid certificate needs to be added to the Globus administration on the DAS before you can use it. To do this, you must first install your certificate in your fs0 home directory ant then type:
grid-proxy-info -identity
This should produce a line that looks similar to this:
/O=dutchgrid/O=users/O=dutch-demo/O=vu/OU=cs/CN=Your Name
Please send me an email containing this line of text, and I will forward it to the system administator of the DAS.

Assignment

In order to complete this practical, please follow the following receipe:

  • Download the sequencial version of the Go solver here
  • Download the latest Satin/Ibis version here, and create a parallel application using Satin.
  • Test your application on your machine.
  • Test your application on the DAS, using prun (see the DAS-3 site for more info on the DAS-3 and prun)
  • Download the latest JavaGAT version here,
  • Write a small GAT application capable of deploying your application using the GAT. Test it with the "local" adaptor first
  • Test your Satin&GAT applications on your local cluster
  • Run your GAT application on one frontend, submitting it to another DAS cluster
  • Benchmark your application, and write a short report about the practical. Include the difficulties you encountered, how you solved them, and the performance of the resulting application
  • create a "distribution" containing your code and documentation and send it to me at niels_AT_cs_DOT_vu_DOT_nl. You might want to use the "dist" taks in the sequential application for this purpose. Simply change the "name" property in the build.xml file to your name and run "ant dist"

If you have any comments, please e-mail the maintainer of this page.
Your browser does not fully support CSS. This may result in visual artifacts.