summaryrefslogtreecommitdiff
path: root/benchmarks/hpl
diff options
context:
space:
mode:
authorOliver Lehmann <oliver@FreeBSD.org>2004-02-25 18:06:01 +0000
committerOliver Lehmann <oliver@FreeBSD.org>2004-02-25 18:06:01 +0000
commit02d428b109fac414b55adbc122b9051bfb07501c (patch)
treede30f8ec76ee22ceb768840ac553ddca0b06dee9 /benchmarks/hpl
parentLinCVS is QT3-based since a while, not QT2 (diff)
High Performance Computing Linpack Benchmark
- needs an MPI implementation (mpich and lam are supported by this port) - needs an Basic Linear Algebra Subprograms implementation like atlas (default) or blas (both are supported by this port) tested on alpha (5), amd64 (5) and i386 (4 and 5)
Notes
Notes: svn path=/head/; revision=102111
Diffstat (limited to 'benchmarks/hpl')
-rw-r--r--benchmarks/hpl/Makefile119
-rw-r--r--benchmarks/hpl/distinfo2
-rw-r--r--benchmarks/hpl/pkg-descr21
-rw-r--r--benchmarks/hpl/pkg-plist10
4 files changed, 152 insertions, 0 deletions
diff --git a/benchmarks/hpl/Makefile b/benchmarks/hpl/Makefile
new file mode 100644
index 000000000000..3e0837cfc20d
--- /dev/null
+++ b/benchmarks/hpl/Makefile
@@ -0,0 +1,119 @@
+# New ports collection makefile for: physfs
+# Date Created: 22 February 2003
+# Whom: Oliver Lehmann <oliver@FreeBSD.org>
+#
+# $FreeBSD$
+#
+
+PORTNAME= hpl
+PORTVERSION= 1.0a
+CATEGORIES= benchmarks
+MASTER_SITES= http://www.netlib.org/benchmark/hpl/
+DISTNAME= ${PORTNAME}
+EXTRACT_SUFX= .tgz
+
+MAINTAINER= oliver@FreeBSD.org
+COMMENT= High Performance Computing Linpack Benchmark
+
+.if !defined(WITH_LAM)
+BUILD_DEPENDS= ${LOCALBASE}/mpich/bin/mpicc:${PORTSDIR}/net/mpich
+.else
+BUILD_DEPENDS= ${LOCALBASE}/bin/lamd:${PORTSDIR}/net/lam
+CC= ${LOCALBASE}/bin/mpicc
+FC= ${LOCALBASE}/bin/mpicc
+.endif
+
+RUN_DEPENDS= ${BUILD_DEPENDS}
+
+.if ${MACHINE_ARCH} == "amd64"
+# math/atlas is currently broken on amd64
+WITH_BLAS= yes
+.endif
+
+.if defined(WITH_BLAS)
+LIB_DEPENDS+= blas.1:${PORTSDIR}/math/blas
+.else
+LIB_DEPENDS+= cblas.1:${PORTSDIR}/math/atlas
+.endif
+
+INSTALLS_SHLIB= yes
+USE_REINPLACE= yes
+HPL_ARCH?= FreeBSD_PIV_CBLAS
+ALL_TARGET= arch=${HPL_ARCH}
+MAN3= HPL_abort.3 HPL_all_reduce.3 HPL_barrier.3 HPL_bcast.3 \
+ HPL_binit.3 HPL_broadcast.3 HPL_bwait.3 HPL_copyL.3 \
+ HPL_daxpy.3 HPL_dcopy.3 HPL_dgemm.3 HPL_dgemv.3 HPL_dger.3 \
+ HPL_dlacpy.3 HPL_dlamch.3 HPL_dlange.3 HPL_dlaprnt.3 \
+ HPL_dlaswp00N.3 HPL_dlaswp01N.3 HPL_dlaswp01T.3 HPL_dlaswp02N.3 \
+ HPL_dlaswp03N.3 HPL_dlaswp03T.3 HPL_dlaswp04N.3 HPL_dlaswp04T.3 \
+ HPL_dlaswp05N.3 HPL_dlaswp05T.3 HPL_dlaswp06N.3 HPL_dlaswp06T.3 \
+ HPL_dlaswp10N.3 HPL_dlatcpy.3 HPL_dlocmax.3 HPL_dlocswpN.3 \
+ HPL_dlocswpT.3 HPL_dmatgen.3 HPL_dscal.3 HPL_dswap.3 HPL_dtrsm.3 \
+ HPL_dtrsv.3 HPL_equil.3 HPL_fprintf.3 HPL_grid_exit.3 \
+ HPL_grid_info.3 HPL_grid_init.3 HPL_idamax.3 HPL_indxg2l.3 \
+ HPL_indxg2lp.3 HPL_indxg2p.3 HPL_indxl2g.3 HPL_infog2l.3 \
+ HPL_jumpit.3 HPL_ladd.3 HPL_lmul.3 HPL_logsort.3 HPL_max.3 \
+ HPL_min.3 HPL_numroc.3 HPL_numrocI.3 HPL_pabort.3 HPL_packL.3 \
+ HPL_pddriver.3 HPL_pdfact.3 HPL_pdgesv.3 HPL_pdgesv0.3 \
+ HPL_pdgesvK1.3 HPL_pdgesvK2.3 HPL_pdinfo.3 HPL_pdlamch.3 \
+ HPL_pdlange.3 HPL_pdlaprnt.3 HPL_pdlaswp00N.3 HPL_pdlaswp00T.3 \
+ HPL_pdlaswp01N.3 HPL_pdlaswp01T.3 HPL_pdmatgen.3 HPL_pdmxswp.3 \
+ HPL_pdpancrN.3 HPL_pdpancrT.3 HPL_pdpanel_disp.3 \
+ HPL_pdpanel_free.3 HPL_pdpanel_init.3 HPL_pdpanel_new.3 \
+ HPL_pdpanllN.3 HPL_pdpanllT.3 HPL_pdpanrlN.3 HPL_pdpanrlT.3 \
+ HPL_pdrpancrN.3 HPL_pdrpancrT.3 HPL_pdrpanllN.3 HPL_pdrpanllT.3 \
+ HPL_pdrpanrlN.3 HPL_pdrpanrlT.3 HPL_pdtest.3 HPL_pdtrsv.3 \
+ HPL_pdupdateNN.3 HPL_pdupdateNT.3 HPL_pdupdateTN.3 \
+ HPL_pdupdateTT.3 HPL_perm.3 HPL_pipid.3 HPL_plindx0.3 \
+ HPL_plindx1.3 HPL_plindx10.3 HPL_pnum.3 HPL_ptimer.3 \
+ HPL_ptimer_cputime.3 HPL_ptimer_walltime.3 HPL_pwarn.3 \
+ HPL_rand.3 HPL_recv.3 HPL_reduce.3 HPL_rollN.3 HPL_rollT.3 \
+ HPL_sdrv.3 HPL_send.3 HPL_setran.3 HPL_spreadN.3 HPL_spreadT.3 \
+ HPL_sum.3 HPL_timer.3 HPL_timer_cputime.3 HPL_timer_walltime.3 \
+ HPL_warn.3 HPL_xjumpm.3
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|^TOPdir[ ]*=.*$$|TOPdir = ${WRKSRC}| ; \
+ s|^MPdir[ ]*=.*$$|MPdir = ${LOCALBASE}/mpich| ; \
+ s|^LAdir[ ]*=.*$$|LAdir = ${LOCALBASE}/lib| ; \
+ s|^CC[ ]*=.*$$|CC = ${CC}| ; \
+ s|^CCFLAGS[ ]*=.*$$|CCFLAGS = $$\(HPL_DEFS\) ${CFLAGS} -fomit-frame-pointer -funroll-loops| ; \
+ s|^LINKER[ ]*=.*$$|LINKER = ${FC}| ; \
+ s|^ARCHIVER[ ]*=.*$$|ARCHIVER = ${AR}|'\
+ ${WRKSRC}/setup/Make.${HPL_ARCH}
+
+.if defined(WITH_LAM)
+ @${REINPLACE_CMD} -e 's|^MPdir[ ]*=.*$$|#&| ; s|^MPinc[ ]*=.*$$|#&| ; \
+ s|^MPlib[ ]*=.*$$|MPlib = /usr/lib/libg2c.a|' \
+ ${WRKSRC}/setup/Make.${HPL_ARCH}
+.else
+ @${REINPLACE_CMD} -e 's|^MPdir[ ]*=.*$$|MPdir = ${LOCALBASE}/mpich|' \
+ ${WRKSRC}/setup/Make.${HPL_ARCH}
+.endif
+
+.if defined(WITH_BLAS)
+ @${REINPLACE_CMD} -e 's|^HPL_OPTS[ ]*=.*$$|HPL_OPTS =| ; \
+ s|^LAlib[ ]*=.*$$|LAlib = $$\(LAdir\)/libblas.a|' \
+ ${WRKSRC}/setup/Make.${HPL_ARCH}
+.endif
+
+ @${REINPLACE_CMD} -e 's|HPL\.dat|${PREFIX}/etc/${PORTNAME}/&|' \
+ ${WRKSRC}/testing/ptest/HPL_pdinfo.c
+
+ @${CP} ${WRKSRC}/setup/Make.${HPL_ARCH} ${WRKSRC}/
+
+do-install:
+ ${MKDIR} ${PREFIX}/etc/${PORTNAME}
+ ${INSTALL_PROGRAM} ${WRKSRC}/bin/${HPL_ARCH}/xhpl ${PREFIX}/bin/
+ ${INSTALL_DATA} ${WRKSRC}/bin/${HPL_ARCH}/HPL.dat ${PREFIX}/etc/${PORTNAME}/
+.for man in ${MAN3}
+ ${INSTALL_MAN} ${WRKSRC}/man/man3/${man} ${MANPREFIX}/man/man3/
+.endfor
+.if !defined(NOPORTDOCS)
+ ${MKDIR} ${DOCSDIR}
+.for doc in BUGS COPYRIGHT HISTORY README TODO TUNING
+ ${INSTALL_DATA} ${WRKSRC}/${doc} ${DOCSDIR}
+.endfor
+.endif
+
+.include <bsd.port.mk>
diff --git a/benchmarks/hpl/distinfo b/benchmarks/hpl/distinfo
new file mode 100644
index 000000000000..83cb8a462d83
--- /dev/null
+++ b/benchmarks/hpl/distinfo
@@ -0,0 +1,2 @@
+MD5 (hpl.tgz) = 32b432af96e674dcb657ef1d63e6d591
+SIZE (hpl.tgz) = 523139
diff --git a/benchmarks/hpl/pkg-descr b/benchmarks/hpl/pkg-descr
new file mode 100644
index 000000000000..d1c43a126ff0
--- /dev/null
+++ b/benchmarks/hpl/pkg-descr
@@ -0,0 +1,21 @@
+HPL is a software package that solves a (random) dense linear system in double
+precision (64 bits) arithmetic on distributed-memory computers. It can thus be
+regarded as aportable as well as freely available implementation of the High
+Performance Computing Linpack Benchmark.
+
+The algorithm used by HPL can be summarized by the following keywords:
+Two-dimensional block-cyclic data distribution - Right-looking variant of the
+LU factorization with row partial pivoting featuring multiple look-ahead
+depths - Recursive panel factorization with pivot search and column broadcast
+combined - Various virtual panel broadcast topologies - bandwidth reducing
+swap-broadcast algorithm - backward substitution with look-ahead of depth 1.
+
+The HPL package provides a testing and timing program to quantify the accuracy
+of the obtained solution as well as the time it took to compute it. The best
+performance achievable by this software on your system depends on a large
+variety of factors. Nonetheless, with some restrictive assumptions on the
+interconnection network, the algorithm described here and its attached
+implementation are scalable in the sense that their parallel efficiency is
+maintained constant with respect to the per processor memory usage.
+
+WWW: http://www.netlib.org/benchmark/hpl/
diff --git a/benchmarks/hpl/pkg-plist b/benchmarks/hpl/pkg-plist
new file mode 100644
index 000000000000..4d6e9d52bdb7
--- /dev/null
+++ b/benchmarks/hpl/pkg-plist
@@ -0,0 +1,10 @@
+bin/xhpl
+etc/hpl/HPL.dat
+%%PORTDOCS%%%%DOCSDIR%%/BUGS
+%%PORTDOCS%%%%DOCSDIR%%/COPYRIGHT
+%%PORTDOCS%%%%DOCSDIR%%/HISTORY
+%%PORTDOCS%%%%DOCSDIR%%/README
+%%PORTDOCS%%%%DOCSDIR%%/TODO
+%%PORTDOCS%%%%DOCSDIR%%/TUNING
+%%PORTDOCS%%@dirrm %%DOCSDIR%%
+@dirrm etc/hpl