ARSC HPC Users' Newsletter 290, April 16, 2004



ARSC Staff Moving To New Building

After 10 years in the UAF Butrovich Building, most of ARSC's staff is moving approximately a quarter mile North, to the brand spankin' new, West Ridge Research Building.

The high-performance computers, storage silos, systems, and library, primary network devices, and a handful of staff members who need frequent access to the hardware are staying put.

Our network presence, e.g., domain names, email addresses, web addresses, ftp site, etc. will not change. We'll have a new physical mailing address and new phone numbers, not to mention the benefits of a new building, including new training and visualization facilities.

Furniture will be installed next week and people will start moving the following week. We'll let you know our new phone numbers, etc., as soon as they're activated.


X1: New OS and Programming Environment

Within the next couple of weeks we will be upgrading the OS on klondike to UNICOS/mp 2.4 and installing Programming Environment 5.2 (PE5.2).

PE5.2 will be available for testing (as a non-default programming environment module) for a limited time before we make it the default. Keep an eye on the MOTD and news items, and once its installed, you might try it and let us know how it worked.


POSIX Fortran Library Routines

Different operating systems and vendors use different mechanisms to provide the functionality of common Unix system calls to Fortran programs. Four of the more commonly used system utilities are:

"system" : to issue a shell command from Fortran "getenv" : determine current settings of environment variables "iargc" : determine the number of command line arguments "getarg" : get a command-line argument

These utilities are available on ARSC's primary systems, as follows:

  ==========      ======  ======  ======  ======
  AIX             yes     yes     yes     yes
  IRIX            yes     yes     yes     yes
  UNICOS          no      yes     yes     yes
  UNICOS/mk       no      no      yes     no
  UNICOS/mp       no      no      no      no

Cray provides the same functionality using the POSIX API. Thus far in porting codes to the X1, we have encountered calls to the above four routines, and replaced three of them with new interfaces to equivalent POSIX routines. The "SYSTEM" system call is not in the set of POSIX functions, so we call it from a C function which is then called from the Fortran code.

Here's more on the POSIX library, from Cray's X1 man page, "intro_pxf":


The POSIX FORTRAN 77 Language Interfaces Standard IEEE Std 1003.9-1992 (POSIX.a) defines a standardized interface for accessing the system services of IEEE Std 1003.1-1990 (POSIX.1), and supports routines to access constructs not directly accessible with FORTRAN 77.


The man page lists all the POSIX functions with short descriptions, and there's a man page for each function itself. From Cray's on-line manual,

Cray X1(TM) User Environment Differences - S-2310-51 Chapter 2. Fortran Differences

here's a list of the older functions replaced by PXF routines (Note that this is NOT an exhaustive list of the PXF routines supported on the X1-- see "man intro_pxf" for that):

  Older           PXF Interface
  Interface       Routine
  =========       =========
  ALARM           PXFALARM
  CHDIR           PXFCHDIR
  CHMOD           PXFCHMOD
  CHOWN           PXFCHOWN
  CLOSE           PXFCLOSE
  CREAT           PXFCREAT
  DUP             PXFDUP
  FCNTL           PXFFCNTL
  FORK            PXFFORK
  IARGC           IPXFARGC
  KILL            PXFKILL
  LINK            PXFLINK
  LSEEK           PXFLSEEK
  OPEN            PXFOPEN
  PAUSE           PXFPAUSE
  PIPE            PXFPIPE
  SLEEP           PXFSLEEP
  STAT            PXFSTAT
  TIME            PXFTIME
  TIMES           PXFTIMES
  UMASK           PXFUMASK
  UNAME           PXFUNAME
  UTIME           PXFUTIME
  WAIT            PXFWAIT

SX-6 Loading ScaLAPACK MathKeisan Libraries

The order in which you specify libraries to the SX-6 linker is important.

The SX-6 linker, by default, does not do a cyclical search through your list of libraries as it tries to resolve unsatisfied references. If you'd like it to do a cyclical search, pass ld the "-hlib_cyclic" option. This f90 compiler option will do it:


Alternatively, list the libraries in the correct order, which may be easier said than done, as we discovered this week. A user had problems linking a program that uses both ScaLAPACK and LAPACK routines. The solution was to list the libraries in this order:

    -L$(LIBDIR) -lscalapack -lblacsF90init -lblacs -lblacsF90init   \
       -llapack -lblas -lmpi

Visit , for the load order for the other MathKeisan high-performance SX-6 libraries.


ARSC Research Seminar

TAKING SUPERCOMPUTING TO THE LIMITS Erik P. DeBenedictis Sandia National Laboratories

2 pm Monday, April 19, 2004, 109 Butrovich

This talk presents a new way of thinking about supercomputing. We have been thinking about supercomputing relative to Moore's Law, always expecting performance to increase from generation-to-generation but not knowing where the end will be.

We will relate the predictions of experts about technology evolution and its implications to where supercomputers will be when Moore's Law runs its course. For a supercomputer of a size that might be found in a supercomputer center or a defense lab, physics limits performance to about 50 Petaflops for a microprocessor-based system and about 5 Exaflops from a "best case" architecture.

Do we need technology breakthroughs to reach the limits of supercomputing? No, except Moore's Law must continue as predicted. For simulation applications, we will show what computer hardware might look like and we use applications modeling to show that it can approach the limits.

We will present a series of general "next steps" that would help us evolve current Massively Parallel Processors (MPPs) into supercomputers operating at the physical limits. For example, new computing hardware will need to co-exist with microprocessors of familiar design. Some next steps will be to prototype the new hardware, its method of interfacing to microprocessors, and developing software methods for invoking the new hardware easily.

We will end with an overview of technologies that may follow Moore's Law.

Erik DeBenedictis is a member of the technical staff at Sandia National Laboratories, with assignments in computer architecture research and as deputy project leader for the ASCI Red Storm project. Erik received a B. S. from Caltech in Electrical Engineering, an M. S. from Carnegie-Mellon in Computer Engineering, and a Ph. D. from Caltech in Computer Science in 1983. Erik has also worked at Bell Laboratories, Ansoft Corporation, nCUBE Corporation, and started a company called NetAlive, Inc.


For more information contact


Quick-Tip Q & A

A:[[ Let's repeat a good one from 1998, 
 issue #146
  [[   What's your favorite shell alias?  
  [[ If you would, send the alias and a very brief explanation.

  # Ed Kornkven

  Under the heading, "Know Thyself":
    alias amke make
    alias mkae make

  # Martin Luthi

    alias psg='ps aux 
 grep $1'


    myhost> psg java

  This shows all current processes containing the argument (e.g. java).
  On non-GNU systems, the ps options might be different.

  # Rich Griswold

  I have a lot of them, but the one I probably use the most is this:

    alias cls='clear; ls -al --color=auto'

  It clears the screen to get rid of clutter and provides a nice,
  colorized directory listing.  It also has the side effect the whenever
  I'm forced to work from the Windows command line, I'm always clearing
  the screen when I want a directory listing.

  # Greg Newby

  Depends on what shell I'm using.  I like zsh, especially built-in
  recursion ("ls -l **/*h") and compatibility with loops in both sh
  ("for i in *; do") and csh syntax ("foreach i (*)").

  In zsh, here's my prompt variable (not really an alias):
        echo $PROMPT
        %{%}%m(%n) %~ [%!] > %{%}
  which gives information about my directory, username, process ID #,
  and in the color of my choice (cyan):
        underdog(root) ~ [318] > 

  My favorite alias overall has to be "l", which I have on all systems
  so I don't need to type that tiresome and oh-so-long "ls" command:
        alias l='/bin/ls -HFs'
  (the ls path, options and syntax are a little different on different

  For complexity, nothing beats a friendly prompt in csh/tcsh (another
  problem nicely solved in zsh):

    hn=`hostname -s`
    alias sp  'set prompt="${hn}(${wmi}) [\\!] `dirs
sed -e '\''s

'\'' -e '\''s
'\''` } "'
    alias cd 'cd \!*;sp'

  I include "hostname" so my prompt shows what system I'm using, and the
  "who am i" to handle different usernames, and remind me if I'm root.
  Colors are possible with tput, and would make the prompt even longer.

  # The Editor

  List total number of login sessions and everyone logged on, without
  duplication, eight per line:

    alias whoq='who -q 
 tr -s " #" "\n\n" 
 sed -e "s/users/#LOGINS/" 
                sort -u 
 paste -d" " - - - - - - - -'

  # Kate Hedstrom

  Most of my aliases just add options to the command:

    ls      ls -sF
    xfig    xfig -dontshowballoons -startg 2 -fg black -bg LightYellow
    xl      xlock -mode strange
    xterm   xterm -fg white -bg navy -cr white -rw -sb -sl 400

  The same X11 functionality could also be set using resources for these
  last three.

  I think this one has been mentioned before:

    psg     ps -elf 
 grep !* 
 grep -v grep

  Use as "psg matlab" to search for matlab processes, but not report the
  grep process itself. This is the SGI version.  It originally came from
  a Sun user's guide with the SunOS options to ps (ps aux). Use what

  I make gif animations in a clean directory with:

    gifmovie        gifsicle --loop --colors 256 -O2 -d 10 *.gif >! movie.igif

  Make sure that you write to a file that doesn't end in .gif, then
  rename it afterwards. It assumes that each frame is in a file, where
  the filenames are alphabetically in the right order for the

  # Dale Clark

    aliasexpand='sendmail -bv -d27.3'
    echopath='echo $PATH 
 tr ":" "\012"'
    groups='echo `/usr/bin/groups 
 tr -s " " "\n" 
 sort -u 
 tr "\n" " "`'

Q: MPI_Rsend ("ready" send) is supposed to give better performance than
   MPI_Send, but the documentation tells me it's an error to call it
   unless the matching receive has already been posted.

   How can I make sure the receive has already been posted?  Is it 
   really worth it? 

[[ Answers, Questions, and Tips Graciously Accepted ]]

Current Editors:
Ed Kornkven ARSC HPC Specialist ph: 907-450-8669
Kate Hedstrom ARSC Oceanographic Specialist ph: 907-450-8678
Arctic Region Supercomputing Center
University of Alaska Fairbanks
PO Box 756020
Fairbanks AK 99775-6020
E-mail Subscriptions: Archives:
    Back issues of the ASCII e-mail edition of the ARSC T3D/T3E/HPC Users' Newsletter are available by request. Please contact the editors.
Back to Top