I've been asked to port a Mandelbrot example written in c to perl - to prepare an exercise to get students familiar with the ideas of writing parallel/distributed code. Perl is what the students will be learning in the course.
I have: installed MPICH release (1.2.7p1) required by the Perl Parallel:MPI module installed mpiexec-0.82 from OSC, required interface to PBS compiled the mandelbrot c code with the MPICH mpicc wrapper and successfully ran it using PBS. Next steps: (fail) install the Parallel:MPI code & test, begin porting the Mandelbrot example... Im stuck at building the Parallel:MPI code, with a Position Independent Code error http://www.gentoo.org/proj/en/base/amd64/howtos/index.xml?part=1&chap=3 Here is what happens- $ make ( of perl module Parallel-MPI-0.03) mpicc -c -I/usr/local/mpich/include -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -m64 -DVERSION=\"0.03\" -DXS_VERSION=\"0.03\" -fPIC "-I/usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/CORE" -DFLOAT_HACK MPI.c Running Mkbootstrap for Parallel::MPI () chmod 644 MPI.bs rm -f blib/arch/auto/Parallel/MPI/MPI.so mpicc -shared MPI.o -o blib/arch/auto/Parallel/MPI/MPI.so /usr/bin/ld: /usr/local/mpich/lib/libmpich.a(send.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC /usr/local/mpich/lib/libmpich.a: could not read symbols: Bad value collect2: ld returned 1 exit status make: *** [blib/arch/auto/Parallel/MPI/MPI.so] Error 1 So I thought I could recover by rebuilding MPICH and add the fPIC flag: ./configure --with-device=ch_p4 --prefix=/usr/local/mpich -cflags=-fPIC Unfortunately, is doesn't happen. $ make ( of perl module Parallel-MPI-0.03) cp MPI.pm blib/lib/Parallel/MPI.pm AutoSplitting blib/lib/Parallel/MPI.pm (blib/lib/auto/Parallel/MPI) /usr/bin/perl /usr/lib/perl5/5.8.5/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.5/ExtUtils/typemap -typemap typemap MPI.xs > MPI.xsc && mv MPI.xsc MPI.c mpicc -c -I/usr/local/mpich/include -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -m64 -DVERSION=\"0.03\" -DXS_VERSION=\"0.03\" -fPIC "-I/usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/CORE" -DFLOAT_HACK MPI.c Running Mkbootstrap for Parallel::MPI () chmod 644 MPI.bs rm -f blib/arch/auto/Parallel/MPI/MPI.so mpicc -shared MPI.o -o blib/arch/auto/Parallel/MPI/MPI.so /usr/bin/ld: /usr/local/mpich/lib/libmpich.a(initfcmn.o): relocation R_X86_64_32 against `mpipriv_' can not be used when making a shared object; recompile with -fPIC /usr/local/mpich/lib/libmpich.a: could not read symbols: Bad value collect2: ld returned 1 exit status make: *** [blib/arch/auto/Parallel/MPI/MPI.so] Error 1 What is the correct way to recompile with -fPIC or is there a deeper problem I don't recognize? Thanks all, Paul -- Paul Van Allsburg Hope College Holland, Michigan 49423 616-395-7292 _______________________________________________ Beowulf mailing list, Beowulf@beowulf.org To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.org/mailman/listinfo/beowulf