proteus-h2020 / proteus-solma

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Installing SOLMA with OpenSuse

dungqly opened this issue · comments

Everything is going well until...
I am trying to install SOLMA with the command line:
mvn install
(The step #4) as instructed in https://github.com/proteus-h2020/TestSolma)
I get the error as shown below. It is something about "undefined symbol: cblas_dgemm". I have already both blas and atlas installed in my computer.

If you know how to fix it please could you let me know.

I am using Suse version Leap42.1

Thanks,
Dung

[INFO] --- scalatest-maven-plugin:1.0:test (integration-test) @ proteus-solma_2.10 ---
Discovery starting.
Discovery completed in 124 milliseconds.
Run starting. Expected test count is: 4
FrequentDirectionsITSuite:
Flink's Frequent Directions
15:09:06.509 [ScalaTest-main-running-FrequentDirectionsITSuite] [ - ] WARN org.apache.flink.runtime.net.SSLUtils - Not a SSL socket, will skip setting tls version and cipher suites.
May 02, 2017 3:09:08 PM com.github.fommil.jni.JniLoader liberalLoad
INFO: successfully loaded /tmp/jniloader442498144106495151netlib-native_system-linux-x86_64.so
May 02, 2017 3:09:08 PM com.github.fommil.jni.JniLoader load
INFO: already loaded netlib-native_system-linux-x86_64.so
java: symbol lookup error: /tmp/jniloader442498144106495151netlib-native_system-linux-x86_64.so: undefined symbol: cblas_dgemm
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 40.014 s

Hi, it looks there is some problem with netlib (the underlying linear algebra library we use). I would suggest you to install all the dependencies listed in the Linux config section [1]

[1] https://github.com/fommil/netlib-java#linux

Hi Ventura,

sudo apt-get install libatlas3-base libopenblas-base
sudo update-alternatives --config libblas.so
sudo update-alternatives --config libblas.so.3
sudo update-alternatives --config liblapack.so
sudo update-alternatives --config liblapack.so.3

Do you know how to use those above command lines in Opensuse?

I use:
sudo zypper install libatlas3 libopenblas

But it shows something like
Loading repository data...
Reading installed packages...
'libatlas3' is already installed.
No update candidate for 'libatlas3-3.10.2-4.6.x86_64'. The highest available version is already installed.
'libopenblas' not found in package names. Trying capabilities.
No provider of 'libopenblas' found.
Resolving package dependencies...

Nothing to do

I have used YaST instead and installed all atlas and blas libs but I do not know why it shows errro
"undefined symbol: cblas_dgemm" when I use
mvn install to install SOLMA.

Hi @dungqly

Could you try the following command?

sudo zypper install libatlas-base-dev

I think you are missing the libatlas-base-dev package, which should contain such missing symbol (cblas_dgemm)

Hi Nacho,

Here is the error when I run the command as you suggested.

dungly@suse:~> sudo zypper install libatlas-base-dev
Loading repository data...
Reading installed packages...
'libatlas-base-dev' not found in package names. Trying capabilities.
No provider of 'libatlas-base-dev' found.

In OpenSuse it seems to have a difference between "libatlas3" and "libatlas3-base"

When I use:
sudo zypper install libatlas3

Then I have this
dungly@suse:~> sudo zypper install libatlas3
Loading repository data...
Reading installed packages...
'libatlas3' is already installed.
No update candidate for 'libatlas3-3.10.2-4.6.x86_64'. The highest available version is already installed.
Resolving package dependencies...

Nothing to do

BUT if I use:
sudo zypper install libatlas3-base
then I have this

dungly@suse:~> sudo zypper install libatlas3-base
Loading repository data...
Reading installed packages...
Package 'libatlas3-base' not found.
Resolving package dependencies...

Nothing to do.

A similar issue was reported some time ago by a OpenSuse user:
fommil/netlib-java#66

Could you try with the proposed solution? (last comment)

It seems that my new version of Atlas in Suse Leap41.1 does not have libcblas.so.3 but the older version has.

After downgrading atlas to older version I have a new error "undefined symbol: slamch_" when trying to install SOLMA:
mvn install

[INFO] --- scalatest-maven-plugin:1.0:test (integration-test) @ proteus-solma_2.10 ---
Discovery starting.
Discovery completed in 156 milliseconds.
Run starting. Expected test count is: 4
FrequentDirectionsITSuite:
Flink's Frequent Directions
13:50:01.857 [ScalaTest-main-running-FrequentDirectionsITSuite] [ - ] WARN org.apache.flink.runtime.net.SSLUtils - Not a SSL socket, will skip setting tls version and cipher suites.
May 03, 2017 1:50:03 PM com.github.fommil.jni.JniLoader liberalLoad
INFO: successfully loaded /tmp/jniloader6540861316573616181netlib-native_system-linux-x86_64.so
java: symbol lookup error: /tmp/jniloader6540861316573616181netlib-native_system-linux-x86_64.so: undefined symbol: slamch_
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

This is what I have with ldd:

dungly@suse:> ldd /tmp/jniloader4513052076299525864netlib-native_system-linux-x86_64.so
ldd: warning: you do not have execution permission for `/tmp/jniloader4513052076299525864netlib-native_system-linux-x86_64.so'
linux-vdso.so.1 (0x00007ffc0d966000)
libgfortran.so.3 => /usr/lib64/libgfortran.so.3 (0x00007eff77000000)
libblas.so.3 => /usr/lib64/libblas.so.3 (0x00007eff76da7000)
liblapack.so.3 => /usr/lib64/atlas/liblapack.so.3 (0x00007eff76b83000)
libc.so.6 => /lib64/libc.so.6 (0x00007eff767db000)
libquadmath.so.0 => /usr/lib64/libquadmath.so.0 (0x00007eff7659c000)
libm.so.6 => /lib64/libm.so.6 (0x00007eff7629a000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007eff76083000)
libf77blas.so.3 => /usr/lib64/atlas/libf77blas.so.3 (0x00007eff75e62000)
libcblas.so.3 => /usr/lib64/atlas/libcblas.so.3 (0x00007eff75c3f000)
/lib64/ld-linux-x86-64.so.2 (0x000055a4a1a3d000)
libatlas.so.3 => /usr/lib64/atlas/libatlas.so.3 (0x00007eff74f5e000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007eff74d41000)
dungly@suse:
> ldd /tmp/jniloader5216132806779094329netlib-native_system-linux-x86_64.so:
ldd: /tmp/jniloader5216132806779094329netlib-native_system-linux-x86_64.so:: No such file or directory

What a mess!

What about trying to reinstall the whole netlib library?

Yes, just done it. So the error is expected as:
java: symbol lookup error: /tmp/jniloader9069070264778543719netlib-native_system-linux-x86_64.so: undefined symbol: cblas_dgemm

Any ideas, please.

[INFO] --- scalatest-maven-plugin:1.0:test (integration-test) @ proteus-solma_2.10 ---
Discovery starting.
Discovery completed in 129 milliseconds.
Run starting. Expected test count is: 4
FrequentDirectionsITSuite:
Flink's Frequent Directions
14:38:05.950 [ScalaTest-main-running-FrequentDirectionsITSuite] [ - ] WARN org.apache.flink.runtime.net.SSLUtils - Not a SSL socket, will skip setting tls version and cipher suites.
May 03, 2017 2:38:07 PM com.github.fommil.jni.JniLoader liberalLoad
INFO: successfully loaded /tmp/jniloader9069070264778543719netlib-native_system-linux-x86_64.so
May 03, 2017 2:38:07 PM com.github.fommil.jni.JniLoader load
INFO: already loaded netlib-native_system-linux-x86_64.so
java: symbol lookup error: /tmp/jniloader9069070264778543719netlib-native_system-linux-x86_64.so: undefined symbol: cblas_dgemm
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 36.766 s
[INFO] Finished at: 2017-05-03T14:38:07+01:00
[INFO] Final Memory: 104M/1518M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.scalatest:scalatest-maven-plugin:1.0:test (integration-test) on project proteus-solma_2.10: There are t

The problem is that your system does not have ATLAS and OpenBLAS libraries installed. I am not an opensuse user, therefore, I can only suggest to either build ATLAS and OpenBLAS from their source and add the libraries path to LD_LIBRARY_PATH (check their documentation), or change OS (choosing a more mainstream one, e.g., ubuntu), or use a virtual machine.

or change OS (choosing a more mainstream one, e.g., ubuntu), or use a virtual machine.

Agreed. Using Ubuntu and it works well.

Thanks a lot for your time and your suggestions @ventura and @nacho.

Regards,
Dung

commented

For future reference, I was able to solve this by installing OpenBLAS.

sudo zypper install libopenblas_openmp0
sudo update-alternatives --config libblas.so.3

Then selecting the newly installed library.