The Advanced Techonology Lab, a.k.a. the @lab, is focused on bringing new computing infrastructure to campus and making that infrastructure easily accessible to all members of the UAB community. In that spirit, our current efforts involve Grid Computing and the middleware that makes collaborations possible between groups on campus and around the globe.

The Advanced Technology Lab is a resource of High Performance Computing Services, located in Lister Hill Library and part of the Office of the Vice President for Information Technology

The Unix Philosophy, first impressions

Seeing that Mike Gancarz explicitly stated in his preface to the book that I would benefit greatly from reading his book, and almost assuming that I had a distrust for the UNIX operating system based only on the fact that I haven't used it yet, I was somewhat displeased to find out that he was right. I have yet to read past chapter four but I am already reaping the benefits that he proposed I would.

He began with an introduction to and a history of the UNIX operating system, citing names of people and places that I didn't particularly think was very beneficial for me to know. He soon thereafter broke down the UNIX philosophy "in a nutshell," listing nine tenets that were seen as dogmatic to UNIX developers and 10 "lesser tenets" that are seen as "not-so-dogmatic" to UNIX developers. Many of these tenets I thought were almost common sense to people in the computing world. I thought to myself, yes Mr. Gancarz your right, those are all very important and thank for listing them out for me. But I thought to myself, "What's the big deal?

Integrating PHPki, GridShib CA, and MyProxy CA

| | | | |

[phpwiki]
Taking the time to read up on the GridShib CA and MyProxy CA was very useful. They and phpki ultimately all are backened by an openssl configuration so in a sense are compatible with each other. The decision to use one over the other seems to mainly be about where one stores a cert and how one can retreive it. The GridShib CA has a great way of creating certs that are truely private (client-based key) so I'm guessing there is not a key store in GridShib CA. MyProxy CA would seem to have a keystore since it's backended by Simple CA. This makes it like phpki except that the interface is command-line versus web.

weblogin officially using LDAP over SSL

| | | |

[phpwiki]
weblogin.ac.uab.edu is now using ldaps to access the LDAP service for authentication. Serveral problems existed which had prevented this from working. The default libldap2 binary on debian woody 2.4 is not built with tls enabled. This was the main problem. The fix was to rebuild the openssl source package on the debian build box:

apt-get source libldap2
cd openldap-2.0.23
dpkg-buildpackage -uc -b

and then install resluting libldap2.deb file on weblogin

dpkg -i libldap2-2.0.23.deb

The next step is to tell libldap where to find the trust definition for the UAB ldap SSL interface. This requires the Equifax root. Put that in /usr/lib/ssl/cert/ca-bundle.crt. The location is defined in /etc/ldap/ldap.conf with the values TLS_CACERT (for the bundle file) and TLS_CACERT_DIR (for the hash based files). While I prefer the later only the TLS_CACERT file option seemed to work.

Issues found in PHP4 to PHP5 upgrades

Trac entry for a new project

trac-admin /opt/tracdb/NAME initenv

Shibbolized GridSphere for UABgrid

| | | | |

As of this week, gridsphere V 2.1.4 and gridportlets are running. Tomcat version is 5.0.X. Apache version is 2.2.2


  • gridportlet as SP must be apache protected ->

    • install and configure mod_jk 4.1.30 (as ajp1.3)



      • Description of Connector Protocol
      • be sure mod_jk.so is installed (via RPM)
      • create mod_jk.conf in /etc/apache2 and Include in httpd.conf
          NOTE: skipped steps to secure WEB-INF Directory

    • Reconfigure gridsphere so that tomcat connector is used (5/10/06)

Introduction

| |

In order to demonstrate and enable utilization of a complex engineering toolkit on GRID resources, DAKOTA (Design Analysis Kit for Optimization and Terascale Applications) toolkit being developed at SNL (Sandia National Labs) has been used. DAKOTA is available for download under a GNU General Public License (GPL). DAKOTA runs on most Unix platforms and ports are actively maintained with nightly build verifications for PC Red Hat Linux, Sun Solaris, IBM AIX, SGI IRIX, DEC OSF, and the Intel TeraFLOP machine (ASCI Red).



The DAKOTA (Design Analysis Kit for Optimization and Terascale Applications) toolkit provides a flexible, extensible interface between analysis codes and iteration methods. DAKOTA contains algorithms for optimization with gradient and nongradient-based methods, uncertainty quantification with sampling, reliability, and stochastic finite element methods, parameter estimation with nonlinear least squares methods, and sensitivity/variance analysis with design of experiments and parameter study capabilities.

Commands and Input File Format

| |

The command for running DAKOTA on a single processor and exploiting asynchronous local parallelism is,


dakota -i dakota.in > dakota.out

dakota.in is the input file, dakota.out as the output file. By default DAKOTA wrties a restart file on execution, to read an existing DAKOTA restart file,



dakota -i dakota.in -read_restart dakota.rst > dakota.out

Multiprocessor execution,


mpirun -np 4 dakota -i dakota.in > dakota.out


mpirun -machinefile machines -np 4 dakota -i dakota.in > dakota.out

An issue that can arise with these command line arguments is that the mpirun script distributed with MPICH has been observed to have problems with certain file path specifications (e.g., a relative path such as "../some_file")



DAKOTA input is governed by the IDR input specification file. This file (dakota.input.spec) is used by a code generator to create parsing system components which are compiled into the DAKOTA executable. Therefore, dakota.input.spec is the definitive source for input syntax, capability options, and optional and required capability sub-parameters. Beginning users may find this file more confusing than helpful and, in this case, adaptation of example input files to a particular problem may be a more effective approach.


Detailed description of dakota.input.spec file with sample dakota.in files

Parallel Computing

| |

DAKOTA uses 'Single Program Multiple Data' (SPMD) parallel programming model. It uses message passing routines from MPI standard to communicate data between processors. The SPMD designation denotes that same DAKOTA executable is loaded on all processors during
the parallel invocation.


There are four main parallelism levels in DAKOTA,


1) Algorithmic coarse-grained parallelism: This parallelism involves concurrent execution of independent function evaluations, 
   where a function evaluation is defined as a 'Data request' from an algorithm.
2) Algorithmic fine-grained parallelism: This involves computing basic computational steps of an optimization algorithm (i.e., an internal linear algebra) in parallel.
3) Function evaluation coarse-grained parallelism: This involves concurrent computation of separable parts of a single function evaluation.
4) Function evaluation fine grained parallelism: This involves parallelization of solution steps within a single analysis code.

Coarse grained parallelism requires very little inter-processor communication and is therefore "embrrassingly parallel" i.e.,
there is very little loss in parallel efficiency due to communication as the number of processors increases.


Fine grained parallelism, on the other hand, involves much more communication among processors and care must be taken to avoid the case
of inefficient  machine utilization in which the communication demands among processors outstrip the amount of actual computational
work to be performed.


DAKOTA supports a total of three tiers of scheduling and four levels of parallelism which in combination can minimize efficiency losses and achieve near linear scaling on MP computers.


Concurrent iterators within a strategy ( Scheduling performed by DAKOTA )
Concurrent function evaluations within a iterator ( Scheduling performed by DAKOTA )
Concurrent analyses within each function evaluation ( scheduling performed by DAKOTA )
Multiprocessor analysis ( work distributed by the parallel analysis code )
All the optimization algorithms provided with DAKOTA support parallelism. Simulation invocation through DAKOTA can be synchronous (i.e., Blocking) or asynchronous (i.e., Nonblocking).

DAKOTA supports three approaches to local simulation invocation: Direct function, System call and Fork application. In direct function simulation code is linked as functions within DAKOTA source code. System call and fork interface are used for black-box interface, both are similar except that fork interface prevents file read race condition for asynchronous function evaluations.

DAKOTA uses MPI communicators to identify groups of processors. The global MPI_COMM_WORLD communicator provides the total set of processors allocated to the DAKOTA run. MPI_COMM_WORLD can be partitioned into new intra-communicators which each define a set of processors to be used for a multiprocessor server.

DAKOTA build process

| |

The following documentation of DAKOTA build process was wrtitten for installing DAKOTA version "Version of the Day" on Medusa (Rocks 4.1 cluster).


Vendor packages included in DAKOTA require many libraries to function, a careful study of these packages and their required libraries is required to successfully build DAKOTA. Building DAKOTA from source allows customization with additional packages and porting to additional platforms or operating systems.


Link to Install file, which explains more about it's build process, Install File