From: Vaughn Cable
Date: Thu, 30 Aug 2007 12:13:06 -0700
Thank you, Jason. Yep, I just didn't have the paths & libs identified
properly. Wow, now the solve runs 4 times faster. If I used gfortran,
could I manually insert a few basic OMP directives into critical loops
in cgesv? That way, I might avaoid having to deal with 3rd part SW.
Jason Riedy wrote:
And Vaughn Cable writes:
However, when I build (with g77) my fortran application
containing a call to lapack's cgesv, the linker cannot find
cgesv_, no matter what lib directives I use or the order I give
them in the Makefile.
Are you linking with something like the following?
g77 -o foo foo.f /path/to/lapack/lapack_LINUX.a /path/to/lapack/blas_LINUX.a
nm lapack_LINUX.a | grep -i cgesv
to see what the symbol was named. If it's not there at all,
then something happened in the build.
Also, do I need to buy a 3rd party OMP package like Portland
Group because g77 can never see the OPM directives in the
fortran comments if I want to parallelize my own code? Are
both problems related?
g77 does not support OpenMP. More recent gfortran and gcc
releases include basic OpenMP support. LAPACK and the
reference BLAS currently do not use OpenMP directives.
The ATLAS project ( http://math-atlas.sourceforge.net ) can build
a threaded BLAS, but the build process is rather ornate. Some
vendor BLAS come with multi-threaded varieties as well.