Brian -

Cheers - followups below.

Prof Brian Ripley wrote:
On Fri, 26 Jun 2009, Evan Cooch wrote:

So, tried again from scratch. Again, CentOS 5.3, which is essentially RHEL 5.3.

./configure --with-blas="-L/opt/acml4.3.0/gfortran64/lib -lacml"

In config.log, get things like

configure:37199: checking for dgemm_ in -L/opt/acml4.3.0/gfortran64/lib -lacml configure:37230: gcc -std=gnu99 -o conftest -g -O2 -I/usr/local/include -L/usr/local/lib64 conftest.c -L/opt/acml4.3.0/gfortran64/lib -lacml -$
conftest.c: In function 'main':
conftest.c:189: warning: implicit declaration of function 'dgemm_'
/usr/bin/ld: warning: libgfortran.so.3, needed by /opt/acml4.3.0/gfortran64/lib/libacml.so, not found (try using -rpath or -rpath-link)

So you don't have a compatible libgfortran installed (not surprising as your OS is rather old): try a version of ACML of comparable age to your OS that uses. (I seem to remember needed ACML 4.1.0 on Fedora 8.)

Thanks - but I'm not sure I would classify CentOS as 'old' - it is RHEL 5.3 (basically built straight from open-sourced RHEL code), and RHEL 5.3 is the current release of the 'flagship' OS from Redhat.

I grant you it *is* old by (say) Fedora standards, which has a release schedule measured in months (whereas RHEL is measured in 1-2 years), but I was aiming for stability.


We also needed to add /opt/acml4.3.0/gfortran64/lib to the ldconfig files (something AMD should organize).

Try

./configure --with-blas="-L/usr/lib64/atlas  -lf77blas -latlas"

I get the following


configure:37199: checking for dgemm_ in -L/usr/lib64/atlas -lf77blas -latlas configure:37230: gcc -std=gnu99 -o conftest -g -O2 -I/usr/local/include -L/usr/local/lib64 conftest.c -L/usr/lib64/atlas -lf77blas -latlas -lg$
conftest.c: In function 'main':
conftest.c:189: warning: implicit declaration of function 'dgemm_'
/usr/bin/ld: cannot find -lf77blas
collect2: ld returned 1 exit status
configure:37236: $? = 1
configure: failed program was:


What puzzles me is that lf77blas is definitely in /usr/lib64/atlas - but configure couldn't find (?). Perhaps its because 100% of the libs in the atlast subdir are xxx.so.3 (perhaps R config is looking for so.1 libs?).

It is looking for .so or .a (a Linux linker always does). Where did you get ATLAS from? This is what happens if you install the foo and not the foo-devel RPM for some package. And indeed, on Fedora 10 you need the atlas-devel RPM ....

Ah - that rings a bell (can you tell I was doing this late into the wee hours?). Atlas was distributed as an RPM (or, rather, downloaded via the CentOS standard yum repo). Everything in /usr/lib64/atlas is an .so.3 file - nothing with .so or .a as suffix.


I suspect that many/most of the problems I'm having with getting R to compile (with BLAS and LAPACK) are related to these basic issues - if I can't do even a simple compile with blas, then whats left?

Ask for local help on your OS! You seem to be asking many questions about your OS here, and be assured that R works with ATLAS and ACML flawlessly in well-sorted OS installations. Things like the need for the foo-devel RPM are in the R installation manual which the INSTALL file asked you to study (before posting).
Well, I've actually gone through the manual you refer to - missed the bit on foo-devel (which applies only to atlas, it would seem) - my oversight - mea culpa. However, the documentation doesn't (and isn't expected) to elaborate on what you refer to as a 'well-sorted' OS. In other words, I had no a priori expectation of a problem - since CneenOS is RHEL, and RHEL has a rather large market share. I would have assumed (naively, in hindsight) that the combination of CentOS and ACML 4.3.x would have been 'well sorted'. (as an aside - some of my friends at Sun tell me 'standard Linux' for file structures, libs and such is an oxymoron ;-)

It would appear not - at least in this instance. On the other hand, CentOS picked up all of my twitchy harddare (RAID cards, special NICs) without missing a beat, networked without so much as a single tweak being needed, and has performed flawlessly for everything...except getting R compiled with ACML support.


Note that a much simpler way (as recommended the manual!) to add an optimized BLAS is to switch the libRblas. E.g. I have a note in my build file

gannet% cat I.USED
## later
## mv lib/libRblas.so lib/libRblas.so.keep
## ln -s /opt/acml4.3.0/gfortran64_mp/lib/libacml_mp.so lib/libRblas.so

And most users of R do so little linear algebra that an optimized BLAS make a negligible difference in performance (but often an appreciable one to accuracy).

Agreed on the latter point (generally), but I do a fair bit of stuff with big matrices, and wanted both accuracy *and* speed.

Wrt to the first point, I tried that in fact (but didn't report - in fact, I tried about 15-20 different combinations of various approaches). When I try that - using *exactly* that syntax (above), and do the compile, I got the following error message when starting R:

/usr/local/lib64/R/bin/exec/R: error while loading shared libraries: libacml_mv.so: cannot open shared object file: No such file or directory

So, try

LD_LIBRARY_PATH=/opt/acml4.3.0/gfortran64/lib
export LD_LIBRARY_PATH

Seems to do the trick, but I think I'm botching tweaking R_HOME/etc/ldpaths to set this permanently. Is there a doc somewhere on how to tweak ldpaths? Sorry if I've missed it...

Again, thanks for wading through my various missives. If R wasn't mission critical to my users (and R with 'better blas') wasn't critical to *me*, I wouldn't be so fussed about it.

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to