This site will look much better in a browser that supports web standards, but it is accessible to any browser or Internet device.


University of Kuopio Homepage Deptartment of Physics Homepage EIT- instrument




Beowulf/Parallel programming related stuff

Using ganglia cluster monitor in a cluster with a non-multicasting switch

April 12th 2006 Antti Vanne at uku fi

ganglia_hack.py - Quick hack to use ganglia in a cluster with a non-multicasting switch. Doesn't scale too well, usable on a 24 cluster though. This is a rewrite of the same perl script in python.

Simple tool to monitor cluster node performance deviations

April 4th 2006 Antti Vanne at uku fi

mpi_busyloop.cpp - This program runs a "busy loop" on the cluster nodes and reports the nodes which run at least 10% slower than the median node. I'm having trouble with some PC hardware, which every now and then starts to generate huge loads of interrupts and hence chokes the performance of a node.

Using ganglia cluster monitor in a cluster with a non-multicasting switch

March 26th 2004 Antti Vanne at uku fi

gangliahack.pl - Quick hack to use ganglia in a cluster with a non-multicasting switch. Doesn't scale too well, usable on a 24 cluster though. Idea: listen to port $serverPort (8666 as default) for gmetad's request for XML data and when connected, gather XML from individual nodes from port $queryPort and serve it to gmetad. Bugfix on mar 26 2004: see code header

Reading and writing matrices / vectors in Petsc and PLAPACK formats using Matlab / C

May 21st 2003 Antti Vanne at uku fi

readColMajMat.m - Reads column-major binary matrix into matlab
writeColMajMat.m - Writes column-major binary matrix
readPetscBinMat.m - Reads Petsc's binary matrix to Matlab
writePetscBin.m - Writes Petsc's binary matrix/vector from Matlab
splitLU.m - Splits full matrix into upper and lower triangular matrices and saves them in Petsc's binary format
splitLU.c - Splits col major full matrix into upper and lower triangular matrices and saves them in Petsc's binary format. Written in C, faster and more memory efficient than the matlab version
ioPlapackBlocked.c - Functions to read/write col major matrix from/to disk and distribute/gather it to PLAPACK's global object block-by-block ie. saving memory.

Pennes bioheat FEM iteration using scalapack and named pipe for data passing

June 18th 2002 Antti Vanne at uku fi

Package bioheat-18062002.tar.gz includes Fortran 90 source for a FEM iteration

      i = 1:N
      T(:,i+1) = AT(:,i) + \Delta t A(P+C(Bu(:,i)).^2 + DT)
    
which is calculated in parallel using parallel versions of BLAS routines included in Scalapack distribution. Fortran program is called from a matlab m-file, which passes the matrices using named pipe. Also included are the two Fortran 90 modules, dataPipe.mod and parallelRoutines.mod, which provide Fortran routines for passing data between Matlab and Fortran binary (as it's not possible to use mex with parallel binaries) and routines for distributing matrices block-cyclically (front ends for Scalapack routines). Usage: compile bioheat solver (make bioheat), copy it to nodes (check make install and copyToNodes.sh script), create a named pipe for data passing (mkfifo /tmp/dataFifo) and run bioheat.m from matlab prompt (T=bioheat;).

Data passing between Matlab and binary executable

June 12th 2002 Antti Vanne at uku fi

When using mpich implementation of the MPI standard, one has to start programs using mpirun command or by giving appropriate command-line parameters to the executable. This prevents the use of mex files and data passing using the routines found from matlab libraries. passMatrix.tar.gz package includes example programs for passing data (full matrices containing real8 or integer4 elements) between Matlab process and a separate process with the help of a named pipe. Installation: unpack the archive, compile the Fortran 90 source, create a named pipe

        make passMatrix
        mkfifo dataFifo
      
and run the passMatrix.m file from matlab prompt. A simple matrix is passed to the Fortran 90 executable, it is multiplied by 2 and passed back.

Distributing a matrix from one node to multiple nodes using ScalaPack

June 6th 2002 Antti Vanne at uku fi

spackDistr.f90 defines a subroutine ddistr(ictxt, M, N, blockSize, A0, A, descA) which distributes a full double precision matrix from root node (row == 0 && col == 0) in process context ictxt to all the nodes in the same context. It is merely a "front end" for ScalaPack routine PDGEMR2D.