Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== Site ====== [[https://computation.llnl.gov/casc/hypre/|Lien externe]] ====== Version 1.6.0 ====== * installée sur nemo * /usr/local/hypre-1.6.0 compilée avec Mpich 1.2.6 * /local/henry/hypre-1.6.0-amd64/src/hypre compilé avec Sun MPI * les exemples et la doc sont accessibles: /local/henry/hypre-1.6.0/src et /local/henry/hypre-1.6.0/docs ====== Version 2.0.0 ====== * installé sur nemo ^ 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 ===== * les exemples dans /local/apps/src/hypre-2.0.0/src/examples <del> * le configure se fait à partir du script [[http://www.latp.univ-mrs.fr/~henry/Solaris/hypre/do_work32.sh|/local/apps/src/hypre-2.0.0/do_work32.sh]] (32 bits par defaut), et [[http://www.latp.univ-mrs.fr/~henry/Solaris/hypre/do_work.sh|/local/apps/src/hypre-2.0.0/do_work.sh]] (en 64 bits)</del> * penser à utiliser le compilateur Studio 12, avec la commande <code> module load ss12 </code> Le **path** idéal devrait au moins contenir: <code> PATH=/opt/studio12/SUNWspro/bin:/usr/bin::/usr/local/wrapper/bin:/opt/SUNWhpc/bin </code> * [[hypre_patches|patches]] ==== ex1 ==== * testé l'exemple ex1 dans le repertoire exemples (utiliser Makefile pour une version 32 bits et M64 pour 64 bits): <code> 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 </code> ==== ex5 ==== avec SS12u1 et HPC6.0 <code> 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 </code> ==== ex5b77 ==== en 64 bits: <code> 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 </code> ====== Modifications ====== * récupérer le répertoire exemples et modifier le Makefile: <code> 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 </code> et en 64 bits: <code> > 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 </code> dans le répertoire lapack: <code> > 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 < </code> ====== problèmes ====== ===== version 2.2.0b zero-sized struct/union cc: acomp failed ===== cette erreur: <code> 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 </code> est [[http://forum.java.sun.com/thread.jspa?threadID=5182898|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: <code> "/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. </code> This error is due to these lines: <code> #pragma weak sidl_io_Serializer__connectI struct sidl_io_Serializer__object* sidl_io_Serializer__rmicast(...); </code> if we invert the two preceding lines: <code> struct sidl_io_Serializer__object* sidl_io_Serializer__rmicast(...); #pragma weak sidl_io_Serializer__connectI </code> C'est ce qui est expliqué [[http://forum.java.sun.com/thread.jspa?threadID=5251468&tstart=0|Error with #pragma weak ]], mais faire cette modification manuellement est trop long (plus de 20 fichiers!) <del>Pour l'instant, pas d'interface babel...</del> Les hacks ont été faits par [[http://www.latp.univ-mrs.fr/~jobic/dokuwiki/doku.php?id=hypre#interface_babel|Yann]] \\ Attention, pour utiliser les libs optimisées du constructeur (sun perflib), ne pas oublier les lignes suivantes en argument du configure: <code> > --with-blas-libs="sunperf" \ > --with-blas-lib-dirs="/opt/SUNWhpc/lib/amd64" \ > --with-lapack-libs="sunperf" \ > --with-lapack-lib-dirs="/opt/SUNWhpc/lib/amd64" \ </code> ===== problème avec underscore ===== quand a on ce type d'erreur: <code> 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 </code> 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: * src/test/f77_ij_b.f hypre.txt Dernière modification : 2017/08/25 09:56de 127.0.0.1