Problem linking on a Bluegene-L

I am trying to get mpi-ruby-0.4 working on a Bluegene-L system. I
compiled ruby-1.8.4 with --enable-shared. make test seemed ok except it
bombed on the SOAP library.

mpi-ruby-0.4 could not detect my machine configuration, so I copied the
config.guess file from ruby 1.8.4. No clue if this was a good idea, but
it detected the machine as ppc64/Linux.

When compiling mpi-ruby-0.4 I get the follwing error.

Please advise on the next course of action :slight_smile:

-Chad

crb002@bluegene:~/source/mpi_ruby-0.4> make
make all-recursive
make[1]: Entering directory /home/crb002/source/mpi_ruby-0.4' Making all in src make[2]: Entering directory/home/crb002/source/mpi_ruby-0.4/src’
/bgl/BlueLight/ppcfloor/bglsys/bin/mpicc -g -O2
-I/home/crb002/lib/ruby/1.8/powerpc64-linux -I/home/crb002/include -o
mpi_ruby main.o mpi.o mpi_comm.o mpi_exception.o mpi_group.o
mpi_keyval.o mpi_op.o mpi_request.o mpi_status.o -lruby
-L/home/crb002/lib
/bgl/BlueLight/V1R3M0_240_2006-060623/ppc/blrts-gnu/lib/gcc/powerpc-bgl-blrts-gnu/3.4.3/…/…/…/…/powerpc-bgl-blrts-gnu/bin/ld:
warning: libdl.so.2, needed by /home/crb002/lib/libruby.so, not found
(try using -rpath or -rpath-link)
/bgl/BlueLight/V1R3M0_240_2006-060623/ppc/blrts-gnu/lib/gcc/powerpc-bgl-blrts-gnu/3.4.3/…/…/…/…/powerpc-bgl-blrts-gnu/bin/ld:
warning: libcrypt.so.1, needed by /home/crb002/lib/libruby.so, not found
(try using -rpath or -rpath-link)
/bgl/BlueLight/V1R3M0_240_2006-060623/ppc/blrts-gnu/lib/gcc/powerpc-bgl-blrts-gnu/3.4.3/…/…/…/…/powerpc-bgl-blrts-gnu/bin/ld:
warning: libm.so.6, needed by /home/crb002/lib/libruby.so, not found
(try using -rpath or -rpath-link)
/bgl/BlueLight/V1R3M0_240_2006-060623/ppc/blrts-gnu/lib/gcc/powerpc-bgl-blrts-gnu/3.4.3/…/…/…/…/powerpc-bgl-blrts-gnu/bin/ld:
warning: libc.so.6, needed by /home/crb002/lib/libruby.so, not found
(try using -rpath or -rpath-link)
/home/crb002/lib/libruby.so: undefined reference to getenv@GLIBC_2.0' /home/crb002/lib/libruby.so: undefined reference tostrcpy@GLIBC_2.0’
/home/crb002/lib/libruby.so: undefined reference to `chroot@GLIBC_2.0’
…(A few more pages of the same)

Chad B. wrote:

I am trying to get mpi-ruby-0.4 working on a Bluegene-L system. I
compiled ruby-1.8.4 with --enable-shared. make test seemed ok except it
bombed on the SOAP library.

On “a” BlueGene/L? How many of them do you think there are?

On 11/15/06, Jeffrey S. [email protected] wrote:

Chad B. wrote:

I am trying to get mpi-ruby-0.4 working on a Bluegene-L system. I
compiled ruby-1.8.4 with --enable-shared. make test seemed ok except it
bombed on the SOAP library.

On “a” BlueGene/L? How many of them do you think there are?

The TOP500 lists 28, so at least that many.

Ilmari H. wrote:

On 11/15/06, Jeffrey S. [email protected] wrote:

Chad B. wrote:

I am trying to get mpi-ruby-0.4 working on a Bluegene-L system. I
compiled ruby-1.8.4 with --enable-shared. make test seemed ok except it
bombed on the SOAP library.

On “a” BlueGene/L? How many of them do you think there are?

The TOP500 lists 28, so at least that many.

No, those aren’t BlueGene/L’s, they’re other BlueGenes. The BlueGene/L
is by definition the one built for Lawrence Livermore. It’s the fastest
supercomputer in the world. To be using BlueGene/L, you either have to
be working at LLNL or in the IBM research division.

Jeffrey S. wrote:

The TOP500 lists 28, so at least that many.

No, those aren’t BlueGene/L’s, they’re other BlueGenes. The BlueGene/L
is by definition the one built for Lawrence Livermore. It’s the fastest
supercomputer in the world. To be using BlueGene/L, you either have to
be working at LLNL or in the IBM research division.

My failure to understand: Other BlueGenes based on the L architecture
are said by TOP500 to be in the BlueGene/L system family, so are called
BlueGene/Ls in the vernacular. Sorry for not getting it earlier.

Jeffrey S. wrote:

Chad B. wrote:

I am trying to get mpi-ruby-0.4 working on a Bluegene-L system. I
compiled ruby-1.8.4 with --enable-shared. make test seemed ok except it
bombed on the SOAP library.

On “a” BlueGene/L? How many of them do you think there are?

No clue on the official name IBM calls it. It’s one cabinet (1024 nodes)
http://bluegene.ece.iastate.edu/

Also, the problem is worse than I thought. The 1024 compute nodes run on
a different chipset than the service nodes. Thus, I need to hack the
ruby configure script to do cross compilation:

Here is the configure script I modified off of the one from when they
ported Fastest Fourier Transform in The West:

#!/bin/bash

Shell script to build FFTW 2.1.5 on eServer Blue Gene

Owain Kenway, EPCC, 2005

echo “Setting environment variables”
export MPICC=mpixlCC
export CC=blrts_xlc
export F77=blrts_xlf
export FFLAGS=“-O5 -qarch=440d -qtune=440 -qmaxmem=-1”
export CFLAGS=“-O5 -qarch=440d -qtune=440 -qmaxmem=-1”
export LDFLAGS=“-O5 -qarch=440d -qtune=440 -qmaxmem=-1
-L/bgl/BlueLight/ppcfloor/bglsys/lib”
echo “Configuring”
./configure --build=ppc-linux-gnu --host=powerpc-aix
–prefix=/home/crb002/computenode --enable-shared

The problem now when compiling ruby-1.8.5 with the above script is that
configure stops with an error:

…bunch of similar stuff…
checking whether getpgrp requires zero arguments… yes
checking whether setpgrp takes no argument… configure: error: cannot
check setpgrp when cross compiling

Looks like it’s time to hack the configure.in file and feed it back
through autoconf.

Anybody here have experience cross compiling ruby? The only problem I
can see is that the compute nodes run a striped down kernel that only
allows one user process, and has a reduced set of POSIX system calls.
From what I know this shouldn’t be too much of a problem because ruby
was designed to run as a single process.

-Chad