Building Distributed SuperLU

  1. Download and install Intel Fortran Compiler
  2. Make sure Intel Fortran compiler is available to PATH and it’s libraries and is capable of compiling
    • I added this to my path:
      source /opt/intel/fc/10.1.015/bin/


    • I also needed to install libstd5
      #found this with apt-file search filename
      sudo apt-get install libstdc++5


  3. Download openmpi
  4. Configure openmpi; make sure it can build fortran code
    • #
      tar -xzvf openmpi-1.2.6.tar.gz
      cd openmpi-1.2.6
      ./configure --prefix=/usr/local F77=/opt/intel/fc/10.1.015/bin/ifort FC=/opt/intel/fc/10.1.015/bin/ifort
      sudo make all install


  5. Download and extract SuperLU_DIST_2.2
  6. Copy MAKE_INC/<> to For me it was make.i386_linux.

  7. Edit
    • Change DSuperLUroot to point to wherever you’ve extracted the SuperLU source code
    • Change LOADER to mpicc. I’m not sure yet if this was a good thing.
    • Make kept failing because it was missing for_write_seq_fmt_xmit. I Added this
      LOADOPTS        = -lblas -L/opt/intel/fc/10.1.015/lib/ -lifcore


  8. Make
  9. Copy <superlu>/lib to /opt/pydusa/pydusa/mympi/src

  10. Change so that LLIBS includes -L/opt/pydusa/pydusa/mympi/src/ -lsuperlu_dist_2.0
  11. ???
  12. make
  13. make test

On hexahedral


On Lys (32 bit linux Red Hat )

I followed essentially the same directions as above, but did not install libstd5

  1. Installed latest version of OpenMPI
  2. Configure openmpi; make sure it can build fortran code
    • #
      tar -xzvf openmpi-1.4.2.tar.gz
      cd openmpi-1.4.2
      ./configure --prefix=/usr/local F77=/opt/intel/fc/10.0.023/bin/ifort FC=/opt/intel/fc/10.0.023/bin/ifort
      make all install <-- This needs to be done as root


  3. Compile the mpi module within Continuity, no changes where made to any Makefiles there.
    • cd $CONT_ROOT/src/mpi


  4. Compile the distributed version of SuperLU (version 2.4 was used here), as above I had to modify the file to conform to my platform. The main difference from above is I had to add ‘-lg2c’ to the LOADOPTS parameter, and of course change the locations/names of the BLAS, METISLIB, and PARMETISLIB library files.

    • LOADOPTS        = -lblas -L/opt/intel/fc/10.0.023/lib/ -lifcore -lg2c


  5. Compile the python interface to SuperLU_Dist, located at $CONT_ROOT/src/solvers/dist_superlu. I had to make the following changes to the default Makefile, in addition to the location of various libraries.
    • PINC = -I$(PY_ROOT)/include/python2.5 -I$(PY_ROOT)/lib/python2.5/site-packages/numpy/core/include/numpy -I$(PY_ROOT)/lib/python2.5/site-packages/numpy/core/include -I$(CONT_ROOT)/src/solverLibraries/SuperLU_DIST_2.4/SRC/
      LIBS = -lm -lg2c -L/opt/intel/fc/10.0.023/lib/ -lifcore $(SLU_LIB) $(BLAS_LIB) $(PARMETIS_LIB) $(METIS_LIB)


  6. Lastly, I was getting a python error when running the src/solvers/dist_superlu/make test: python2.5: relocation error: /usr/local/lib/openmpi/ undefined symbol: mca_base_param_reg_int, so I had to set:

    • export LD_PRELOAD=/usr/local/openmpi/lib/


    and the test succeeded after setting LD_PRELOAD.

On oolite (64 bit linux cluster )

The instructions on lys mostly hold for oolite. Not having root priviledges, I had to install things in my local directories.

  1. I downloaded/installed openMPI and configured it as above (i.e., I included Intel Fortran compiler), the openmpi on oolite at /opt/openmpi seemed to have been built using gfortran.
  2. Downloaded and installed Parmetis from, added -fPIC to OPTFLAGS

  3. Compiled $CONT_ROOT/src/mpi
  4. Compiled $CONT_ROOT/src/solverLibraries/SuperLU_DIST_2.4, after modifying the file, the major change from what was done on lys was:
    LOADOPTS        = -fPIC -lblas -L/opt/intel/Compiler/11.1/072/lib/intel64/ -lifcore -lirc -lsvml


  5. Compiled $CONT_ROOT/src/solvers/dist_superlu, making the same changes to the Makefile as for lys, expect:
    LIBS = -lm -L/opt/intel/Compiler/11.1/072/lib/intel64 -lifcore -lsvml $(SLU_LIB) $(BLAS_LIB) $(PARMETIS_LIB) $(METIS_LIB)


  6. As with lys, I had to do the LD_PRELOAD setting to get the ‘make test’ to work.