[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Compile Octave to use ACML on RHEL 6.1 x86_64 with GCC 4.4.5?
From: |
Christopher Lott |
Subject: |
Compile Octave to use ACML on RHEL 6.1 x86_64 with GCC 4.4.5? |
Date: |
Wed, 01 Aug 2012 21:13:19 -0400 |
User-agent: |
Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20120713 Thunderbird/14.0 |
All, I am trying to put Octave onto a RHEL 6.1 machine to help some
users. I would love to get an RPM but Red Hat in their infinite wisdom
don't offer recent versions; the latest octave RPM on RHN is ver 2.1.57!
I did check EPEL at http://fedoraproject.org/wiki/EPEL and it has a
64-bit version of Octave 3.4.3, which I might try.
But there's the ACML issue. We like using AMD's ACML for the BLAS and
LAPACK implementations because AMD provides a symmetric multi-processor
("mp") version. Using multiple cores can result in notable speedups for
some computations.
So I believe to use ACML I must build from source, but have run aground.
I hope you will please find time to guide me with building Octave
using AMD's ACML.
I'm working on a RHEL 6.1 machine with GCC 4.4.5; gfortran similarly
advertises itself as version 4.4.5. I started by downloading the latest
Octave, ver 3.6.2.
I first tried using the latest ACML, version 5.1, using subdirectory
gfortran64_mp_int64 which is the 64 bit version with 64-bit ints and
multi processing. But running ldd on the single shared library file
seems to indicate that my system is too old:
libacml_mp.so: /usr/lib64/libgfortran.so.3: version `GFORTRAN_1.4'
not found (required by libacml_mp.so)
What version is GFORTRAN_1.4 and how does that relate to GCC v4.4.5?? I
wish I knew.
Next I went back to ACML version 4.4. Again I am using
gfortran64_mp_int64, the 64bit version with 64-bit integers for
symmetric multi-processing. Running ldd on the two shared library
files that came from there seemed to indicate all dependencies are
satisfied:
$ ldd libacml_mv.so
linux-vdso.so.1 => (0x00007fffe8277000)
libgomp.so.1 => /usr/lib64/libgomp.so.1 (0x00007fa241bb6000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa241998000)
libc.so.6 => /lib64/libc.so.6 (0x00007fa241607000)
librt.so.1 => /lib64/librt.so.1 (0x00007fa2413ff000)
/lib64/ld-linux-x86-64.so.2 (0x000000395c400000)
$ ldd libacml_mp.so
linux-vdso.so.1 => (0x00007fff24533000)
librt.so.1 => /lib64/librt.so.1 (0x00007f9948bb8000)
libacml_mv.so => /usr/lib64/libacml_mv.so (0x00007f9948969000)
libgfortran.so.3 => /usr/lib64/libgfortran.so.3
(0x00007f9948677000)
libm.so.6 => /lib64/libm.so.6 (0x00007f99483f3000)
libgomp.so.1 => /usr/lib64/libgomp.so.1 (0x00007f99481e5000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f9947fc8000)
libc.so.6 => /lib64/libc.so.6 (0x00007f9947c37000)
/lib64/ld-linux-x86-64.so.2 (0x000000395c400000)
Moving on, I tried to configure octave using this incantation:
./configure --without-curl --with-blas=acml_mp --with-lapack=acml_mp
--enable-64
That yielded this error:
configure: error: BLAS doesn't seem to support 64-bit integers. This
is incompatible with --enable-64.
So in desperation I tried without --enable-64:
./configure --without-curl --with-blas=acml_mp --with-lapack=acml_mp
That yielded a different error:
configure: error: A BLAS library was detected but found incompatible
with your Fortran 77 compiler
Just for kicks and giggles, I took everything to an Ubuntu machine
(12.04) running gcc 4.6.3 and everything built there like a dream. So
I'm confident I have good binaries from AMD and good Octave sources.
I'm increasingly convinced I have a notably bad compiler in GCC 4.4.5.
But it's also possible I've missed several key steps.
I'm not a numerical analyst, I'm the acting sysadmin, and would
appreciate any and all guidance. Thanks in advance!
- Compile Octave to use ACML on RHEL 6.1 x86_64 with GCC 4.4.5?,
Christopher Lott <=