Using Cheetah with Pooma

Jeffrey Oldham oldham at codesourcery.com
Wed Jun 20 04:13:18 UTC 2001


Here are the steps I used to compile Pooma with Cheetah on my
uniprocessor Linux machine.

1. Since I am using a uniprocessor Linux computer, I need to use the
shared memory library mm with Cheetah.

a. Obtain a tarball from http://www.engelschall.com/sw/mm/.
b. tar xzvf mm-1.1.3.tar.gz
   cd mm-1.1.3
c. declare -x CC=/home/oldham/gcc-install/gcc1/bin/gcc
	# I wanted to use my gcc3.0 so I declared its location.
	# Otherwise, some default compiler is used.
d. ./configure --prefix=${HOME}/pooma/mm-1.1.3
	# I wanted the resulting files to be placed in the specified directory.
e. make -j 3
   make -j 3 test	# prints success if all tests pass
   make -j 3 install

2. Install the Cheetah code.

a. Obtain a tarball from http://pooma.codesourcery.com/downloads.
   tar xzvf cheetah-1.0.tgz
   cd cheetah-1.0
b. Modify the source code for correct compilation:
  i. Append "*/" to line 9 of src/Utilities/i386-lock.s
  ii. I copied the attached LINUXgcc.conf to config.
	# Modify all lines containing "oldham" to have proper values for you.
  iii. Modify configure using the attached patch.
c. Configure:
  ./configure --noex --arch LINUXgcc --shmem --nompi --prefix ${HOME}/pooma/cheetah-1.0
	# `--noex' specifies no exceptions
	# QUESTION: Should we use exceptions for Pooma and Cheetah?
	# `--shmem' specifies use of the mm package
	# `--nompi' specifies no use of MPI
	# `--prefix' specifies where to install cheetah
d. Compile.
   cd lib/LINUXgcc
   make -j 3
   make -j 3 tests
   make install

3. Compile Pooma with Cheetah specified.

a. Modify ~/pooma/pooma0/src/config/LINUXgcc.conf by specifying Cheetah's location.
b. ./configure --messaging --arch LINUXgcc --suite LINUXgcc --opt
	# --messaging indicates use of Cheetah
c. declare -x POOMASUITE=LINUXgcc && make -j 3

Thanks,
Jeffrey D. Oldham
oldham at codesourcery.com
-------------- next part --------------
*** cheetah-1.0/configure	Wed Jul  5 09:03:03 2000
--- cheetah-1.0/configure	Tue Jun 19 20:14:14 2001
***************
*** 1,3 ****
! #!/usr/local/bin/perl
  ###########################################################################
  #
--- 1,3 ----
! #!/usr/bin/env perl
  ###########################################################################
  #
***************
*** 546,550 ****
        $cpp = $arghash{$cppnm}[1];
      }
!   $extensions .= $cpp;
  
    if (scalar @{$arghash{$arnm}} > 1)
--- 546,551 ----
        $cpp = $arghash{$cppnm}[1];
      }
!   $extensions .= $comptype;
! #  $extensions .= ((split('/', $cpp))[-1]);
  
    if (scalar @{$arghash{$arnm}} > 1)
-------------- next part --------------
###########################################################################
# Cheetah configuration settings
#
# Platform: LINUX
# Compiler: GNU C++ compiler (g++)
#
###########################################################################
#
# This file contains specialized settings indicating how to build Cheetah
# with this platform and compiler.  This is a perl script executed by
# the 'configure' script at the top level of the Cheetah directory structure.
# This file has two sections:
#   1) The locations of include files and libraries for external packages.
#   3) The specialized settings on how to use this platform and compiler.
# You should edit the lines in section 1) to the proper location of the
# external packages.  Do not edit the lines in section 2) unless you
# know what you're doing.
#
###########################################################################

###########################################################################
# Section 1: external package locations. 
#   Include search directories should have a '-I' prepended.
#   Library search directories should have a '-L' prepended.
#   Library filenames should just list the name or use -l prefix as needed.
#   Required defines should have -a '-D' prepended.
###########################################################################

### location of MM files, for shmem controller (if available)

$has_shmem                 = 1;
$shmem_default_dir         = "/home/oldham/pooma/mm-1.1.3";
$shmem_inc                 = "-I$shmem_default_dir/include";
$shmem_lib                 = "-L$shmem_default_dir/lib -lmm";
$shmem_def                 = "";
$shmem_locksrc             = "Utilities/i386-lock.s";
$shmem_lockobj             = "i386-lock.o";
$shmem_as                  = "as";

### location of ULM files, for ULM controller (if available)

$has_ulm                   = 0;


###########################################################################
# Section 2: compilation settings
###########################################################################


###################
### characteristics
###################

### the name of this architecture

$archtype = "linux";
$comptype = "g++";

### are shared libraries supported?

$canmakesharedlib = 1;
$sharedext = "so";


################
### C++ settings
################

### general settings for using the C++ compiler, for both libs and apps

$cpp        = "/home/oldham/gcc-install/gcc1/bin/g++";

$cppargs    = "-ftemplate-depth-60";

$cppex      = "";                  # flag to use exceptions
$cppnoex    = "-fno-exceptions";   # flag to turn off exceptions

$cppverbose = "-v";                # flag for verbose compiler output

$cppshare   = "-fPIC";             # flag for compiling for shared libs


### debug or optimized build settings for C++ applications

$cppdbg     = "-ggdb";

$cppopt     = "-O3 -funroll-loops -fstrict-aliasing";


###################
### linker settings
###################

$link        = $cpp;

$linkargs    = "-L/home/oldham/gcc-install/gcc1/lib";

$linkverbose = "-Wl,-v";

$linkshare   = "-Wl,-rpath,\$(CHEETAH_LIBDIR)";


#####################
### archiver settings
#####################

$ar          = "ar";

$arargs      = "rcsl";

$arshare     = $cpp;             # program to make shared lib

$arshareargs = "-shared -o";      # arguments to make shared lib


# ACL:rcsinfo
#  ----------------------------------------------------------------------
#  $RCSfile: LINUXGCC.conf,v $   $Author: rasmussn $
#  $Revision: 1.3 $   $Date: 2000/06/26 22:07:27 $
#  ----------------------------------------------------------------------
# ACL:rcsinfo

###########################################################################
# the last line of this file must be a '1' so that Perl sees a non-zero
# results from this file
###########################################################################
1;



More information about the pooma-dev mailing list