Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révisionLes deux révisions suivantes | ||
umfpack [2009/11/18 18:52] – gerard | umfpack [2009/11/25 14:44] – gerard | ||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
====== Installation ====== | ====== Installation ====== | ||
- | ^ ^ ^ | + | ^ ^ ^ ^ |
| nemo | 4.4 | / | | nemo | 4.4 | / | ||
- | | shrek | / | + | | shrek | | / |
+ | ====== Utilisation ====== | ||
+ | * / | ||
+ | * / | ||
+ | * / | ||
+ | * / | ||
+ | * / | ||
+ | | ||
+ | |||
+ | Utilisation de umfpack dans un code fortran: | ||
+ | * umfpack est écrit en C | ||
+ | * il existe une interface fortran 77, utilisable en fortran 90 | ||
+ | * prendre pour exemple le fichier Demo/ | ||
+ | * dans son fichier, ajouter les lignes suivantes: | ||
+ | |||
+ | < | ||
+ | call umf4def (control) ! met les parametres par defauts | ||
+ | control (1) = 1 | ||
+ | call umf4pcon (control) | ||
+ | call umf4sym (N, N, Ap, Ai, Ax, symbolic, control, info) ! | ||
+ | call umf4num (Ap, Ai, Ax, symbolic, numeric, control, info) | ||
+ | call umf4fsym (symbolic) | ||
+ | call umf4sol (sys, x, RHSV, numeric, control, info) | ||
+ | call umf4fnum (numeric) | ||
+ | call umf4pinf (control, info) | ||
+ | </ | ||
+ | Pour cela, il faut bien entendu lier votre programme avec le programme umf4_f77wrapper.c, | ||
+ | < | ||
+ | cc -o umf4_f77wrapper.o -DDLONG -m64 -I/ | ||
+ | f90 -o poisson3d_umfpack.o -g -fast -C -e -fpp -stackvar -xcheck=init_local -fpover -ftrap=%none -Xlist -fsimple=0 -fns=no -dalign -O4 -KPIC -xmodel=medium -m64 -c poisson3d_umfpack.f90 | ||
+ | f90 -g -fast -C -e -fpp -stackvar -xcheck=init_local -fpover -ftrap=%none -Xlist -fsimple=0 -fns=no -dalign -O4 -KPIC -xmodel=medium -m64 -o poisson3d_umfpack poisson3d_umfpack.o umf4_f77wrapper.o / | ||
+ | |||
+ | </ | ||
====== Config ====== | ====== Config ====== | ||
* on édite Make.include et Make.solaris (voir lien sur Make.solaris_amd64) avant de compiler | * on édite Make.include et Make.solaris (voir lien sur Make.solaris_amd64) avant de compiler | ||
+ | < | ||
+ | diff / | ||
+ | 50c50 | ||
+ | < CONFIG = -DNBLAS | ||
+ | --- | ||
+ | > CONFIG = | ||
+ | 63c63 | ||
+ | < # include ../ | ||
+ | --- | ||
+ | > include ../ | ||
+ | |||
+ | </ | ||
+ | et | ||
+ | < | ||
+ | diff / | ||
+ | 5a6 | ||
+ | > | ||
+ | 11,13c12,14 | ||
+ | < CC = cc | ||
+ | < CFLAGS = -Xc -xO5 -KPIC -dalign -xtarget=generic64 | ||
+ | < F77FLAGS = -xO5 -KPIC -dalign -m64 | ||
+ | --- | ||
+ | > CC = cc | ||
+ | > CFLAGS = -xO5 -xdepend -DLP64 -xprefetch=auto -xprefetch_level=3 -xipo=2 -m64 -xmodel=medium | ||
+ | > F77FLAGS = -xO5 -xdepend -DLP64 -xprefetch=auto -xprefetch_level=3 -xipo=2 -m64 -xmodel=medium | ||
+ | 22d22 | ||
+ | < #LIB = -xlic_lib=sunperf -lfai -lfsu -lfui -lsunperf -lm -lsunmath | ||
+ | 30c30 | ||
+ | < LIB = -xlic_lib=sunperf -lfai -lfsu -lfui -lm | ||
+ | --- | ||
+ | > LIB = -L/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | * 64 bits uniquement | ||
+ | |||
+ | ====== Tests ====== | ||
+ | * prendre le source [[http:// | ||
+ | < | ||
+ | cc -o umfpack_simple -m64 umfpack_simple.c -I/ | ||
+ | </ | ||
+ | |||