LINUX.ORG.RU

fortran_libxlf_lapack


0

0

Есть g77 - компилятор, установил пакет lapack (linear algebra pack),
и пытаюсь вызвать одну функцию из либа la в си
код
#include <stdio.h>
#define size 3 /* dimension of matrix */
extern "C"
{
void sgesv_(int*,int*,float*,int*,int*,float*,int*,int*);
};
int main()
{
int i, j , c1, c2, pivot[size], ok;
float A[size][size], b[size], AT[size*size];
A[0][0]=3.1; A[0][1]=1.3; A[0][2]=-5.7;
A[1][0]=1.0; A[1][1]=-6.9; A[1][2]=5.8;
A[2][0]=3.4; A[2][1]=7.2; A[2][2]=-8.8;

b[0]=-1.3;
b[1]=-0.1;
b[2]=1.8;
for (i=0; i<size; i++)
{
for(j=0; j<size; j++) AT[j+size*i]=A[j][i];
}
c1=size;
c2=1;
sgesv_(&c1, &c2, AT, &c1, pivot, b, &c1, &ok); //!!!!
for (j=0; j<size; j++) printf("%e\n", b[j]); /* print vector x */
return 0;
}

пытаюсь компилировать g++ test.cpp -llapack -lblas -lm -lxlf
... но она не хочет !, так как нет libxlf.so ..
я если честно не понял... libxlf входит в стандартные либы g77 фортрана? Он у меня криво стоит ? ЛИбо это идёт речь об XL Fortran ot
Intel ? А где тогда взять эту ... либу..

anonymous

Приветсвую.
итак сохраняем Ваш код в exam.cpp
1) Используем Atlas.
%g++ exam.cpp -L/usr/local/lib/ATLAS/Athlon/ATLAS/lib/Linux_ATHLONSSE1_2/ -llapack -lcblas -lf77blas -latlas -lf2c
%./a.out
1.000000e+00
1.000000e+00
1.000000e+00
%
Оно ?
2) пользуем icc && MKL
Можно по другому
%icc exam.cpp -L/opt/intel/mkl61/lib/32/ -lmkl_lapack32 -lmkl -lguide -lf2c
%./a.out
1.000000e+00
1.000000e+00
1.000000e+00
3) Ну и наконец
%g++ exam.cpp -L/opt/acml1.5/gnu32_nosse2/lib -lacml
.....
Далее по тексту
XL Fortran - IBM'ий компиллятор совместимый с 95-ым и OpenMP.

Best regards,$echo.








anonymous
()
Ответ на: комментарий от anonymous

вообщем глянул я
xlf.811.rhel3.tnb.tar.gz
с сайта ibm взятого.
есть там девы libxlf*.a
1) Вопрос - какого происхождения лапак ?
2) На какой архитекутре работаем ?
Да ... ATLAS можно взять с netlib.org/atlas
можно взяь онли blas.
В чем проблема?
Best regards,$echo.

anonymous
()
Ответ на: комментарий от anonymous

LApack взят отсюда http://www.netlib.org/lapack/ Работаем на Атлоне 2.5 ., asplinux Там в одном из примеров было сказано, что компилять прогу нужно с библиотеками которые я написал выше., если я lxlf не подключаю, то при процесс комп. выдает след. ошибку ком. строка g++ test.cpp -llapack -lblas usr/lib/gcc-lib/i386-asplinux-linux/3.2.2/../../../liblapack.so: undefined reference to `e_wsfe' /usr/lib/gcc-lib/i386-asplinux-linux/3.2.2/../../../liblapack.so: undefined reference to `z_abs' и тд.....

anonymous
()
Ответ на: комментарий от anonymous

угу .. вот эту диагностику ?
bf77blas.a(xerbla.o): In function `xerbla_':
xerbla.o(.text+0xe): undefined reference to `s_wsfe'
xerbla.o(.text+0x29): undefined reference to `do_fio'
xerbla.o(.text+0x44): undefined reference to `do_fio'
xerbla.o(.text+0x49): undefined reference to `e_wsfe'
xerbla.o(.text+0x5d): undefined reference to `s_stop'
???
если да .. то при внимательном прочтении моего первого ответа можно увидеть ключик -lf2c
пробуем ...
%g++ test.cpp -llapack -lblas -lf2c
[счастье-)]

Best regards,$echo.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.