Petsc configure failure : --with-ml-lib

Asked by Iain Waugh

Hi all,

I am trying to install using dorsal on openSUSE 11.4. The dorsal script has a problem when installing Petsc, however, and gives the following error:
"
TESTING: configureLibrary from PETSc.packages.ml(/home/icw26/projects/FEniCS/src/petsc-3.2-p5/config/BuildSystem/config/package.py:417)
['/home/icw26/projects/FEniCS/include/trilinos']
TESTING: check from config.libraries(/home/icw26/projects/FEniCS/src/petsc-3.2-p5/config/BuildSystem/config/libraries.py:133)
*******************************************************************************
         UNABLE to CONFIGURE with GIVEN OPTIONS (see configure.log for details):
-------------------------------------------------------------------------------
--with-ml-lib=['/home/icw26/projects/FEniCS/lib/libml.so'] and
--with-ml-include=['/home/icw26/projects/FEniCS/include/trilinos'] did not work
*******************************************************************************
"

I have checked the path and libml.so does exist at that location.

I have followed everything in that the dorsal script suggested for openSUSE 11.4, *except*:
1) I had to manually install rpms for umfpack-devel and hdf5-devel , because zypper didn't have them
2) I manually add UMFPACK_INCLUDE_DIRS and TPL_UMFPACK_INCLUDE_DIRS into trilinos.package, because it couldn't find umfpack.
3) I did not run "mpi-selector --set openmpi-1.3.2" because i already have mpich2 installed on my system.

I'm not sure if this is relevant, but configuring Trilinos also gave the additional error for pytrilinos:
Could NOT find PythonLibs (missing: PYTHON_LIBRARIES)

Does anyone have any ideas what is wrong ?? Attempting to install this has already eaten a lot of my time, so I'd be grateful for any suggestions that you have. Thanks,

Iain

Question information

Language:
English Edit question
Status:
Solved
For:
Dorsal Edit question
Assignee:
No assignee Edit question
Solved by:
Iain Waugh
Solved:
Last query:
Last reply:
Revision history for this message
Johannes Ring (johannr) said :
#1

Take a look in /home/icw26/projects/FEniCS/src/petsc-3.2-p5/configure.log. It should tell you way it fails to work with ml.

Are you using Dorsal 1.0.0? I would recommend to use the development version instead.

Revision history for this message
Iain Waugh (icw26) said :
#2

Thanks for the reply Johannes,

I had looked at the petsc configure.log but couldn't understand why the problem occured.

I tried again with dorsal-1.0-beta2 as you suggested and Igot further. It crashed out when trying to download fiat and ufc from the web, because the web addresses were wrong. I replaced "trunk" with "1.0.x"for fiat and "2.0.x" for ufc, so that the addresses were valid and that helped.
It then had a problem compiling ufc, because the PYTHON_INCLUDE_DIR or PYTHON_LIBRARY flags are not set. Dorsal has downloaded its own python distribution, and I can't find it's include directory - "find . -name Python.h" in the FEniCS build directory gives nothing.

I tried setting the PYTHON_INCLUDE_DIR to one that I previously had on my computer "/home/icw26/include/python2.7", and the PYTHON_LIBRARY flag to a python library - "/home/icw26/lib/libpython2.7a", but this just made running dorsal_build for ufc give:
"
make[2]: Entering directory `/home/icw26/projects/FEniCS/src/ufc-2.0.3/dorsal_build_dir'
Linking CXX shared module _ufc.so
/usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../x86_64-suse-linux/bin/ld: /home/icw26/lib/libpython2.7.a(abstract.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/home/icw26/lib/libpython2.7.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [_ufc.so] Error 1
"

This suggested that what I was doing was stupid. So, what should the PYTHON_INCLUDE_DIR or PYTHON_LIBRARY flags be for ufc?

Thanks again,

Iain

Revision history for this message
Johannes Ring (johannr) said :
#3

Sorry if I was being unclear, but with development version I meant the one from the Bazaar branch on Launchpad. You can fetch it by running:

  bzr branch lp:dorsal

(The 1.0-beta2 is older than 1.0.0.)

Revision history for this message
Iain Waugh (icw26) said :
#4

Hi Johannes,

I tried the development version and it fails in exactly the same place as dorsal1.0.0 , i.e. it fails in petsc, with the options --with-ml-lib and --with-ml-include .

Again, I couldn't understand why this was failing from the configure logs. I've put them on the internet, so if you have time to have a look at them then I would be grateful, because you're likely to see something that I will not.
http://www.srcf.ucam.org/~icw26/configure_logs/

Thanks,

Iain

Revision history for this message
Johannes Ring (johannr) said :
#5

The problem is almost at the bottom of configure.log, looking like this:

sh: mpicxx -o /tmp/petsc-3ehWJe/config.libraries/conftest -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -O /tmp/petsc-3ehWJe/config.libraries/conftest.o -Wl,-rpath,/home/icw26/projects/FEniCS/lib -L/home/icw26/projects/FEniCS/lib -lml -llapack -lblas -Wl,-rpath,/home/icw26/projects/mpich2-install/lib -L/home/icw26/projects/mpich2-install/lib -Wl,-rpath,/usr/lib64/gcc/x86_64-suse-linux/4.5 -L/usr/lib64/gcc/x86_64-suse-linux/4.5 -Wl,-rpath,/opt/intel/Compiler/11.1/046/lib/intel64 -L/opt/intel/Compiler/11.1/046/lib/intel64 -Wl,-rpath,/opt/intel/Compiler/11.1/046/mkl/lib/em64t -L/opt/intel/Compiler/11.1/046/mkl/lib/em64t -Wl,-rpath,/usr/x86_64-suse-linux/lib -L/usr/x86_64-suse-linux/lib -lmpichf90 -lgfortran -lm -Wl,-rpath,/home/icw26/projects/mpich2-install/lib -Wl,-rpath,/usr/lib64/gcc/x86_64-suse-linux/4.5 -Wl,-rpath,/opt/intel/Compiler/11.1/046/lib/intel64 -Wl,-rpath,/opt/intel/Compiler/11.1/046/mkl/lib/em64t -Wl,-rpath,/usr/x86_64-suse-linux/lib -lm -Wl,-rpath,/home/icw26/projects/mpich2-install/lib -L/home/icw26/projects/mpich2-install/lib -Wl,-rpath,/home/icw26/projects/mpich2-install/lib -L/home/icw26/projects/mpich2-install/lib -Wl,-rpath,/usr/lib64/gcc/x86_64-suse-linux/4.5 -L/usr/lib64/gcc/x86_64-suse-linux/4.5 -Wl,-rpath,/opt/intel/Compiler/11.1/046/lib/intel64 -L/opt/intel/Compiler/11.1/046/lib/intel64 -Wl,-rpath,/opt/intel/Compiler/11.1/046/mkl/lib/em64t -L/opt/intel/Compiler/11.1/046/mkl/lib/em64t -Wl,-rpath,/opt/intel/Compiler/11.1/046/lib/intel64 -L/opt/intel/Compiler/11.1/046/lib/intel64 -Wl,-rpath,/opt/intel/Compiler/11.1/046/mkl/lib/em64t -L/opt/intel/Compiler/11.1/046/mkl/lib/em64t -Wl,-rpath,/usr/x86_64-suse-linux/lib -L/usr/x86_64-suse-linux/lib -ldl -Wl,-rpath,/home/icw26/projects/mpich2-install/lib -lmpich -lopa -lpthread -lrt -lgcc_s -ldl
Executing: mpicxx -o /tmp/petsc-3ehWJe/config.libraries/conftest -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -O /tmp/petsc-3ehWJe/config.libraries/conftest.o -Wl,-rpath,/home/icw26/projects/FEniCS/lib -L/home/icw26/projects/FEniCS/lib -lml -llapack -lblas -Wl,-rpath,/home/icw26/projects/mpich2-install/lib -L/home/icw26/projects/mpich2-install/lib -Wl,-rpath,/usr/lib64/gcc/x86_64-suse-linux/4.5 -L/usr/lib64/gcc/x86_64-suse-linux/4.5 -Wl,-rpath,/opt/intel/Compiler/11.1/046/lib/intel64 -L/opt/intel/Compiler/11.1/046/lib/intel64 -Wl,-rpath,/opt/intel/Compiler/11.1/046/mkl/lib/em64t -L/opt/intel/Compiler/11.1/046/mkl/lib/em64t -Wl,-rpath,/usr/x86_64-suse-linux/lib -L/usr/x86_64-suse-linux/lib -lmpichf90 -lgfortran -lm -Wl,-rpath,/home/icw26/projects/mpich2-install/lib -Wl,-rpath,/usr/lib64/gcc/x86_64-suse-linux/4.5 -Wl,-rpath,/opt/intel/Compiler/11.1/046/lib/intel64 -Wl,-rpath,/opt/intel/Compiler/11.1/046/mkl/lib/em64t -Wl,-rpath,/usr/x86_64-suse-linux/lib -lm -Wl,-rpath,/home/icw26/projects/mpich2-install/lib -L/home/icw26/projects/mpich2-install/lib -Wl,-rpath,/home/icw26/projects/mpich2-install/lib -L/home/icw26/projects/mpich2-install/lib -Wl,-rpath,/usr/lib64/gcc/x86_64-suse-linux/4.5 -L/usr/lib64/gcc/x86_64-suse-linux/4.5 -Wl,-rpath,/opt/intel/Compiler/11.1/046/lib/intel64 -L/opt/intel/Compiler/11.1/046/lib/intel64 -Wl,-rpath,/opt/intel/Compiler/11.1/046/mkl/lib/em64t -L/opt/intel/Compiler/11.1/046/mkl/lib/em64t -Wl,-rpath,/opt/intel/Compiler/11.1/046/lib/intel64 -L/opt/intel/Compiler/11.1/046/lib/intel64 -Wl,-rpath,/opt/intel/Compiler/11.1/046/mkl/lib/em64t -L/opt/intel/Compiler/11.1/046/mkl/lib/em64t -Wl,-rpath,/usr/x86_64-suse-linux/lib -L/usr/x86_64-suse-linux/lib -ldl -Wl,-rpath,/home/icw26/projects/mpich2-install/lib -lmpich -lopa -lpthread -lrt -lgcc_s -ldl
sh:
Possible ERROR while running linker: /usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_l_free_factor'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_l_transpose'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_analyze'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_l_start'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_l_analyze'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_l_free_sparse'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_finish'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_l_print_common'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_free_sparse'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_start'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `SuiteSparse_time'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_free_factor'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_transpose'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_l_finish'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_print_common'
collect2: ld returned 1 exit status
 output: ret = 256
error message = {/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_l_free_factor'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_l_transpose'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_analyze'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_l_start'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_l_analyze'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_l_free_sparse'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_finish'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_l_print_common'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_free_sparse'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_start'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `SuiteSparse_time'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_free_factor'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_transpose'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_l_finish'
/usr/lib64/libumfpack-5.6.1.so: undefined reference to `cholmod_print_common'
collect2: ld returned 1 exit status
}

One way to fix this will be to rebuild Trilinos and link it with the SuiteSparse libraries. Look at FEniCS/packages/trilinos.package (in Dorsal) where it tests for UMFPACK_DIR and modify it for your platform.

Revision history for this message
Iain Waugh (icw26) said :
#6

Thanks Johannes,

Modifying UMFPACK_DIR seems to have solved that problem. The installation continued until it reached ufc, where it failed in exactly the same manner as the second post above (which used dorsal-1.0-beta2). The ufc package does not know the value of the required flags PYTHON_INCLUDE_DIR and PYTHON_LIBRARY. The exact error message is included below.

I previously tried to set these myself (see above post) but this didn't help. Do you have any idea what I should set PYTHON_INCLUDE_DIR and PYTHON_LIBRARY to ?? In particular, I'm not sure what filenames that ufc is going to be looking for - i.e. does it want something called libpython? I only have one of them (libpython2.7.a) and it didn't like that last time because of an fPIC issue.

Any ideas? Thanks for taking the time to reply.

Iain

Building ufc-2.0.5
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
SWIG_MODULE_LOCATION /home/icw26/projects/FEniCS/src/ufc-2.0.5/dorsal_build_dir/_ufc.so
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
PYTHON_INCLUDE_DIR (ADVANCED)
   used as include directory in directory /home/icw26/projects/FEniCS/src/ufc-2.0.5
PYTHON_LIBRARY (ADVANCED)
    linked by target "_ufc" in directory /home/icw26/projects/FEniCS/src/ufc-2.0.5

-- Configuring incomplete, errors occurred!

Revision history for this message
Johannes Ring (johannr) said :
#7

You should build the development versions of the FEniCS packages by setting STABLE_BUILD=false in dorsal.cfg. I'm not sure if that will fix the problem with UFC and Python, but let's try that first.

Revision history for this message
Iain Waugh (icw26) said :
#8

I've just re-run it with STABLE_BUILD=false. Exactly the same issue.

Revision history for this message
Johannes Ring (johannr) said :
#9

PYTHON_INCLUDE_DIR should be set to the directory which includes Python.h, while PYTHON_LIBRARY should point to the Python library (libpythonX.Y). These are normally detected automatically. Are you sure you have installed python-devel?

Revision history for this message
Iain Waugh (icw26) said :
#10

Yes, I have python-devel version 2.7-8.12.1, according to "zypper info python-devel", and it comes from the system packages.

I managed to solve the python problem above, however, by:
1) recompiling my python distribution with --enable-shared
2) setting PYTHON_INCLUDE_DIR=/home/icw26/include/python2.7, and the PYTHON_LIBRARY=/home/icw26/lib/libpython2.7.so in the ufc.package file.

Unfortunately there were then further complications:
1) A lot of the compile shared libraries in ${INSTALL_PATH}/lib had missing links. For example, libdolfin.so had no idea where any of the trilinos libraries that it wanted were set. I solved this by running "export LD_RUN_PATH= ${INSTALL_PATH}/lib" before running dorsal.sh . This helped with most of the missing links.
2) The dolfin module folder does not get copied to ${INSTALL_PATH}/lib/python2.7/site-packages , unlike dolfin_utils, which does get compiled to pyc files and then copied. Why is this ?

I tried to run the demo_navier-stokes.py file, and it could not import the dolfin module, because it did not know where it was. I copied the folder ${INSTALL_PATH}/src/dolfin/site-packages/dolfin to ${INSTALL_PATH}/lib/python2.7/site-packages . This resulted in the following error:

-----------
python demo_navier-stokes.py
Traceback (most recent call last):
  File "demo_navier-stokes.py", line 28, in <module>
    from dolfin import *
  File "/home/icw26/projects/FEniCS/lib/python2.7/site-packages/dolfin/__init__.py", line 16, in <module>
    import cpp
  File "/home/icw26/projects/FEniCS/lib/python2.7/site-packages/dolfin/cpp/__init__.py", line 40, in <module>
    exec("import %s" % module_name)
  File "<string>", line 1, in <module>
ImportError: No module named common
-----

'common' is a submodule in this dolfin module folder, but I think that cpp cannot find it because common is not a submodule in the cpp folder - i.e. the folder structure is dolfin->cpp and dolfin->common not dolfin->cpp->common. This suggested that just copying the dolfin folder across like I did is not a sensible way of doing things.

Do you have any idea why the dolfin module is not being installed properly? I have put the dorsal_configure.log and dorsal_build.log online in case that helps:
http://www.srcf.ucam.org/~icw26/configure_logs/

Thanks for the help,

Iain

Revision history for this message
Johannes Ring (johannr) said :
#11

Python support was not been enabled, as can be seen from the dorsal_configure.log:

-- The following optional packages could not be found:
-- ---------------------------------------------------
-- (**) UMFPACK
-- (**) CHOLMOD
-- (**) PASTIX
-- (**) PYTHON
-- (**) SPHINX
-- (**) HDF5

Try to set PYTHON_INCLUDE_DIR and PYTHON_LIBRARY for DOLFIN like you did for UFC.

Revision history for this message
Iain Waugh (icw26) said :
#12

Thanks again Johannes, setting those python flags enabled the dolfin python module to install, just as you thought. Is it a problem that the other files listed are not found? Should I try and enable umfpack etc.?

The demo_navier-stokes file still crashed though. I believe that it is something to do with atlas. The output error was:

----------------------------------

python demo_navier-stokes.py
Calling FFC just-in-time (JIT) compiler, this may take some time.
Calling FFC just-in-time (JIT) compiler, this may take some time.
Calling DOLFIN just-in-time (JIT) compiler, this may take some time.
In instant.import_module_directly: Failed to import module 'dolfin_compile_code_1d1ddc4d00703f8116bd2c7d25ec5bfd' from '/home/icw26/.instant/cache/dolfin_compile_code_1d1ddc4d00703f8116bd2c7d25ec5bfd';
ImportError:/home/icw26/.instant/cache/dolfin_compile_code_1d1ddc4d00703f8116bd2c7d25ec5bfd/_dolfin_compile_code_1d1ddc4d00703f8116bd2c7d25ec5bfd.so: undefined symbol: ATL_zgemoveT;
Failed to import module found in cache. Modulename: 'dolfin_compile_code_1d1ddc4d00703f8116bd2c7d25ec5bfd';
Path: '/home/icw26/.instant/cache/dolfin_compile_code_1d1ddc4d00703f8116bd2c7d25ec5bfd';
ImportError:/home/icw26/.instant/cache/dolfin_compile_code_1d1ddc4d00703f8116bd2c7d25ec5bfd/_dolfin_compile_code_1d1ddc4d00703f8116bd2c7d25ec5bfd.so: undefined symbol: ATL_zgemoveT;
Traceback (most recent call last):
  File "demo_navier-stokes.py", line 52, in <module>
    p_in = Expression("sin(3.0*t)", t=0.0)
  File "/home/icw26/projects/FEniCS/lib64/python2.7/site-packages/dolfin/functions/expression.py", line 523, in __new__
    cpp_base, members = compile_expressions([cppcode])
  File "/home/icw26/projects/FEniCS/lib64/python2.7/site-packages/dolfin/compilemodules/expressions.py", line 176, in compile_expressions
    code_snippets), classnames)
  File "/home/icw26/projects/FEniCS/lib64/python2.7/site-packages/dolfin/compilemodules/expressions.py", line 114, in compile_expression_code
    compiled_module = compile_extension_module(code)
  File "/home/icw26/projects/FEniCS/lib64/python2.7/site-packages/dolfin/compilemodules/jit.py", line 66, in mpi_jit
    return local_jit(*args, **kwargs)
  File "/home/icw26/projects/FEniCS/lib64/python2.7/site-packages/dolfin/compilemodules/compilemodule.py", line 529, in compile_extension_module
    **instant_kwargs)
  File "/home/icw26/projects/FEniCS/lib/python2.7/site-packages/instant/build.py", line 494, in build_module
    module = import_and_cache_module(module_path, modulename, moduleids)
  File "/home/icw26/projects/FEniCS/lib/python2.7/site-packages/instant/cache.py", line 68, in import_and_cache_module
    instant_assert(module is not None, "Failed to import module found in cache. Modulename: '%s';\nPath: '%s';\n%s:%s;" % (modulename, path, type(e).__name__, e))
  File "/home/icw26/projects/FEniCS/lib/python2.7/site-packages/instant/output.py", line 55, in instant_assert
    raise AssertionError(text)
AssertionError: Failed to import module found in cache. Modulename: 'dolfin_compile_code_1d1ddc4d00703f8116bd2c7d25ec5bfd';
Path: '/home/icw26/.instant/cache/dolfin_compile_code_1d1ddc4d00703f8116bd2c7d25ec5bfd';
ImportError:/home/icw26/.instant/cache/dolfin_compile_code_1d1ddc4d00703f8116bd2c7d25ec5bfd/_dolfin_compile_code_1d1ddc4d00703f8116bd2c7d25ec5bfd.so: undefined symbol: ATL_zgemoveT;

--------------------------------------------------------------

Again, any ideas that you have are greatly appreciated.

Iain

Revision history for this message
Iain Waugh (icw26) said :
#13

Interestingly, the cpp version of the navier-stokes demo compiles and runs ok, it is only the python version which does not.

Revision history for this message
Johannes Ring (johannr) said :
#14

Yes, it looks like it is not linking correctly with ATLAS. Take a look at FEniCS/packages/dolfin.package in Dorsal and try to modify for your ATLAS installation.

Revision history for this message
Iain Waugh (icw26) said :
#15

Thanks for the reply Johannes. Can you be any more specific about which flags I need to include? Or is there more information I can provide? I have just spend several more hours trying to solve this problem, but have run out of ideas. I have included a summary below of what I looked at, in case it is of any use.

1) examining the library that fails to load (/home/icw26/.instant/cache/dolfin_compile_code_1d1ddc4d00703f8116bd2c7d25ec5bfd/_dolfin_compile_code_1d1ddc4d00703f8116bd2c7d25ec5bfd.so)

Running lddtree for this library shows that it finds all the .so files that it requires (recursively).

2) I checked the dolfin/dorsal_configure.sh file. It already contained flags that link to the atlas library:
declare -x BLAS_LIBRARIES="/usr/lib64/libblas.so;/usr/lib64/atlas/libcblas.a;/usr/lib64/atlas/libatlas.a"
(BLAS LIBRARIES is included in the CONFOPTS too)
declare -x LD_RUN_PATH="/home/icw26/projects/mpich2-install/lib:/home/icw26/projects/FEniCS/lib:/home/icw26/projects/FEniCS/lib64:/usr/lib64/atlas"
(This variable is also exported - but the libraries are static, so this shouldn't be a problem)

3) I tried manually adding flags to the CONFOPTS in the dorsal_configure file, in the same syntax as those for blas etc., but that did not seem to help.
-D LAPACK_LIBRARIES=/usr/lib64/liblapack.so -D ATLAS_INCLUDEDIR=/usr/include -D ATLAS_LIBRARYDIR=/usr/lib64/atlas -D ATLAS_LIBRARIES:FILEPATH="/usr/lib64/atlas/libcblas.a;/usr/lib64/atlas/libatlas.a"

4) I checked the static library /usr/lib64/libatlas.a using 'nm' for the symbol that is undefined (ATL_zgemoveT). It returned:
ATL_zgemoveT.o:
0000000000000000 T ATL_zgemoveT
                 U ATL_zgemoveT

5) I checked the library that fails to load (the one in .instant/cache) for undefined symbols. It has quite a few, some examples being:
.....U ATL_zgemaxnrm.....U PyArg_ParseTuple.....U _ZN6dolfin10ExpressionC2Ev....U cblas_cdotc_sub..... U exit@@GLIBC_2.2.5

6) dorsal_duild_dir/dolfin.pc has the atlas libs included in the Libs section: -L/usr/lib64/atlas -latlas -lcblas , so that looks fine.

Not knowing the exact process by which dorsal and dolfin are compiling/linking, I'm fairly out of my depth with this, so any suggestions that you have would be welcome.

Iain

Revision history for this message
Johannes Ring (johannr) said :
#16

Try switching the order of the libraries in dolfin.pc. That is, instead of

  -L/usr/lib64/atlas -latlas -lcblas

try this:

  -L/usr/lib64/atlas -lcblas -latlas

Revision history for this message
Iain Waugh (icw26) said :
#17

Thanks for the reply Johannes. I just tried that - having started again with your new dorsal version and trilinos 11 - but it did not change anything at all. Same ATL_zgemoveT symbol is undefined. I have even completely rebuilt and reinstalled atlas from scratch, that didn't help either.

Have you any other ideas what it could be? I have absolutely no idea, and am fairly close to giving up this end!

Iain

Revision history for this message
Johannes Ring (johannr) said :
#18

I'm afraid I'm running out of ideas.

One thing you could try is to let Dorsal build ATLAS.

Revision history for this message
Iain Waugh (icw26) said :
#19

I spent some time with Patrick Farrell yesterday, and he managed to get it up and running. Basically, FEniCS did not like the atlas static library. By providing it with a dynamic library equivalent, it was suddenly happy. I guess that this results in a minor loss of performance, but I'm just happy to have it up and running.

Thanks for all your help Johannes, I wouldn't have got this done without you. For others attempting to install on openSUSE 11.4, I have included a summary below of what helped me, although there are no guarantees that it will help!

Iain

#############################################
##############################################

INSTALLING ON OPENSUSE 11.4

This worked for me - it may not for you. I hope that it helps.

1) I used the development version of dorsal (at the time of writing), available with command: bzr branch lp:dorsal

2) Follow what dorsal.sh tells you to install. For SUSE 11.4, zypper does not have copies of several things that dorsal suggests. I had to also use:
wget http://www.opensuse-education.org/download/repo/1.0/11.1/suse/x86_64/umfpack-devel.rpm
rpm -Uvh umfpack-devel.rpm
wget http://www.opensuse-education.org/download/repo/1.0/11.1/suse/x86_64/libamd2_2_0.rpm
rpm -Uvh libamd2_2_0-2.2.0-9.8.x86_64.rpm
wget http://www.opensuse-education.org/download/repo/1.0/11.1/suse/x86_64/libumfpack5_2_0.rpm
rpm -Uvh libumfpack5_2_0-5.2.0-7.6.x86_64.rpm
zypper in hdf5
zypper in hdf5-devel
zypper in python-ply
zypper in python-devel

3) I had to recompile my python library with --enable-shared, so that I had a libpython.so file.

4) On openSUSE umfpack bits are default put in /usr/lib64/suitesparse and /usr/include/suitesparse . To allow for this, add UMFPACK_DIR=/usr to the end of dorsal.cfg
In trilinos.package change -D UMFPACK_LIBRARY_DIRS=${UMFPACK_DIR}/lib to end in lib64.

5) In trilinos.package, because my python library was not installed as root, I also had to add to the CONFOPTS: -D PYTHON_INCLUDE_DIRS:PATH=/home/icw26/include/python2.7 -D PYTHON_LIBRARIES=/home/icw26/lib/libpython2.7.so
This may not be necessary if your python is installed in /usr/lib or /usr/lib64 .

6) In dolfin.package, I had to give the directory to find armadillo, my python library again and umfpack again. I added to the CONFOPTS: -D UMFPACK_INCLUDE_DIRS=${UMFPACK_DIR}/include/suitesparse
 -D PYTHON_INCLUDE_DIR=/home/icw26/include/python2.7/ -D PYTHON_LIBRARY=/home/icw26/lib/libpython2.7.so
 -D ARMADILLO_DIR=${INSTALL_PATH}
 -D ARMADILLO_LIBRARYDIR=${INSTALL_PATH}/lib

7) I needed to use a shared atlas library, which isn't naturally provided by suse 11.4. Create a symlink to one that is there:
ln -s /usr/lib64/atlas/libsatlas.so.3 /usr/lib64/atlas/libsatlas.so

8) I needed to export LD_RUN_PATH in the shell before running ./dorsal.sh, because otherwise none of the libraries in ${INSTALL_PATH}/lib were linked. This looked like:
export LD_RUN_PATH=${INSTALL_PATH}lib:${INSTALL_PATH}/lib64:/usr/lib64/atlas