Table des matières

Site

Lien externe

Version 1.6.0

Version 2.0.0

chemin précision script pour recompiler features compilateurs MPI
/local/henry/hypre-2.0.0/src/hypre/lib 32bits /local/henry/hypre-2.0.0/src/do_work.sh sans babel sunstudio Sun HPC 6.0
/local/apps/lib/hypre/2.0.0/openmpi/sun/1.3.3/ 32bits /local/apps/src/hypre-2.0.0/src/do_work32_openmpi.sh ? SS12u1 HPC8.2 (openmpi de sun)
/local/apps/debug 32bits /local/apps/src/hypre-2.0.0/src/do_work32_debug.sh avec babel studio12 SUNWhpc
/local/apps/lib 32bits /local/apps/src/hypre-2.0.0/src/do_work32.sh avec babel studio12 SUNWhpc
/local/apps/lib/amd64/ss12 64bits /local/apps/src/ss12/hypre-2.0.0/src/do_work.sh sans babel? sunstudio 12 Sun HPC 6.0
/local/apps/lib/amd64/opt0 64bits /local/apps/src/hypre-2.0.0/src/do_work_opt0.sh sans babel studio12 SUNWhpc
/local/apps/hypre/2.0.0/hpc6/lib/amd64 64bits /local/apps/src/hypre-2.0.0/src/do_work.sh avec babel studio12 HPC6.0
/local/apps/hypre/2.0.0/hpc6/lib/amd64/opt0 64bits /local/apps/src/hypre-2.0.0/src/do_workopt0.sh a cause de l'underscore dans l'interface C/fortran, avec babel studio12 HPC6.0
/local/apps/lib/hypre/2.0.0/openmpi/sun/1.3.3/amd64 64bits /local/apps/src/hypre-2.0.0/src/do_work64_openmpi.sh ? SS12u1 HPC8.2 (openmpi de sun)
/local/apps/src/hypre-2.2.0b/src/do_work_opt0.sh

Exemples

* le configure se fait à partir du script /local/apps/src/hypre-2.0.0/do_work32.sh (32 bits par defaut), et /local/apps/src/hypre-2.0.0/do_work.sh (en 64 bits)

module load ss12

Le path idéal devrait au moins contenir:

PATH=/opt/studio12/SUNWspro/bin:/usr/bin::/usr/local/wrapper/bin:/opt/SUNWhpc/bin

ex1

nemo-henry% mprun -np 2 ex1
<C*b,b>: 1.800000e+01


Iters       ||r||_C     conv.rate  ||r||_C/||b||_C
-----    ------------    ---------  ------------
    1    2.509980e+00    0.591608    5.916080e-01
    2    9.888265e-01    0.393958    2.330686e-01
    3    4.572262e-01    0.462393    1.077693e-01
    4    1.706474e-01    0.373223    4.022197e-02
    5    7.473022e-02    0.437922    1.761408e-02
    6    3.402624e-02    0.455321    8.020061e-03
    7    1.214929e-02    0.357057    2.863616e-03
    8    3.533113e-03    0.290808    8.327628e-04
    9    1.343893e-03    0.380371    3.167586e-04
   10    2.968745e-04    0.220906    6.997400e-05
   11    5.329671e-05    0.179526    1.256215e-05
   12    7.308483e-06    0.137128    1.722626e-06
   13    7.411552e-07    0.101410    1.746920e-07

ex5

avec SS12u1 et HPC6.0

mpcc -g  -m64 -I$HYPRE/include -DHAVE_CONFIG_H -DHYPRE_TIMING -c ex5.c
mpcc -m64 -fast -fsimple=0 -fns=no -xnolibmopt -o ex5 ex5.o -g  -L$HYPRE/lib -lHYPRE -lm -lmpi_mt -lfsu -lsunmath -lm -lmtsk 
mprun -np 4 ex5

ex5b77

en 64 bits:

nemo-henry% module purge; module load hypre2.0.0_hpc6
nemo-henry% mpf77 -g -m64 -dalign -I$HYPRE/include -DHAVE_CONFIG_H -DHYPRE_TIMING -c ex5b77.f
nemo-henry% mpf77 -v -m64 -fast -fsimple=0 -fns=no -xnolibmopt -xalias=actual -dalign -o ex5b77 ex5b77.o -L$HYPRE/lib -lbHYPREClient-C -lbHYPREClient-CX -lbHYPREClient-F -lbHYPRE -lsidl -ldl -lxml2 -lmpi -g -R$HYPRE/lib -L$HYPRE/lib -lHYPRE -lmpi -xlic_lib=sunperf

Modifications

nemo-henry% diff Makefile-ori Makefile 
4,7c4,7
< CC        = mpicc
< F77       = mpif77
< CXX       = mpiCC
< HYPRE_DIR = ../hypre
---
> CC        = mpcc
> F77       = mpf77
> CXX       = mpCC
> HYPRE_DIR = /local/apps/lib
12c12
< COPTS     = -g -pedantic -Wall
---
> COPTS     = -g #-pedantic -Wall
27,28c27,28
< LIBS      = -L$(HYPRE_DIR)/lib -lHYPRE -lg2c -lm
< LFLAGS    = $(LINKOPTS) $(LIBS) -lstdc++
---
> LIBS      = -L$(HYPRE_DIR)/lib -lHYPRE -lm -lmpi_mt -lfsu -lsunmath -lm -lmtsk
> LFLAGS    = $(LINKOPTS) $(LIBS) 
36c36,38
<  -lsidl -ldl -lxml2
---
>  -lsidl -ldl -lxml2 \
>  -L/opt/SUNWhpc/lib \
>  -lmpi

et en 64 bits:

> diff Makefile ~/src/hypre-2.0.0/src/examples/Makefile.ori 
4,7c4,7
< CC        = mpcc
< F77       = mpf77
< CXX       = mpCC
< HYPRE_DIR = /local/apps/lib/amd64
---
> CC        = mpicc
> F77       = mpif77
> CXX       = mpiCC
> HYPRE_DIR = ../hypre
12c12
< COPTS     = -g -m64 #-pedantic -Wall
---
> COPTS     = -g -pedantic -Wall
27,28c27,28
< LIBS      = -R/opt/SUNWhpc/lib/amd64 -L/opt/SUNWhpc/lib/amd64 -L$(HYPRE_DIR)/lib -lHYPRE -lm -lmpi_mt -lfsu -lsunmath -lm -lmtsk
< LFLAGS    = $(LINKOPTS) $(LIBS) 
---
> LIBS      = -L$(HYPRE_DIR)/lib -lHYPRE -lg2c -lm
> LFLAGS    = $(LINKOPTS) $(LIBS) -lstdc++
36,38c36
<  -lsidl -ldl -lxml2 \
<  -L/opt/SUNWhpc/lib/amd64 \
<  -lmpi
---
>  -lsidl -ldl -lxml2

dans le répertoire lapack:

> diff lapack/Makefile.ori lapack/Makefile 104c104,105
<  xerbla.c
---
>  xerbla.c\
>  dlamch.c
112c113
< all: ${OBJS} dlamch.o
---
> all: ${OBJS}
127,129d127
< dlamch.o : dlamch.c ${LAPACK_HEADERS}
<       ${CC} -c dlamch.c
<

problèmes

version 2.2.0b zero-sized struct/union cc: acomp failed

cette erreur:

  mpcc -DHAVE_CONFIG_H -I. -I. -I. -I/usr/include/libxml2 -I/usr/java/include -I/usr/java/include/solaris -I./../sidlx -xO3 -xdepend -xprefetch=auto -xprefetch_level=3 -xvector -ftrap=common -m64 -D_REENTRANT -c sidl_rmi_InstanceRegistry_Impl.c  -KPIC -DPIC -o .libs/sidl_rmi_InstanceRegistry_Impl.o
"sidl_rmi_InstanceRegistry_Impl.h", line 75: zero-sized struct/union
cc: acomp failed for sidl_rmi_InstanceRegistry_Impl.c
make[3]: *** [sidl_rmi_InstanceRegistry_Impl.lo] Error 1

est prise en compte dans Studio 12, donc il faut ajouter -features=extensions

interface babel ne compile pas

Pour compiler avec l'interface babel, il suffit d'ajouter “–with-babel” sur la ligne configure, dans do_work.sk. Mais la compilation échoue à cause du problème suivant:

"/local/apps/src/hypre-2.0.0/src/babel-runtime/sidl/sidl_io_Serializer.h", line 1411: Error: 'sidl_io_Serializer__connectI' referenced in #pragma should be global and previously declared.

This error is due to these lines:

#pragma weak sidl_io_Serializer__connectI
struct sidl_io_Serializer__object*
sidl_io_Serializer__rmicast(...);

if we invert the two preceding lines:

struct sidl_io_Serializer__object*
sidl_io_Serializer__rmicast(...);
#pragma weak sidl_io_Serializer__connectI

C'est ce qui est expliqué Error with #pragma weak , mais faire cette modification manuellement est trop long (plus de 20 fichiers!) Pour l'instant, pas d'interface babel… Les hacks ont été faits par Yann
Attention, pour utiliser les libs optimisées du constructeur (sun perflib), ne pas oublier les lignes suivantes en argument du configure:

> --with-blas-libs="sunperf" \
> --with-blas-lib-dirs="/opt/SUNWhpc/lib/amd64" \
> --with-lapack-libs="sunperf" \
> --with-lapack-lib-dirs="/opt/SUNWhpc/lib/amd64" \

problème avec underscore

quand a on ce type d'erreur:

Undefined                       first referenced
 symbol                             in file
mpi_finalize_                       benchencours.o
bhypre_mpicommunicator_createf_f_   benchencours.o
bhypre_boomeramg_setoperator_f_     benchencours.o
bhypre_ijparcsrmatrix_destroy_f_    benchencours.o

cela signifie qu'une ligne de compilation

Utilisation de l'interface babel

Comme cela manque d'exemples, il faut fouiller dans les sources de hypre. On peut s'inspirer de: