Chapter 1. Porting Overview

This document outlines the steps necessary to port an application from an IRIX system to the SGI Altix platform. We define  platform as the set of software interfaces resting on a set of particular hardware, as shown in Figure 1-1. The hardware platform consists of the microprocessor and various other system devices, including disk drives, network connections, and system interconnects. Usually an application gains access to these devices through the operating system and system libraries which are called through a programming language. Other higher level services are provided by the layer called middleware.

Figure 1-1. Hardware and Software Platform

Hardware and Software Platform

Table 1-1 provides an outline of two SGI platforms, the Origin3000 and the Altix. We can see that for the most part these systems have different sets of interfaces. We define porting as the act of adapting an application from one platform to another.

Table 1-1. Platform Comparison

System

Origin3000

Altix

Processor

MIPS

IPF

System HW

NUMAlink

NUMAlink

OS

IRIX

ALE/ProPack (Linux)

System Libraries

libc, MPI, other

libc, MPI, other

Programming Languages

C, C++, Fortran, other

C, C++, Fortran, other

Middleware

various

various

Given the large number of differences between the platforms, one might think that porting is essentially a rewrite of the application. Luckily, many of the differences between platforms are abstracted under standard programming languages and system libraries. At each level of the hierarchy there is a set of development tools that can aid in the process. For example, a C or Fortran program written for the Origin already has a lot of the porting issues solved through the use of standard compliance and features in the programming languages and library interfaces. A Java program (if written in100% pure Java) has even fewer porting issues to resolve.

Table 1-2 gives a comparison of various development tools and utilities available on Origin and Altix platforms.

Table 1-2. Development Tools Comparison

System

Origin3000

Altix (Prop)

Altix (Open Source)

C/C++ Compiler

MIPSpro (cc)

ecc/icc

gcc

Fortran77 Compiler

(f77)

efc/ifort

g77

Fortran90/95 Compiler

(f90)

efc/ifort

N/A

Text Debugger

(dbx)

idb

gdb

Kernel Debugger

kdb

kdb

kdb

GUI Debugger

ProDev Workshop

TotalView, various

ddd

App Perf Tools

SpeedShop

VTune

gprof

System Perf Tools

PCP

VTune/SGI Histx

PCP

Java Virtual Machine

1.4.1

1.4.2 (BEA, Sun)

gjv

Array Services

3.6

3.6

 

Table 1-3 gives a comparison of various development libraries available on Origin and Altix platforms.

Table 1-3. Development Libraries Comparison

System

Origin 3000

Altix (Prop)

Altix (Open Source)

Scientific Libraries

SCSL

SCSL, MKL, Goto BLAS

 

MPI

MPT

MPT

MPICH, LAM

FFIO

Full support

Subset of IRIX support

 

threads

sproc, pthreads

pthreads

pthreads

At each level of the platform hierarchy there are possible porting issues. Table 1-4 summarizes the main ones at each level.

Table 1-4. Platform Layer Porting Issues

Platform Layer

Porting Issues

Processor

Assembly language, endianness

Other HW

Device drivers

OS

Differences in system calls and APIs

System libraries

Differences in APIs

Languages

Differences in ABIs, standards, adherence

Middleware

Existence of different packages, different APIs

Development tools

Differences in the features and user interfaces

This manual attempts to outline each of the issues and explain what it is and how to deal with it. It is best viewed online as many of items have hyperlinks into other SGI manuals and Internet web sites. It is by no means an exhaustive set, but it does highlight the major areas in some detail.

This remainder of this document is organized as follows: