mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-30 05:40:06 +00:00
Update to 3.8.0.
Only verified on i386 and amd64 FreeBSD 7BETA. Discussions with: bf <bf2006a@yahoo.com>, truckman and Tijl Coosemans <tijl@ulyssis.org>. PR: 118270 and 118271
This commit is contained in:
parent
85127e0d27
commit
311264a24f
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=204153
@ -5,12 +5,8 @@
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# NOTE: This port purposely ignores the CC and CFLAGS settings.
|
||||
# Program and compiler flags are finetuned to gcc.
|
||||
|
||||
PORTNAME= atlas
|
||||
PORTVERSION= 3.6.0
|
||||
PORTREVISION= 4
|
||||
PORTVERSION= 3.8.0
|
||||
PORTEPOCH= 1
|
||||
CATEGORIES= math
|
||||
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
|
||||
@ -29,39 +25,12 @@ USE_LDCONFIG= yes
|
||||
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
NOT_FOR_ARCHS= alpha
|
||||
|
||||
USE_FORTRAN= yes
|
||||
CCOMPILER= ${CC}
|
||||
LIB_DEPENDS+= blas.2:${PORTSDIR}/math/blas
|
||||
LIB_DEPENDS+= lapack.4:${PORTSDIR}/math/lapack
|
||||
LIB_DEPENDS+= f2c:${PORTSDIR}/lang/f2c
|
||||
|
||||
# only affects for lapack sub project
|
||||
.if defined(WITH_OPTIMIZED_FLAGS)
|
||||
.if defined(CPUTYPE)
|
||||
FFLAGS+= -mtune=${CPUTYPE} -pipe -O2 -ffast-math
|
||||
.else
|
||||
FFLAGS+= -pipe -O2 -ffast-math
|
||||
.endif
|
||||
.endif
|
||||
|
||||
post-patch:
|
||||
.if !defined(WITH_OPTIMIZED_FLAGS)
|
||||
@${ECHO_CMD} "You can optimize lapack sub project by setting WITH_OPTIMIZED_FLAGS=yes."
|
||||
.endif
|
||||
@${REINPLACE_CMD} -e 's+%%PTHREAD_CFLAGS%%+${PTHREAD_CFLAGS}+g' \
|
||||
-e 's+%%PTHREAD_LIBS%%+${PTHREAD_LIBS}+g' \
|
||||
-e 's+%%LOCALBASE%%+${LOCALBASE}+g' \
|
||||
${WRKSRC}/config.c
|
||||
.if defined(PORTS_ARCH)
|
||||
@${REINPLACE_CMD} -e 's+%%PORTS_ARCH%%+${PORTS_ARCH}+g' \
|
||||
-e 's+%%HAVE_ARCH%%+1+g' ${WRKSRC}/config.c
|
||||
.else
|
||||
@${REINPLACE_CMD} -e 's+%%PORTS_ARCH%%+0+g' \
|
||||
-e 's+%%HAVE_ARCH%%+0+g' ${WRKSRC}/config.c
|
||||
.endif
|
||||
.if (${ARCH} == "alpha")
|
||||
EXTRA_PATCHES+= ${FILESDIR}/alpha-patch
|
||||
.endif
|
||||
|
||||
.if ${ARCH} == "sparc64"
|
||||
PICFLAG?= -fPIC
|
||||
@ -69,72 +38,124 @@ PICFLAG?= -fPIC
|
||||
PICFLAG?= -fpic
|
||||
.endif
|
||||
|
||||
ANSWER_i386?= ${PRINTF} "\n\n\n\n\n\n\n\n\n\n"
|
||||
ANSWER_ia64?= ${PRINTF} "\n\n\n2\n\n\n\n\nf77\n-O2 -static\n\n"
|
||||
|
||||
.if defined(PACKAGE_BUILDING) && (${ARCH} == "i386")
|
||||
PORTS_ARCH=IntP5
|
||||
.if ${ARCH} == "i386"
|
||||
POINTER= 32
|
||||
.endif
|
||||
.if ${ARCH} == "amd64"
|
||||
POINTER= 64
|
||||
.endif
|
||||
.if ${ARCH} == "sparc64"
|
||||
POINTER= 64
|
||||
.endif
|
||||
|
||||
.if !defined(ANSWER_${ARCH})
|
||||
ANSWER= ${ANSWER_i386}
|
||||
.if (${OSVERSION} < 700000) && defined(WITH_GCC42KERNEL)
|
||||
BUILD_DEPENDS+= gcc42:${PORTSDIR}/lang/gcc42
|
||||
KERNELFLAG= -Ss kern gcc42
|
||||
.else
|
||||
ANSWER= ${ANSWER_${ARCH}}
|
||||
KERNELFLAG= ""
|
||||
.endif
|
||||
|
||||
.if defined(TIMING_TOLERANCE)
|
||||
EXTRA_PATCHES+= ${FILESDIR}/timing_tolerance-patch
|
||||
.if defined(WITH_WALL_TIMER)
|
||||
. if defined(MHZ) && ( ${ARCH} == "i386" || ${ARCH} == "amd64" )
|
||||
TIMEFLAG= -D c -DPentiumCPS=${MHZ}
|
||||
. else
|
||||
TIMEFLAG= -D c -DWALL
|
||||
. endif
|
||||
.else
|
||||
TIMEFLAG= ""
|
||||
.endif
|
||||
|
||||
# only used for lapack sub-project
|
||||
.if defined(WITH_OPTIMIZED_FLAGS)
|
||||
.if defined(CPUTYPE)
|
||||
FFLAGS+= -march=${CPUTYPE} -pipe -O2 -ffast-math
|
||||
.else
|
||||
FFLAGS+= -pipe -O2 -ffast-math
|
||||
.endif
|
||||
.endif
|
||||
.if defined(WITH_STATICLIB)
|
||||
PLIST_SUB+= WITH_STATICLIB=""
|
||||
.else
|
||||
PLIST_SUB+= WITH_STATICLIB="@comment "
|
||||
.endif
|
||||
|
||||
pre-configure:
|
||||
@${ECHO_MSG} "Warning:"
|
||||
@${ECHO_MSG} "Building this port can take long time"
|
||||
@${ECHO_MSG} "for slow computers (over 1 day)."
|
||||
@${ECHO_MSG} "And sometimes stop building for Athlon."
|
||||
@${ECHO_MSG} "In this case please retype make or rebuild whole atlas."
|
||||
post-extract:
|
||||
@${ECHO_MSG} 'This port engages in a long, computationally-demanding tuning process.'
|
||||
@${ECHO_MSG} 'Builds can take a day or more on older hardware, and temporarily occupy'
|
||||
@${ECHO_MSG} 'several hundred megabytes of disk space. You are advised to disable'
|
||||
@${ECHO_MSG} 'all forms of power management or CPU throttling (APM, ACPI, Intel'
|
||||
@${ECHO_MSG} 'SpeedStep, AMD PowerNow, AMD Cool and Quiet, p4tcc, powerd, etc.)'
|
||||
@${ECHO_MSG} 'that may change the disk I/O or CPU behavior during the build, and'
|
||||
@${ECHO_MSG} 'to set operating parameters to static values at which you ultimately'
|
||||
@${ECHO_MSG} 'intend to use the software. You should also avoid placing heavy loads'
|
||||
@${ECHO_MSG} 'on the system during the build, and temporarily disable any automatons'
|
||||
@${ECHO_MSG} 'that may do so. If you fail to follow these guidelines, you may prolong'
|
||||
@${ECHO_MSG} 'the build, perhaps indefinitely, and you may obtain libraries with'
|
||||
@${ECHO_MSG} 'sub-optimal performance.'
|
||||
@${ECHO_MSG}
|
||||
.if !defined(PORTS_ARCH)
|
||||
@${ECHO_MSG} "Warning:"
|
||||
@${ECHO_MSG} "If your arch is not correctly detected, you can specify"
|
||||
@${ECHO_MSG} "by yourself."
|
||||
@${ECHO_MSG} "for example : make PORTS_ARCH=P5Int"
|
||||
@${ECHO_MSG} "Available architectures for x86 are:"
|
||||
@${ECHO_MSG} "IntP5, IntP5MMX, IntPPRO, IntPII, IntPIII, IntP4, IntP4E"
|
||||
@${ECHO_MSG} "IntP4E64, TMEff, AmdAthlon,AmdHammer32, AmdHammer64"
|
||||
@${ECHO_MSG} 'Occasionally the autoconfiguration may fail for certain platforms, and'
|
||||
@${ECHO_MSG} 'you may have to override the architecture, compiler flags, assembly'
|
||||
@${ECHO_MSG} 'language dialect, or pointer bit-width by issuing additional configure'
|
||||
@${ECHO_MSG} 'arguments. Consult the FAQ, installation guide, and errata page at'
|
||||
@${ECHO_MSG} 'the project website for help if this is necessary, and notify the'
|
||||
@${ECHO_MSG} 'port maintainer.'
|
||||
@${ECHO_MSG}
|
||||
.endif
|
||||
.if !defined(TIMING_TOLERANCE)
|
||||
@${ECHO_MSG} "If your install dies with unable to get timings in tolerance"
|
||||
@${ECHO_MSG} "First please refer http://math-atlas.sourceforge.net/errata.html#tol"
|
||||
@${ECHO_MSG} "and you can build with"
|
||||
@${ECHO_MSG} "make clean; make -DTIMING_TOLERANCE"
|
||||
@${ECHO_MSG} "if your build still dies, you can type make again, (and again...)"
|
||||
@${ECHO_MSG} "This port purposely ignores the CC and CFLAGS settings"
|
||||
@${ECHO_MSG} "Program and compiler flags are fine-tuned to the gcc 4.2.x"
|
||||
@${ECHO_MSG} "compiler, although other gcc versions may be used; gcc 4.1.x"
|
||||
@${ECHO_MSG} "is NOT recommended"
|
||||
@${ECHO_MSG}
|
||||
.endif
|
||||
.if !defined(WITH_STATICLIB)
|
||||
@${ECHO_MSG} "You can build static libraries with"
|
||||
@${ECHO_MSG} "make -DWITH_STATICLIB"
|
||||
@${ECHO_MSG}
|
||||
.endif
|
||||
.if !defined(WITH_WALL_TIMER)
|
||||
@${ECHO_MSG} "If your machine will be solely dedicated to"
|
||||
@${ECHO_MSG} "building atlas with gcc during the lengthy optimization"
|
||||
@${ECHO_MSG} "process, and not subjected to other loads, you"
|
||||
@${ECHO_MSG} "may enable the more accurate wall timer (instead of"
|
||||
@${ECHO_MSG} "the default CPU-time timer) with make -DWITH_WALL_TIMER"
|
||||
@${ECHO_MSG} "If, in addition, you are on i386 or amd64, you may set MHZ"
|
||||
@${ECHO_MSG} "to your CPU clock frequency in MHz (rounded to the nearest"
|
||||
@${ECHO_MSG} "integer value) in the build environment for cycle-to-time"
|
||||
@${ECHO_MSG} "conversion"
|
||||
@${ECHO_MSG}
|
||||
.endif
|
||||
.if (${OSVERSION} < 700000)
|
||||
.if !defined(WITH_GCC42KERNEL)
|
||||
@${ECHO_MSG} "If you don't want to make gcc 4.2.x your default compiler (CC),"
|
||||
@${ECHO_MSG} "but you want to have ATLAS use it to compile all the kernel"
|
||||
@${ECHO_MSG} "routines (this usually results in superior performance, and a"
|
||||
@${ECHO_MSG} "slightly faster build), while compiling interface routines and"
|
||||
@${ECHO_MSG} "doing any linking with gcc 3.x, make a hybrid build with"
|
||||
@${ECHO_MSG} "make -DWITH_GCC42KERNEL"
|
||||
@${ECHO_MSG}
|
||||
.endif
|
||||
.endif
|
||||
|
||||
pre-configure:
|
||||
@${REINPLACE_CMD} -e "s|%%CC%%|${CCOMPILER}|g" \
|
||||
-e "s|%%FC%%|${FC}|g" ${WRKSRC}/CONFIG/src/atlcomp.txt
|
||||
@${REINPLACE_CMD} -e "s|%%PTHREAD_LIBS%%|${PTHREAD_LIBS}|g" \
|
||||
-e "s|%%PTHREAD_CFLAGS%%|${PTHREAD_CFLAGS}|g" \
|
||||
-e "s|%%LOCALBASE%%|${LOCALBASE}|g" \
|
||||
${WRKSRC}/CONFIG/src/SpewMakeInc.c
|
||||
|
||||
do-configure:
|
||||
@(cd ${WRKSRC}; ${MAKE_ENV} ${MAKE} xconfig && \
|
||||
${ANSWER} | ./xconfig -N 1 -c ${CCOMPILER} -f ${FC} -m ${CCOMPILER} -g ${CCOMPILER} -x ${CCOMPILER} -a NON_THREADED && \
|
||||
${ANSWER} | ./xconfig -N 1 -c ${CCOMPILER} -f ${FC} -m ${CCOMPILER} -g ${CCOMPILER} -x ${CCOMPILER} -a NON_THREADED_PIC -C '${PICFLAG} -DPIC' -F f '${PICFLAG} -DPIC -O' )
|
||||
@(cd ${WRKSRC}; ${PATCH} < ${FILESDIR}/thread-patch && \
|
||||
${MAKE_ENV} ${MAKE} xconfig && \
|
||||
${ANSWER} | ./xconfig -c ${CCOMPILER} -f ${FC} -m ${CCOMPILER} -g ${CCOMPILER} -x ${CCOMPILER} -a THREADED && \
|
||||
${ANSWER} | ./xconfig -c ${CCOMPILER} -f ${FC} -m ${CCOMPILER} -g ${CCOMPILER} -x ${CCOMPILER} -a THREADED_PIC -C '${PICFLAG} -DPIC' -F f '${PICFLAG} -DPIC -O' )
|
||||
|
||||
ATLAS_LIBS1=libalapack libatlas libcblas libf77blas libtstatlas
|
||||
ATLAS_LIBS2=libptcblas libptf77blas
|
||||
LAPACKWRKSRC=`cd ${WRKDIR}/lapack; ${MAKE} -V WRKSRC`
|
||||
#non-threaded
|
||||
#dummy f77lib, it is not used.
|
||||
${MKDIR} ${WRKSRC}/NON_THREADED ; cd ${WRKSRC}/NON_THREADED ; \
|
||||
../configure -v 2 -t 0 ${TIMEFLAG} -b ${POINTER} -Si cputhrchk 0 ${KERNELFLAG} -Ss f77lib " "
|
||||
${MKDIR} ${WRKSRC}/NON_THREADED_PIC ; cd ${WRKSRC}/NON_THREADED_PIC ; \
|
||||
../configure -v 2 -t 0 -b ${POINTER} -Fa alg '${PICFLAG} -DPIC' ${TIMEFLAG} -Si cputhrchk 0 ${KERNELFLAG} -Ss f77lib " "
|
||||
#threaded
|
||||
#dummy f77lib, it is not used.
|
||||
cd ${WRKSRC}; ${PATCH} < ${FILESDIR}/thread-patch
|
||||
${MKDIR} ${WRKSRC}/THREADED ; cd ${WRKSRC}/THREADED ; \
|
||||
../configure -v 2 -b ${POINTER} -Fa alg '${PTHREAD_CFLAGS} ' ${TIMEFLAG} -Si cputhrchk 0 ${KERNELFLAG} -Ss f77lib " "
|
||||
${MKDIR} ${WRKSRC}/THREADED_PIC ; cd ${WRKSRC}/THREADED_PIC ; \
|
||||
../configure -v 2 -b ${POINTER} -Fa alg '${PTHREAD_CFLAGS} ${PICFLAG} -DPIC' ${TIMEFLAG} -Si cputhrchk 0 ${KERNELFLAG} -Ss f77lib " "
|
||||
|
||||
do-build:
|
||||
# make lapack
|
||||
@ -147,102 +168,99 @@ do-build:
|
||||
@${CP} ${PORTSDIR}/math/lapack/pkg-descr ${WRKDIR}/lapack
|
||||
@cd ${WRKDIR}/lapack ; ${MAKE} "FFLAGS=${FFLAGS}" FC="${FC}" build WRKDIRPREFIX=""
|
||||
.endif
|
||||
@(cd ${WRKSRC}; ${MAKE} ${.MAKEFLAGS} "ARCH=NON_THREADED_PIC" install arch=NON_THREADED_PIC)
|
||||
@(cd ${WRKSRC}; ${MAKE} ${.MAKEFLAGS} "ARCH=THREADED_PIC" install arch=THREADED_PIC)
|
||||
.if defined(WITH_STATICLIB)
|
||||
@(cd ${WRKSRC}; ${MAKE} ${.MAKEFLAGS} "ARCH=NON_THREADED" install arch=NON_THREADED)
|
||||
@(cd ${WRKSRC}; ${MAKE} ${.MAKEFLAGS} "ARCH=THREADED" install arch=THREADED)
|
||||
(cd ${WRKSRC}/NON_THREADED ; ${MAKE})
|
||||
(cd ${WRKSRC}/THREADED ; ${MAKE})
|
||||
.endif
|
||||
@${MAKE} test
|
||||
(cd ${WRKSRC}/NON_THREADED_PIC ; ${MAKE})
|
||||
(cd ${WRKSRC}/THREADED_PIC ; ${MAKE})
|
||||
test:
|
||||
@${MAKE} do-test
|
||||
|
||||
ATLAS_LIBS1=libalapack libatlas libcblas libf77blas #libtstatlas
|
||||
ATLAS_LIBS2=libptcblas libptf77blas
|
||||
LAPACKWRKSRC=`cd ${WRKDIR}/lapack; ${MAKE} -V WRKSRC WRKDIRPREFIX=""`
|
||||
|
||||
post-build:
|
||||
.if defined(WITH_STATICLIB)
|
||||
# make atlas enhanced lapack (static ver)
|
||||
# make atlas-enhanced lapack (static ver)
|
||||
(cd ${WRKSRC}; ${MKDIR} tmp1 ; \
|
||||
${CP} ${LAPACKWRKSRC}/liblapack.a tmp1 ;\
|
||||
cd tmp1 ;\
|
||||
ar x liblapack.a ;\
|
||||
ar x ../lib/NON_THREADED/liblapack.a ;\
|
||||
ar r ../lib/NON_THREADED/libalapack.a *.o ;\
|
||||
ranlib ../lib/NON_THREADED/libalapack.a )
|
||||
# make atlas enhanced lapack (static and thread safe ver)
|
||||
ar x ../NON_THREADED/lib/liblapack.a ;\
|
||||
ar r ../NON_THREADED/lib/libalapack.a *.o ;\
|
||||
ranlib ../NON_THREADED/lib/libalapack.a )
|
||||
# make atlas-enhanced lapack (static and thread-safe ver)
|
||||
(cd ${WRKSRC}; ${MKDIR} tmp2 ; \
|
||||
${CP} ${LAPACKWRKSRC}/liblapack.a tmp2 ;\
|
||||
cd tmp2 ;\
|
||||
ar x liblapack.a ;\
|
||||
ar x ../lib/THREADED/liblapack.a ;\
|
||||
ar r ../lib/THREADED/libalapack.a *.o ;\
|
||||
ranlib ../lib/THREADED/libalapack.a )
|
||||
ar x ../THREADED/lib/liblapack.a ;\
|
||||
ar r ../THREADED/lib/libalapack.a *.o ;\
|
||||
ranlib ../THREADED/lib/libalapack.a )
|
||||
.endif
|
||||
# make atlas enhanced lapack (shared ver)
|
||||
# make atlas-enhanced lapack (shared ver)
|
||||
( cd ${WRKSRC}; ${MKDIR} tmp3 ;\
|
||||
${CP} ${LAPACKWRKSRC}_shared/liblapack.a tmp3 ;\
|
||||
cd tmp3 ;\
|
||||
ar x liblapack.a ;\
|
||||
ar x ../lib/NON_THREADED_PIC/liblapack.a ;\
|
||||
ar r ../lib/NON_THREADED_PIC/libalapack.a *.o ;\
|
||||
ranlib ../lib/NON_THREADED_PIC/libalapack.a )
|
||||
# make atlas enhanced lapack (shared and thread safe ver)
|
||||
ar x ../NON_THREADED_PIC/lib/liblapack.a ;\
|
||||
ar r ../NON_THREADED_PIC/lib/libalapack.a *.o ;\
|
||||
ranlib ../NON_THREADED_PIC/lib/libalapack.a )
|
||||
# make atlas-enhanced lapack (shared and thread-safe ver)
|
||||
( cd ${WRKSRC}; ${MKDIR} tmp4 ;\
|
||||
${CP} ${LAPACKWRKSRC}_shared/liblapack.a tmp4 ;\
|
||||
cd tmp4 ;\
|
||||
ar x liblapack.a ;\
|
||||
ar x ../lib/THREADED_PIC/liblapack.a ;\
|
||||
ar r ../lib/THREADED_PIC/libalapack.a *.o ;\
|
||||
ranlib ../lib/THREADED_PIC/libalapack.a )
|
||||
ar x ../THREADED_PIC/lib/liblapack.a ;\
|
||||
ar r ../THREADED_PIC/lib/libalapack.a *.o ;\
|
||||
ranlib ../THREADED_PIC/lib/libalapack.a )
|
||||
|
||||
# make atlas shared library
|
||||
.for i in ${ATLAS_LIBS1}
|
||||
( cd ${WRKSRC}/lib/NON_THREADED_PIC/ ; \
|
||||
( cd ${WRKSRC}/NON_THREADED_PIC/lib ; \
|
||||
ld -Bshareable -o ${i}.so.2 -x -soname ${i}.so.2 --whole-archive ${i}.a )
|
||||
.endfor
|
||||
|
||||
# make atlas shared (thread safe) library
|
||||
# make atlas shared (thread-safe) library
|
||||
.for i in ${ATLAS_LIBS1}
|
||||
( cd ${WRKSRC}/lib/THREADED_PIC/ ; \
|
||||
( cd ${WRKSRC}/THREADED_PIC/lib ; \
|
||||
ld -Bshareable -o ${i}_r.so.2 -x -soname ${i}_r.so.2 --whole-archive ${i}.a )
|
||||
.endfor
|
||||
.for i in ${ATLAS_LIBS2}
|
||||
( cd ${WRKSRC}/lib/THREADED_PIC/ ; \
|
||||
( cd ${WRKSRC}/THREADED_PIC/lib ; \
|
||||
ld -Bshareable -o ${i}.so.2 -x -soname ${i}.so.2 --whole-archive ${i}.a )
|
||||
.endfor
|
||||
|
||||
do-install:
|
||||
.for i in ${ATLAS_LIBS1}
|
||||
.if defined(WITH_STATICLIB)
|
||||
@${INSTALL_DATA} ${WRKSRC}/lib/NON_THREADED/${i}.a ${PREFIX}/lib
|
||||
@${INSTALL_DATA} ${WRKSRC}/NON_THREADED/lib/${i}.a ${PREFIX}/lib
|
||||
.endif
|
||||
@${INSTALL_DATA} ${WRKSRC}/lib/NON_THREADED_PIC/${i}.so.2 ${PREFIX}/lib
|
||||
@${INSTALL_DATA} ${WRKSRC}/NON_THREADED_PIC/lib/${i}.so.2 ${PREFIX}/lib
|
||||
@${LN} -sf ${i}.so.2 ${PREFIX}/lib/${i}.so
|
||||
.endfor
|
||||
.for i in ${ATLAS_LIBS1}
|
||||
.if defined(WITH_STATICLIB)
|
||||
@${INSTALL_DATA} ${WRKSRC}/lib/THREADED/${i}.a ${PREFIX}/lib/${i}_r.a
|
||||
@${INSTALL_DATA} ${WRKSRC}/THREADED/lib/${i}.a ${PREFIX}/lib/${i}_r.a
|
||||
.endif
|
||||
@${INSTALL_DATA} ${WRKSRC}/lib/THREADED_PIC/${i}_r.so.2 ${PREFIX}/lib/${i}_r.so.2
|
||||
@${INSTALL_DATA} ${WRKSRC}/THREADED_PIC/lib/${i}_r.so.2 ${PREFIX}/lib/${i}_r.so.2
|
||||
@${LN} -sf ${i}_r.so.2 ${PREFIX}/lib/${i}_r.so
|
||||
.endfor
|
||||
.for i in ${ATLAS_LIBS2}
|
||||
.if defined(WITH_STATICLIB)
|
||||
@${INSTALL_DATA} ${WRKSRC}/lib/THREADED/${i}.a ${PREFIX}/lib
|
||||
@${INSTALL_DATA} ${WRKSRC}/THREADED/lib/${i}.a ${PREFIX}/lib
|
||||
.endif
|
||||
@${INSTALL_DATA} ${WRKSRC}/lib/THREADED_PIC/${i}.so.2 ${PREFIX}/lib
|
||||
@${INSTALL_DATA} ${WRKSRC}/THREADED_PIC/lib/${i}.so.2 ${PREFIX}/lib
|
||||
@${LN} -sf ${i}.so.2 ${PREFIX}/lib/${i}.so
|
||||
.endfor
|
||||
|
||||
@${INSTALL_DATA} ${WRKSRC}/include/cblas.h ${PREFIX}/include
|
||||
@${INSTALL_DATA} ${WRKSRC}/include/clapack.h ${PREFIX}/include
|
||||
@${INSTALL_DATA} ${FILESDIR}/blas.h ${PREFIX}/include
|
||||
@${INSTALL_DATA} ${FILESDIR}/lapack.h ${PREFIX}/include
|
||||
.if !defined(NOPORTDOCS)
|
||||
@${MKDIR} ${DOCSDIR}
|
||||
${INSTALL_DATA} ${WRKSRC}/doc/* ${DOCSDIR}
|
||||
.endif
|
||||
${MKDIR} ${EXAMPLESDIR}
|
||||
@for i in ${ALLTESTS} ; do \
|
||||
cd ${WRKDIR}/ATLAS/bin/NON_THREADED_PIC ; ${INSTALL_PROGRAM} $${i} ${EXAMPLESDIR} ; \
|
||||
done
|
||||
@for i in ${ALLTESTS_PT} ; do \
|
||||
cd ${WRKDIR}/ATLAS/bin/THREADED_PIC ; ${INSTALL_PROGRAM} $${i} ${EXAMPLESDIR} ; \
|
||||
done
|
||||
|
||||
.include <${FILESDIR}/Makefile.test>
|
||||
.include <bsd.port.post.mk>
|
||||
|
@ -1,3 +1,3 @@
|
||||
MD5 (atlas3.6.0.tar.bz2) = df2ee2eb65d1c08ee93d04370172c262
|
||||
SHA256 (atlas3.6.0.tar.bz2) = 1c2ad68fe3c66e261c012788fc1b6f74eada791f713848a3a6420c50fa35c8e8
|
||||
SIZE (atlas3.6.0.tar.bz2) = 1687723
|
||||
MD5 (atlas3.8.0.tar.bz2) = fd42a00f36243bf4815d035b226ec305
|
||||
SHA256 (atlas3.8.0.tar.bz2) = e9131d8ffd2dfdd12312676e38183ca45a52547fad5498e46f90c95954bf121c
|
||||
SIZE (atlas3.8.0.tar.bz2) = 2463051
|
||||
|
@ -9,26 +9,26 @@ ALLTESTS_PT = xsl3blastst_pt xdl3blastst_pt xcl3blastst_pt xzl3blastst_pt \
|
||||
xslutst_pt xslutstF_pt xdlutst_pt xdlutstF_pt xclutst_pt xclutstF_pt \
|
||||
xzlutst_pt xzlutstF_pt xsllttst_pt xsllttstF_pt xdllttst_pt \
|
||||
xdllttstF_pt xcllttst_pt xcllttstF_pt xzllttst_pt xzllttstF_pt
|
||||
#builderrors?
|
||||
# xsl1blastst_pt xdl1blastst_pt xcl1blastst_pt xzl1blastst_pt \
|
||||
#build errors?
|
||||
# xsl2blastst_pt xdl2blastst_pt xcl2blastst_pt xzl2blastst_pt \
|
||||
|
||||
test:
|
||||
for i in ${ALLTESTS} ; do \
|
||||
# xsl1blastst_pt xdl1blastst_pt xcl1blastst_pt xzl1blastst_pt \
|
||||
#Failed tests
|
||||
do-test:
|
||||
@for i in ${ALLTESTS} ; do \
|
||||
${ECHO_CMD} "Making $${i}" ; \
|
||||
cd ${WRKDIR}/ATLAS/bin/NON_THREADED_PIC/ ; ${MAKE} ${.MAKEFLAGS} "ARCH=NON_THREADED_PIC" $${i} ; \
|
||||
cd ${WRKDIR}/ATLAS/NON_THREADED_PIC/bin ; ${MAKE} $${i} ; \
|
||||
done
|
||||
for i in ${ALLTESTS_PT} ; do \
|
||||
@for i in ${ALLTESTS_PT} ; do \
|
||||
${ECHO_CMD} "Making $${i}" ; \
|
||||
cd ${WRKDIR}/ATLAS/bin/THREADED_PIC ; ${MAKE} ${.MAKEFLAGS} "ARCH=THREADED_PIC" $${i} ; \
|
||||
cd ${WRKDIR}/ATLAS/THREADED_PIC/bin ; ${MAKE} $${i} ; \
|
||||
done
|
||||
for i in ${ALLTESTS} ; do \
|
||||
@for i in ${ALLTESTS} ; do \
|
||||
${ECHO_CMD} "Benchmarking $${i}" ; \
|
||||
cd ${WRKDIR}/ATLAS/bin/NON_THREADED_PIC ; ./$${i} ; \
|
||||
cd ${WRKDIR}/ATLAS/NON_THREADED_PIC/bin ; ./$${i} ; \
|
||||
done
|
||||
for i in ${ALLTESTS_PT} ; do \
|
||||
@for i in ${ALLTESTS_PT} ; do \
|
||||
${ECHO_CMD} "Benchmarking $${i}" ; \
|
||||
cd ${WRKDIR}/ATLAS/bin/THREADED_PIC ; ./$${i} ; \
|
||||
cd ${WRKDIR}/ATLAS/THREADED_PIC/bin ; ./$${i} ; \
|
||||
done
|
||||
|
||||
|
||||
|
@ -1,857 +0,0 @@
|
||||
// blas prototypes file for C++
|
||||
// based on BLAS/WRAP/fblaswr.h
|
||||
// in clapack.tgz, version 3.0(September 20, 2000)
|
||||
// available at http://www.netlib.org/clapack/
|
||||
// and modified by Nakata Maho <maho@FreeBSD.org>
|
||||
// for C++, which requires proper prototype definitions.
|
||||
|
||||
extern "C"
|
||||
{
|
||||
#include <f2c.h>
|
||||
|
||||
real
|
||||
sdot_(integer* N,
|
||||
real* X, integer* incX,
|
||||
real* Y, integer* incY);
|
||||
|
||||
doublereal
|
||||
ddot_(integer* N,
|
||||
doublereal* X, integer* incX,
|
||||
doublereal* Y, integer* incY);
|
||||
|
||||
void
|
||||
cdotu_(complex* retval,
|
||||
integer* N,
|
||||
complex* X, integer* incX,
|
||||
complex* Y, integer* incY);
|
||||
|
||||
void
|
||||
cdotc_(complex* retval,
|
||||
integer* N,
|
||||
complex* X, integer* incX,
|
||||
complex* Y, integer* incY);
|
||||
|
||||
void
|
||||
zdotu_(doublecomplex* retval,
|
||||
integer* N,
|
||||
doublecomplex* X, integer* incX,
|
||||
doublecomplex* Y, integer* incY);
|
||||
|
||||
void
|
||||
zdotc_(doublecomplex* retval,
|
||||
integer* N,
|
||||
doublecomplex* X, integer* incX,
|
||||
doublecomplex* Y, integer* incY);
|
||||
|
||||
real
|
||||
snrm2_(integer* N,
|
||||
real* X, integer* incX);
|
||||
|
||||
real
|
||||
sasum_(integer* N,
|
||||
real* X, integer* incX);
|
||||
|
||||
doublereal
|
||||
dnrm2_(integer* N,
|
||||
doublereal* X, integer* incX);
|
||||
|
||||
doublereal
|
||||
dasum_(integer* N,
|
||||
doublereal* X, integer* incX);
|
||||
|
||||
real
|
||||
scnrm2_(integer* N,
|
||||
complex* X, integer* incX);
|
||||
|
||||
real
|
||||
scasum_(integer* N,
|
||||
complex* X, integer* incX);
|
||||
|
||||
doublereal
|
||||
dznrm2_(integer* N,
|
||||
doublecomplex* X, integer* incX);
|
||||
|
||||
doublereal
|
||||
dzasum_(integer* N,
|
||||
doublecomplex* X, integer* incX);
|
||||
|
||||
integer
|
||||
isamax_(integer* N,
|
||||
real* X, integer* incX);
|
||||
|
||||
integer
|
||||
idamax_(integer* N,
|
||||
doublereal* X, integer* incX);
|
||||
|
||||
integer
|
||||
icamax_(integer* N,
|
||||
complex* X, integer* incX);
|
||||
|
||||
integer
|
||||
izamax_(integer* N,
|
||||
doublecomplex* X, integer* incX);
|
||||
|
||||
int
|
||||
sswap_(integer* N,
|
||||
real* X, integer* incX,
|
||||
real* Y, integer* incY);
|
||||
|
||||
int
|
||||
scopy_(integer* N,
|
||||
real* X, integer* incX,
|
||||
real* Y, integer* incY);
|
||||
|
||||
int
|
||||
saxpy_(integer* N,
|
||||
real* alpha,
|
||||
real* X, integer* incX,
|
||||
real* Y, integer* incY);
|
||||
|
||||
int
|
||||
dswap_(integer* N,
|
||||
doublereal* X, integer* incX,
|
||||
doublereal* Y, integer* incY);
|
||||
|
||||
int
|
||||
dcopy_(integer* N,
|
||||
doublereal* X, integer* incX,
|
||||
doublereal* Y, integer* incY);
|
||||
|
||||
int
|
||||
daxpy_(integer* N,
|
||||
doublereal* alpha,
|
||||
doublereal* X, integer* incX,
|
||||
doublereal* Y, integer* incY);
|
||||
|
||||
int
|
||||
cswap_(integer* N,
|
||||
complex* X, integer* incX,
|
||||
complex* Y, integer* incY);
|
||||
|
||||
int
|
||||
ccopy_(integer* N,
|
||||
complex* X, integer* incX,
|
||||
complex* Y, integer* incY);
|
||||
|
||||
int
|
||||
caxpy_(integer* N,
|
||||
complex* alpha,
|
||||
complex* X, integer* incX,
|
||||
complex* Y, integer* incY);
|
||||
|
||||
int
|
||||
zswap_(integer* N,
|
||||
doublecomplex* X, integer* incX,
|
||||
doublecomplex* Y, integer* incY);
|
||||
|
||||
int
|
||||
zcopy_(integer* N,
|
||||
doublecomplex* X, integer* incX,
|
||||
doublecomplex* Y, integer* incY);
|
||||
|
||||
int
|
||||
zaxpy_(integer* N,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* X, integer* incX,
|
||||
doublecomplex* Y, integer* incY);
|
||||
|
||||
int
|
||||
srotg_(real* a, real* b, real* c, real* s);
|
||||
|
||||
int
|
||||
srot_(integer* N,
|
||||
real* X, integer* incX,
|
||||
real* Y, integer* incY,
|
||||
real* c, real* s);
|
||||
|
||||
int
|
||||
drotg_(doublereal* a, doublereal* b, doublereal* c, doublereal* s);
|
||||
|
||||
int
|
||||
drot_(integer* N,
|
||||
doublereal* X, integer* incX,
|
||||
doublereal* Y, integer* incY,
|
||||
doublereal* c, doublereal* s);
|
||||
|
||||
int
|
||||
sscal_(integer* N,
|
||||
real* alpha,
|
||||
real* X, integer* incX);
|
||||
|
||||
int
|
||||
dscal_(integer* N,
|
||||
doublereal* alpha,
|
||||
doublereal* X, integer* incX);
|
||||
|
||||
int
|
||||
cscal_(integer* N,
|
||||
complex* alpha,
|
||||
complex* X, integer* incX);
|
||||
|
||||
int
|
||||
zscal_(integer* N,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* X, integer* incX);
|
||||
|
||||
int
|
||||
csscal_(integer* N,
|
||||
real* alpha,
|
||||
complex* X, integer* incX);
|
||||
|
||||
int
|
||||
zdscal_(integer* N,
|
||||
doublereal* alpha,
|
||||
doublecomplex* X, integer* incX);
|
||||
|
||||
int
|
||||
sgemv_(char* trans, integer* M, integer* N,
|
||||
real* alpha,
|
||||
real* A, integer* lda,
|
||||
real* X, integer* incX,
|
||||
real* beta,
|
||||
real* Y, integer* incY);
|
||||
|
||||
int
|
||||
sgbmv_(char *trans, integer *M, integer *N, integer *KL, integer *KU,
|
||||
real *alpha,
|
||||
real *A, integer *lda,
|
||||
real *X, integer *incX,
|
||||
real *beta,
|
||||
real *Y, integer *incY);
|
||||
|
||||
int
|
||||
strmv_(char* uplo, char *trans, char* diag, integer *N,
|
||||
real *A, integer *lda,
|
||||
real *X, integer *incX);
|
||||
|
||||
int
|
||||
stbmv_(char* uplo, char* trans, char* diag, integer* N, integer* K,
|
||||
real* A, integer* lda,
|
||||
real* X, integer* incX);
|
||||
|
||||
int
|
||||
stpmv_(char* uplo, char* trans, char* diag, integer* N,
|
||||
real* Ap,
|
||||
real* X, integer* incX);
|
||||
|
||||
int
|
||||
strsv_(char* uplo, char* trans, char* diag, integer* N,
|
||||
real* A, integer* lda,
|
||||
real* X, integer* incX);
|
||||
|
||||
int
|
||||
stbsv_(char* uplo, char* trans, char* diag, integer* N, integer* K,
|
||||
real* A, integer* lda,
|
||||
real* X, integer* incX);
|
||||
|
||||
int
|
||||
stpsv_(char* uplo, char* trans, char* diag, integer* N,
|
||||
real* Ap,
|
||||
real* X, integer* incX);
|
||||
|
||||
int
|
||||
dgemv_(char* trans, integer* M, integer* N,
|
||||
doublereal* alpha,
|
||||
doublereal* A, integer* lda,
|
||||
doublereal* X, integer* incX,
|
||||
doublereal* beta,
|
||||
doublereal* Y, integer* incY);
|
||||
|
||||
int
|
||||
dgbmv_(char *trans, integer *M, integer *N, integer *KL, integer *KU,
|
||||
doublereal *alpha,
|
||||
doublereal *A, integer *lda,
|
||||
doublereal *X, integer *incX,
|
||||
doublereal *beta,
|
||||
doublereal *Y, integer *incY);
|
||||
|
||||
int
|
||||
dtrmv_(char* uplo, char *trans, char* diag, integer *N,
|
||||
doublereal *A, integer *lda,
|
||||
doublereal *X, integer *incX);
|
||||
|
||||
int
|
||||
dtbmv_(char* uplo, char* trans, char* diag, integer* N, integer* K,
|
||||
doublereal* A, integer* lda,
|
||||
doublereal* X, integer* incX);
|
||||
|
||||
int
|
||||
dtpmv_(char* uplo, char* trans, char* diag, integer* N,
|
||||
doublereal* Ap,
|
||||
doublereal* X, integer* incX);
|
||||
|
||||
int
|
||||
dtrsv_(char* uplo, char* trans, char* diag, integer* N,
|
||||
doublereal* A, integer* lda,
|
||||
doublereal* X, integer* incX);
|
||||
|
||||
int
|
||||
dtbsv_(char* uplo, char* trans, char* diag, integer* N, integer* K,
|
||||
doublereal* A, integer* lda,
|
||||
doublereal* X, integer* incX);
|
||||
|
||||
int
|
||||
dtpsv_(char* uplo, char* trans, char* diag, integer* N,
|
||||
doublereal* Ap,
|
||||
doublereal* X, integer* incX);
|
||||
|
||||
int
|
||||
cgemv_(char* trans, integer* M, integer* N,
|
||||
complex* alpha,
|
||||
complex* A, integer* lda,
|
||||
complex* X, integer* incX,
|
||||
complex* beta,
|
||||
complex* Y, integer* incY);
|
||||
|
||||
int
|
||||
cgbmv_(char *trans, integer *M, integer *N, integer *KL, integer *KU,
|
||||
complex *alpha,
|
||||
complex *A, integer *lda,
|
||||
complex *X, integer *incX,
|
||||
complex *beta,
|
||||
complex *Y, integer *incY);
|
||||
|
||||
int
|
||||
ctrmv_(char* uplo, char *trans, char* diag, integer *N,
|
||||
complex *A, integer *lda,
|
||||
complex *X, integer *incX);
|
||||
|
||||
int
|
||||
ctbmv_(char* uplo, char* trans, char* diag, integer* N, integer* K,
|
||||
complex* A, integer* lda,
|
||||
complex* X, integer* incX);
|
||||
|
||||
int
|
||||
ctpmv_(char* uplo, char* trans, char* diag, integer* N,
|
||||
complex* Ap,
|
||||
complex* X, integer* incX);
|
||||
|
||||
int
|
||||
ctrsv_(char* uplo, char* trans, char* diag, integer* N,
|
||||
complex* A, integer* lda,
|
||||
complex* X, integer* incX);
|
||||
|
||||
int
|
||||
ctbsv_(char* uplo, char* trans, char* diag, integer* N, integer* K,
|
||||
complex* A, integer* lda,
|
||||
complex* X, integer* incX);
|
||||
|
||||
int
|
||||
ctpsv_(char* uplo, char* trans, char* diag, integer* N,
|
||||
complex* Ap,
|
||||
complex* X, integer* incX);
|
||||
|
||||
int
|
||||
zgemv_(char* trans, integer* M, integer* N,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* A, integer* lda,
|
||||
doublecomplex* X, integer* incX,
|
||||
doublecomplex* beta,
|
||||
doublecomplex* Y, integer* incY);
|
||||
|
||||
int
|
||||
zgbmv_(char *trans, integer *M, integer *N, integer *KL, integer *KU,
|
||||
doublecomplex *alpha,
|
||||
doublecomplex *A, integer *lda,
|
||||
doublecomplex *X, integer *incX,
|
||||
doublecomplex *beta,
|
||||
doublecomplex *Y, integer *incY);
|
||||
|
||||
int
|
||||
ztrmv_(char* uplo, char *trans, char* diag, integer *N,
|
||||
doublecomplex *A, integer *lda,
|
||||
doublecomplex *X, integer *incX);
|
||||
|
||||
int
|
||||
ztbmv_(char* uplo, char* trans, char* diag, integer* N, integer* K,
|
||||
doublecomplex* A, integer* lda,
|
||||
doublecomplex* X, integer* incX);
|
||||
|
||||
void
|
||||
ztpmv_(char* uplo, char* trans, char* diag, integer* N,
|
||||
doublecomplex* Ap,
|
||||
doublecomplex* X, integer* incX);
|
||||
|
||||
int
|
||||
ztrsv_(char* uplo, char* trans, char* diag, integer* N,
|
||||
doublecomplex* A, integer* lda,
|
||||
doublecomplex* X, integer* incX);
|
||||
|
||||
int
|
||||
ztbsv_(char* uplo, char* trans, char* diag, integer* N, integer* K,
|
||||
doublecomplex* A, integer* lda,
|
||||
doublecomplex* X, integer* incX);
|
||||
|
||||
int
|
||||
ztpsv_(char* uplo, char* trans, char* diag, integer* N,
|
||||
doublecomplex* Ap,
|
||||
doublecomplex* X, integer* incX);
|
||||
|
||||
int
|
||||
ssymv_(char* uplo, integer* N,
|
||||
real* alpha,
|
||||
real* A, integer* lda,
|
||||
real* X, integer* incX,
|
||||
real* beta,
|
||||
real* Y, integer* incY);
|
||||
|
||||
int
|
||||
ssbmv_(char* uplo, integer* N, integer* K,
|
||||
real* alpha,
|
||||
real* A, integer* lda,
|
||||
real* X, integer* incX,
|
||||
real* beta,
|
||||
real* Y, integer* incY);
|
||||
|
||||
int
|
||||
sspmv_(char* uplo, integer* N,
|
||||
real* alpha,
|
||||
real* Ap,
|
||||
real* X, integer* incX,
|
||||
real* beta,
|
||||
real* Y, integer* incY);
|
||||
|
||||
int
|
||||
sger_(integer* M, integer* N,
|
||||
real* alpha,
|
||||
real* X, integer* incX,
|
||||
real* Y, integer* incY,
|
||||
real* A, integer* lda);
|
||||
|
||||
int
|
||||
ssyr_(char* uplo, integer* N,
|
||||
real* alpha,
|
||||
real* X, integer* incX,
|
||||
real* A, integer* lda);
|
||||
|
||||
int
|
||||
sspr_(char* uplo, integer* N,
|
||||
real* alpha,
|
||||
real* X, integer* incX,
|
||||
real* Ap);
|
||||
|
||||
int
|
||||
ssyr2_(char* uplo, integer* N,
|
||||
real* alpha,
|
||||
real* X, integer* incX,
|
||||
real* Y, integer* incY,
|
||||
real* A, integer* lda);
|
||||
|
||||
int
|
||||
sspr2_(char* uplo, integer* N,
|
||||
real* alpha,
|
||||
real* X, integer* incX,
|
||||
real* Y, integer* incY,
|
||||
real* A);
|
||||
|
||||
int
|
||||
dsymv_(char* uplo, integer* N,
|
||||
doublereal* alpha,
|
||||
doublereal* A, integer* lda,
|
||||
doublereal* X, integer* incX,
|
||||
doublereal* beta,
|
||||
doublereal* Y, integer* incY);
|
||||
|
||||
int
|
||||
dsbmv_(char* uplo, integer* N, integer* K,
|
||||
doublereal* alpha,
|
||||
doublereal* A, integer* lda,
|
||||
doublereal* X, integer* incX,
|
||||
doublereal* beta,
|
||||
doublereal* Y, integer* incY);
|
||||
|
||||
int
|
||||
dspmv_(char* uplo, integer* N,
|
||||
doublereal* alpha,
|
||||
doublereal* Ap,
|
||||
doublereal* X, integer* incX,
|
||||
doublereal* beta,
|
||||
doublereal* Y, integer* incY);
|
||||
|
||||
int
|
||||
dger_(integer* M, integer* N,
|
||||
doublereal* alpha,
|
||||
doublereal* X, integer* incX,
|
||||
doublereal* Y, integer* incY,
|
||||
doublereal* A, integer* lda);
|
||||
|
||||
int
|
||||
dsyr_(char* uplo, integer* N,
|
||||
doublereal* alpha,
|
||||
doublereal* X, integer* incX,
|
||||
doublereal* A, integer* lda);
|
||||
|
||||
int
|
||||
dspr_(char* uplo, integer* N,
|
||||
doublereal* alpha,
|
||||
doublereal* X, integer* incX,
|
||||
doublereal* Ap);
|
||||
|
||||
int
|
||||
dsyr2_(char* uplo, integer* N,
|
||||
doublereal* alpha,
|
||||
doublereal* X, integer* incX,
|
||||
doublereal* Y, integer* incY,
|
||||
doublereal* A, integer* lda);
|
||||
|
||||
int
|
||||
dspr2_(char* uplo, integer* N,
|
||||
doublereal* alpha,
|
||||
doublereal* X, integer* incX,
|
||||
doublereal* Y, integer* incY,
|
||||
doublereal* A);
|
||||
|
||||
int
|
||||
chemv_(char* uplo, integer* N,
|
||||
complex* alpha,
|
||||
complex* A, integer* lda,
|
||||
complex* X, integer* incX,
|
||||
complex* beta,
|
||||
complex* Y, integer* incY);
|
||||
|
||||
int
|
||||
chbmv_(char* uplo, integer* N, integer* K,
|
||||
complex* alpha,
|
||||
complex* A, integer* lda,
|
||||
complex* X, integer* incX,
|
||||
complex* beta,
|
||||
complex* Y, integer* incY);
|
||||
|
||||
int
|
||||
chpmv_(char* uplo, integer* N,
|
||||
complex* alpha,
|
||||
complex* Ap,
|
||||
complex* X, integer* incX,
|
||||
complex* beta,
|
||||
complex* Y, integer* incY);
|
||||
|
||||
int
|
||||
cgeru_(integer* M, integer* N,
|
||||
complex* alpha,
|
||||
complex* X, integer* incX,
|
||||
complex* Y, integer* incY,
|
||||
complex* A, integer* lda);
|
||||
|
||||
int
|
||||
cgerc_(integer* M, integer* N,
|
||||
complex* alpha,
|
||||
complex* X, integer* incX,
|
||||
complex* Y, integer* incY,
|
||||
complex* A, integer* lda);
|
||||
|
||||
int
|
||||
cher_(char* uplo, integer* N,
|
||||
real* alpha,
|
||||
complex* X, integer* incX,
|
||||
complex* A, integer* lda);
|
||||
|
||||
int
|
||||
chpr_(char* uplo, integer* N,
|
||||
real* alpha,
|
||||
complex* X, integer* incX,
|
||||
complex* Ap);
|
||||
|
||||
int
|
||||
cher2_(char* uplo, integer* N,
|
||||
complex* alpha,
|
||||
complex* X, integer* incX,
|
||||
complex* Y, integer* incY,
|
||||
complex* A, integer* lda);
|
||||
|
||||
int
|
||||
chpr2_(char* uplo, integer* N,
|
||||
complex* alpha,
|
||||
complex* X, integer* incX,
|
||||
complex* Y, integer* incY,
|
||||
complex* Ap);
|
||||
|
||||
int
|
||||
zhemv_(char* uplo, integer* N,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* A, integer* lda,
|
||||
doublecomplex* X, integer* incX,
|
||||
doublecomplex* beta,
|
||||
doublecomplex* Y, integer* incY);
|
||||
|
||||
int
|
||||
zhbmv_(char* uplo, integer* N, integer* K,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* A, integer* lda,
|
||||
doublecomplex* X, integer* incX,
|
||||
doublecomplex* beta,
|
||||
doublecomplex* Y, integer* incY);
|
||||
|
||||
int
|
||||
zhpmv_(char* uplo, integer* N,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* Ap,
|
||||
doublecomplex* X, integer* incX,
|
||||
doublecomplex* beta,
|
||||
doublecomplex* Y, integer* incY);
|
||||
|
||||
int
|
||||
zgeru_(integer* M, integer* N,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* X, integer* incX,
|
||||
doublecomplex* Y, integer* incY,
|
||||
doublecomplex* A, integer* lda);
|
||||
|
||||
int
|
||||
zgerc_(integer* M, integer* N,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* X, integer* incX,
|
||||
doublecomplex* Y, integer* incY,
|
||||
doublecomplex* A, integer* lda);
|
||||
|
||||
int
|
||||
zher_(char* uplo, integer* N,
|
||||
doublereal* alpha,
|
||||
doublecomplex* X, integer* incX,
|
||||
doublecomplex* A, integer* lda);
|
||||
|
||||
int
|
||||
zhpr_(char* uplo, integer* N,
|
||||
doublereal* alpha,
|
||||
doublecomplex* X, integer* incX,
|
||||
doublecomplex* Ap);
|
||||
|
||||
int
|
||||
zher2_(char* uplo, integer* N,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* X, integer* incX,
|
||||
doublecomplex* Y, integer* incY,
|
||||
doublecomplex* A, integer* lda);
|
||||
|
||||
int
|
||||
zhpr2_(char* uplo, integer* N,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* X, integer* incX,
|
||||
doublecomplex* Y, integer* incY,
|
||||
doublecomplex* Ap);
|
||||
|
||||
int
|
||||
sgemm_(char* transA, char* transB, integer* M, integer* N, integer* K,
|
||||
real* alpha,
|
||||
real* A, integer* lda,
|
||||
real* B, integer* ldb,
|
||||
real* beta,
|
||||
real* C, integer* ldc);
|
||||
|
||||
int
|
||||
ssymm_(char* side, char* uplo, integer* M, integer* N,
|
||||
real* alpha,
|
||||
real* A, integer* lda,
|
||||
real* B, integer* ldb,
|
||||
real* beta,
|
||||
real* C, integer* ldc);
|
||||
|
||||
int
|
||||
ssyrk_(char* uplo, char* trans, integer* N, integer* K,
|
||||
real* alpha,
|
||||
real* A, integer* lda,
|
||||
real* beta,
|
||||
real* C, integer* ldc);
|
||||
|
||||
int
|
||||
ssyr2k_(char* uplo, char* trans, integer* N, integer* K,
|
||||
real* alpha,
|
||||
real* A, integer* lda,
|
||||
real* B, integer* ldb,
|
||||
real* beta,
|
||||
real* C, integer* ldc);
|
||||
|
||||
int
|
||||
strmm_(char* side, char* uplo, char* trans, char* diag,
|
||||
integer* M, integer* N,
|
||||
real* alpha,
|
||||
real* A, integer* lda,
|
||||
real* B, integer* ldb);
|
||||
|
||||
int
|
||||
strsm_(char* side, char* uplo, char* trans, char* diag,
|
||||
integer* M, integer* N,
|
||||
real* alpha,
|
||||
real* A, integer* lda,
|
||||
real* B, integer* ldb);
|
||||
|
||||
int
|
||||
dgemm_(char* transA, char* transB, integer* M, integer* N, integer* K,
|
||||
doublereal* alpha,
|
||||
doublereal* A, integer* lda,
|
||||
doublereal* B, integer* ldb,
|
||||
doublereal* beta,
|
||||
doublereal* C, integer* ldc);
|
||||
|
||||
int
|
||||
dsymm_(char* side, char* uplo, integer* M, integer* N,
|
||||
doublereal* alpha,
|
||||
doublereal* A, integer* lda,
|
||||
doublereal* B, integer* ldb,
|
||||
doublereal* beta,
|
||||
doublereal* C, integer* ldc);
|
||||
|
||||
int
|
||||
dsyrk_(char* uplo, char* trans, integer* N, integer* K,
|
||||
doublereal* alpha,
|
||||
doublereal* A, integer* lda,
|
||||
doublereal* beta,
|
||||
doublereal* C, integer* ldc);
|
||||
|
||||
int
|
||||
dsyr2k_(char* uplo, char* trans, integer* N, integer* K,
|
||||
doublereal* alpha,
|
||||
doublereal* A, integer* lda,
|
||||
doublereal* B, integer* ldb,
|
||||
doublereal* beta,
|
||||
doublereal* C, integer* ldc);
|
||||
|
||||
int
|
||||
dtrmm_(char* side, char* uplo, char* trans, char* diag,
|
||||
integer* M, integer* N,
|
||||
doublereal* alpha,
|
||||
doublereal* A, integer* lda,
|
||||
doublereal* B, integer* ldb);
|
||||
|
||||
int
|
||||
dtrsm_(char* side, char* uplo, char* trans, char* diag,
|
||||
integer* M, integer* N,
|
||||
doublereal* alpha,
|
||||
doublereal* A, integer* lda,
|
||||
doublereal* B, integer* ldb);
|
||||
|
||||
int
|
||||
cgemm_(char* transA, char* transB, integer* M, integer* N, integer* K,
|
||||
complex* alpha,
|
||||
complex* A, integer* lda,
|
||||
complex* B, integer* ldb,
|
||||
complex* beta,
|
||||
complex* C, integer* ldc);
|
||||
|
||||
int
|
||||
csymm_(char* side, char* uplo, integer* M, integer* N,
|
||||
complex* alpha,
|
||||
complex* A, integer* lda,
|
||||
complex* B, integer* ldb,
|
||||
complex* beta,
|
||||
complex* C, integer* ldc);
|
||||
|
||||
int
|
||||
csyrk_(char* uplo, char* trans, integer* N, integer* K,
|
||||
complex* alpha,
|
||||
complex* A, integer* lda,
|
||||
complex* beta,
|
||||
complex* C, integer* ldc);
|
||||
|
||||
int
|
||||
csyr2k_(char* uplo, char* trans, integer* N, integer* K,
|
||||
complex* alpha,
|
||||
complex* A, integer* lda,
|
||||
complex* B, integer* ldb,
|
||||
complex* beta,
|
||||
complex* C, integer* ldc);
|
||||
|
||||
int
|
||||
ctrmm_(char* side, char* uplo, char* trans, char* diag,
|
||||
integer* M, integer* N,
|
||||
complex* alpha,
|
||||
complex* A, integer* lda,
|
||||
complex* B, integer* ldb);
|
||||
|
||||
int
|
||||
ctrsm_(char* side, char* uplo, char* trans, char* diag,
|
||||
integer* M, integer* N,
|
||||
complex* alpha,
|
||||
complex* A, integer* lda,
|
||||
complex* B, integer* ldb);
|
||||
|
||||
int
|
||||
zgemm_(char* transA, char* transB, integer* M, integer* N, integer* K,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* A, integer* lda,
|
||||
doublecomplex* B, integer* ldb,
|
||||
doublecomplex* beta,
|
||||
doublecomplex* C, integer* ldc);
|
||||
|
||||
int
|
||||
zsymm_(char* side, char* uplo, integer* M, integer* N,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* A, integer* lda,
|
||||
doublecomplex* B, integer* ldb,
|
||||
doublecomplex* beta,
|
||||
doublecomplex* C, integer* ldc);
|
||||
|
||||
int
|
||||
zsyrk_(char* uplo, char* trans, integer* N, integer* K,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* A, integer* lda,
|
||||
doublecomplex* beta,
|
||||
doublecomplex* C, integer* ldc);
|
||||
|
||||
int
|
||||
zsyr2k_(char* uplo, char* trans, integer* N, integer* K,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* A, integer* lda,
|
||||
doublecomplex* B, integer* ldb,
|
||||
doublecomplex* beta,
|
||||
doublecomplex* C, integer* ldc);
|
||||
|
||||
int
|
||||
ztrmm_(char* side, char* uplo, char* trans, char* diag,
|
||||
integer* M, integer* N,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* A, integer* lda,
|
||||
doublecomplex* B, integer* ldb);
|
||||
|
||||
int
|
||||
ztrsm_(char* side, char* uplo, char* trans, char* diag,
|
||||
integer* M, integer* N,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* A, integer* lda,
|
||||
doublecomplex* B, integer* ldb);
|
||||
|
||||
int
|
||||
chemm_(char* side, char* uplo, integer* M, integer* N,
|
||||
complex* alpha,
|
||||
complex* A, integer* lda,
|
||||
complex* B, integer* ldb,
|
||||
complex* beta,
|
||||
complex* C, integer* ldc);
|
||||
|
||||
int
|
||||
cherk_(char* uplo, char* trans, integer* N, integer* K,
|
||||
real* alpha,
|
||||
complex* A, integer* lda,
|
||||
real* beta,
|
||||
complex* C, integer* ldc);
|
||||
|
||||
int
|
||||
cher2k_(char* uplo, char* trans, integer* N, integer* K,
|
||||
complex* alpha,
|
||||
complex* A, integer* lda,
|
||||
complex* B, integer* ldb,
|
||||
real* beta,
|
||||
complex* C, integer* ldc);
|
||||
|
||||
int
|
||||
zhemm_(char* side, char* uplo, integer* M, integer* N,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* A, integer* lda,
|
||||
doublecomplex* B, integer* ldb,
|
||||
doublecomplex* beta,
|
||||
doublecomplex* C, integer* ldc);
|
||||
|
||||
int
|
||||
zherk_(char* uplo, char* trans, integer* N, integer* K,
|
||||
doublereal* alpha,
|
||||
doublecomplex* A, integer* lda,
|
||||
doublereal* beta,
|
||||
doublecomplex* C, integer* ldc);
|
||||
|
||||
int
|
||||
zher2k_(char* uplo, char* trans, integer* N, integer* K,
|
||||
doublecomplex* alpha,
|
||||
doublecomplex* A, integer* lda,
|
||||
doublecomplex* B, integer* ldb,
|
||||
doublereal* beta,
|
||||
doublecomplex* C, integer* ldc);
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,14 +0,0 @@
|
||||
http://math-atlas.sourceforge.net/errata.html
|
||||
Error in complex gemm for A*A^T.
|
||||
|
||||
--- src/blas/gemm/ATL_cmmJIK.c Mon Dec 22 09:08:00 2003
|
||||
+++ src/blas/gemm/ATL_cmmJIK.c Wed Mar 7 00:26:46 2007
|
||||
@@ -190,7 +190,7 @@
|
||||
pA = ATL_AlignPtr(vB);
|
||||
if (TA == AtlasNoTrans)
|
||||
Mjoin(PATL,row2blkT2_a1)(M, K, A, lda, pA, alpha);
|
||||
- else Mjoin(PATL,col2blk_a1)(K, M, A, lda, pA, alpha);
|
||||
+ else Mjoin(PATL,col2blk2_a1)(K, M, A, lda, pA, alpha);
|
||||
/*
|
||||
* Can't write directly to C if alpha is not one
|
||||
*/
|
@ -1,14 +0,0 @@
|
||||
http://math-atlas.sourceforge.net/errata.html
|
||||
Error in UltraSPARC cleanup
|
||||
|
||||
--- tune/blas/gemm/CASES/ATL_dmm4x4x8_US.c Mon Dec 22 09:12:04 2003
|
||||
+++ tune/blas/gemm/CASES/ATL_dmm4x4x8_US.c Wed Mar 7 02:57:37 2007
|
||||
@@ -272,7 +272,7 @@
|
||||
!
|
||||
! For K == 1, we never enter the loop at all
|
||||
!
|
||||
-#if (KB != 2)
|
||||
+#if (KB != 8)
|
||||
#if KB == 0
|
||||
subcc Kstart, %g0, %g0
|
||||
bz KDRAIN
|
21
math/atlas/files/patch-CONFIG+src+SpewMakeInc.c
Normal file
21
math/atlas/files/patch-CONFIG+src+SpewMakeInc.c
Normal file
@ -0,0 +1,21 @@
|
||||
--- CONFIG/src/SpewMakeInc.c.orig 2007-10-11 05:40:21.000000000 +0900
|
||||
+++ CONFIG/src/SpewMakeInc.c 2007-10-29 11:03:11.000000000 +0900
|
||||
@@ -693,14 +693,14 @@
|
||||
fprintf(fpout, "# ------------------------------------\n");
|
||||
fprintf(fpout, "# Reference and system libraries\n");
|
||||
fprintf(fpout, "# ------------------------------------\n");
|
||||
- fprintf(fpout, " BLASlib = \n");
|
||||
- fprintf(fpout, " FBLASlib = \n");
|
||||
- fprintf(fpout, " FLAPACKlib = ");
|
||||
+ fprintf(fpout, " BLASlib = -L%%LOCALBASE%%/lib -lblas\n");
|
||||
+ fprintf(fpout, " FBLASlib = -L%%LOCALBASE%%/lib -lblas\n");
|
||||
+ fprintf(fpout, " FLAPACKlib = -L%%LOCALBASE%%/lib -llapack");
|
||||
if (flapack) fprintf(fpout, "%s", flapack);
|
||||
fprintf(fpout, "\n");
|
||||
fprintf(fpout, " SLAPACKlib = \n");
|
||||
if (THREADS)
|
||||
- fprintf(fpout, " LIBS = -lpthread");
|
||||
+ fprintf(fpout, " LIBS = %%PTHREAD_LIBS%%");
|
||||
else
|
||||
fprintf(fpout, " LIBS =");
|
||||
if (!OSIsWin(OS))
|
119
math/atlas/files/patch-CONFIG+src+atlcomp.txt
Normal file
119
math/atlas/files/patch-CONFIG+src+atlcomp.txt
Normal file
@ -0,0 +1,119 @@
|
||||
--- CONFIG/src/atlcomp.txt.orig 2007-10-11 05:40:21.000000000 +0900
|
||||
+++ CONFIG/src/atlcomp.txt 2007-10-29 11:11:54.000000000 +0900
|
||||
@@ -40,57 +40,57 @@
|
||||
#
|
||||
# Core2Solo and Core2Duo
|
||||
MACH=Core2Solo,Core2Duo OS=ALL LVL=1000 COMPS=smc,dmc,skc,dkc,icc
|
||||
- 'gcc' '-fomit-frame-pointer -mfpmath=sse -msse3 -O2'
|
||||
+ '%%CC%%' '-fomit-frame-pointer -mfpmath=sse -msse3 -O2'
|
||||
# PPRO,PII,PIII,P4,P4E,K7,HAMMER
|
||||
MACH=PPRO,PII,PIII,P4,P4E,K7,HAMMER OS=ALL LVL=1000 COMPS=f77
|
||||
- 'gfortran' '-fomit-frame-pointer -mfpmath=387 -O2 -falign-loops=4'
|
||||
+ '%%FC%%' '-fomit-frame-pointer -mfpmath=387 -O2 -falign-loops=4'
|
||||
MACH=PPRO,PII,PIII,P4,P4E,K7,HAMMER OS=ALL LVL=1000 COMPS=smc,dmc,skc,dkc,icc
|
||||
- 'gcc' '-fomit-frame-pointer -mfpmath=387 -O2 -falign-loops=4'
|
||||
+ '%%CC%%' '-fomit-frame-pointer -mfpmath=387 -O2 -falign-loops=4'
|
||||
# CoreSolo,CoreDuo
|
||||
MACH=CoreSolo,CoreDuo OS=ALL LVL=1000 COMPS=smc,dmc,skc,dkc,icc
|
||||
- 'gcc' '-fomit-frame-pointer -O3 -mfpmath=387'
|
||||
+ '%%CC%%' '-fomit-frame-pointer -O3 -mfpmath=387'
|
||||
# UltraSPARC III & IV
|
||||
MACH=USIII,USIV OS=ALL LVL=1000 COMPS=smc,dmc,skc,dkc
|
||||
- 'gcc' '-mcpu=ultrasparc3 -mtune=ultrasparc3 -O3 -funroll-all-loops'
|
||||
+ '%%CC%%' '-mcpu=ultrasparc3 -mtune=ultrasparc3 -O3 -funroll-all-loops'
|
||||
MACH=USIII,USIV OS=ALL LVL=1000 COMPS=icc,xcc
|
||||
- 'gcc' '-mcpu=ultrasparc3 -mtune=ultrasparc3 -O'
|
||||
+ '%%CC%%' '-mcpu=ultrasparc3 -mtune=ultrasparc3 -O'
|
||||
MACH=USIII,USIV OS=ALL LVL=1000 COMPS=f77
|
||||
- 'f77' '-dalign -native -xO5'
|
||||
+ '%%FC%%' '-dalign -native -xO5'
|
||||
MACH=USIII,USIV OS=ALL LVL=100 COMPS=f77
|
||||
- 'gfortran' '-O -mcpu=ultrasparc3 -mtune=ultrasparc3'
|
||||
+ '%%FC%%' '-O -mcpu=ultrasparc3 -mtune=ultrasparc3'
|
||||
MACH=USIII,USIV OS=ALL LVL=10 COMPS=f77
|
||||
- 'g77' '-O -mcpu=ultrasparc3 -mtune=ultrasparc3'
|
||||
+ '%%FC%%' '-O -mcpu=ultrasparc3 -mtune=ultrasparc3'
|
||||
#
|
||||
# Itanium & Itanium 2
|
||||
#
|
||||
# These gcc 4 default flags will die on gcc3, allowing gcc3's flags to be used
|
||||
MACH=IA64Itan,IA64Itan2 OS=ALL LVL=1010 COMPS=smc,dmc,skc,dkc
|
||||
- 'gcc' '-fomit-frame-pointer -O2 -fno-tree-loop-optimize'
|
||||
+ '%%CC%%' '-fomit-frame-pointer -O2 -fno-tree-loop-optimize'
|
||||
MACH=IA64Itan,IA64Itan2 OS=ALL LVL=1000 COMPS=smc,dmc,skc,dkc
|
||||
- 'gcc' '-fomit-frame-pointer -O2'
|
||||
+ '%%CC%%' '-fomit-frame-pointer -O2'
|
||||
MACH=IA64Itan,IA64Itan2 OS=ALL LVL=1010 COMPS=f77
|
||||
- 'gfortran' '-fomit-frame-pointer -O2 -fno-tree-loop-optimize'
|
||||
+ '%%FC%%' '-fomit-frame-pointer -O2 -fno-tree-loop-optimize'
|
||||
#
|
||||
# IRIX/MIPS
|
||||
#
|
||||
MACH=MIPSR1xK OS=IRIX LVL=1000 COMPS=smc,dmc,skc,dkc
|
||||
- 'cc' '-O3 -OPT:Olimit=15000 -LNO:blocking=OFF -LOPT:alias=typed'
|
||||
+ '%%CC%%' '-O3 -OPT:Olimit=15000 -LNO:blocking=OFF -LOPT:alias=typed'
|
||||
MACH=MIPSR1xK OS=IRIX LVL=1000 COMPS=icc,xcc
|
||||
- 'cc' '-O2 -OPT:Olimit=15000 -LNO:blocking=OFF'
|
||||
+ '%%CC%%' '-O2 -OPT:Olimit=15000 -LNO:blocking=OFF'
|
||||
MACH=MIPSR1xK OS=IRIX LVL=1000 COMPS=f77
|
||||
- 'f77' '-O2'
|
||||
+ '%%FC%%' '-O2'
|
||||
#
|
||||
# Linux/MIPSICE9
|
||||
#
|
||||
MACH=MIPSICE9 OS=ALL LVL=1000 COMPS=icc,smc,dmc,skc,dkc,xcc
|
||||
- 'gcc' '-O2 -mips64 -march=5kf -mtune=5kf -fno-schedule-insns -fschedule-insns2 -fno-peephole -fno-peephole2'
|
||||
+ '%%CC%%' '-O2 -mips64 -march=5kf -mtune=5kf -fno-schedule-insns -fschedule-insns2 -fno-peephole -fno-peephole2'
|
||||
#
|
||||
# G4 flags
|
||||
#
|
||||
MACH=PPCG4 OS=ALL LVL=1000 COMPS=icc,smc,dmc,skc,dkc,xcc
|
||||
- 'gcc' '-O3 -maltivec -mabi=altivec -mcpu=7400 -mtune=7400'
|
||||
+ '%%CC%%' '-O3 -maltivec -mabi=altivec -mcpu=7400 -mtune=7400'
|
||||
MACH=PPCG4 OS=OSX LVL=1001 COMPS=icc,smc,dmc,skc,dkc,xcc
|
||||
- 'gcc' '-O3 -maltivec -mabi=altivec -mcpu=7400 -mtune=7400 -no-cpp-precomp -faltivec'
|
||||
+ '%%CC%%' '-O3 -maltivec -mabi=altivec -mcpu=7400 -mtune=7400 -no-cpp-precomp -faltivec'
|
||||
|
||||
#
|
||||
# OS X / PowerPC970; the
|
||||
@@ -99,19 +99,19 @@
|
||||
# performance by removing them (for all PowerPC platforms)
|
||||
#
|
||||
MACH=PPCG5 OS=OSX LVL=1001 COMPS=icc,smc,dmc,skc,dkc,xcc
|
||||
- 'gcc' '-mpowerpc64 -maltivec -mabi=altivec -mcpu=970 -mtune=970 -faltivec -O3'
|
||||
+ '%%CC%%' '-mpowerpc64 -maltivec -mabi=altivec -mcpu=970 -mtune=970 -faltivec -O3'
|
||||
MACH=PPCG5 OS=OSX LVL=1010 COMPS=icc,smc,dmc,skc,dkc,xcc
|
||||
- 'gcc' '-mpowerpc64 -maltivec -mabi=altivec -mcpu=970 -mtune=970 -faltivec -force_cpusubtype_ALL -O3 -fno-schedule-insns -fno-rerun-loop-opt'
|
||||
+ '%%CC%%' '-mpowerpc64 -maltivec -mabi=altivec -mcpu=970 -mtune=970 -faltivec -force_cpusubtype_ALL -O3 -fno-schedule-insns -fno-rerun-loop-opt'
|
||||
MACH=PPCG5 OS=ALL LVL=1000 COMPS=icc,smc,dmc,skc,dkc,xcc
|
||||
- 'gcc' '-mpowerpc64 -maltivec -mabi=altivec -mcpu=970 -mtune=970 -O3'
|
||||
+ '%%CC%%' '-mpowerpc64 -maltivec -mabi=altivec -mcpu=970 -mtune=970 -O3'
|
||||
MACH=POWER5 OS=ALL LVL=1010 COMPS=icc,smc,dmc,skc,dkc,xcc
|
||||
- 'gcc' '-mcpu=power5 -mtune=power5 -O3 -fno-schedule-insns -fno-rerun-loop-opt'
|
||||
+ '%%CC%%' '-mcpu=power5 -mtune=power5 -O3 -fno-schedule-insns -fno-rerun-loop-opt'
|
||||
MACH=POWER5 OS=ALL LVL=1010 COMPS=f77
|
||||
- 'gfortran' '-mcpu=power5 -mtune=power5 -O3 -fno-schedule-insns -fno-rerun-loop-opt'
|
||||
+ '%%FC%%' '-mcpu=power5 -mtune=power5 -O3 -fno-schedule-insns -fno-rerun-loop-opt'
|
||||
MACH=POWER5 OS=ALL LVL=1010 COMPS=f77
|
||||
'xlf' '-qtune=pwr5 -qarch=pwr5 -O3 -qmaxmem=-1 -qfloat=hsflt'
|
||||
MACH=POWER4 OS=ALL LVL=1010 COMPS=icc,dmc,smc,dkc,skc,xcc
|
||||
- 'gcc' '-mcpu=power4 -mtune=power4 -O3 -fno-schedule-insns -fno-rerun-loop-opt'
|
||||
+ '%%CC%%' '-mcpu=power4 -mtune=power4 -O3 -fno-schedule-insns -fno-rerun-loop-opt'
|
||||
MACH=POWER4 OS=ALL LVL=1010 COMPS=f77
|
||||
'xlf' '-qtune=pwr4 -qarch=pwr4 -O3 -qmaxmem=-1 -qfloat=hsflt'
|
||||
#
|
||||
@@ -131,10 +131,10 @@
|
||||
# Generic defaults
|
||||
#
|
||||
MACH=ALL OS=ALL LVL=5 COMPS=icc,smc,dmc,skc,dkc,xcc
|
||||
- 'gcc' '-O -fomit-frame-pointer'
|
||||
+ '%%CC%%' '-O -fomit-frame-pointer'
|
||||
MACH=ALL OS=ALL LVL=5 COMPS=f77
|
||||
- 'gfortran' '-O'
|
||||
+ '%%FC%%' '-O'
|
||||
MACH=ALL OS=ALL LVL=4 COMPS=f77
|
||||
- 'g77' '-O'
|
||||
+ '%%FC%%' '-O'
|
||||
MACH=ALL OS=ALL LVL=0 COMPS=f77
|
||||
- 'f77' '-O'
|
||||
+ '%%FC%%' '-O'
|
75
math/atlas/files/patch-CONFIG+src+backend+archinfo_freebsd.c
Normal file
75
math/atlas/files/patch-CONFIG+src+backend+archinfo_freebsd.c
Normal file
@ -0,0 +1,75 @@
|
||||
--- CONFIG/src/backend/archinfo_freebsd.c.orig Wed Jan 31 06:30:00 2007
|
||||
+++ CONFIG/src/backend/archinfo_freebsd.c Thu Feb 8 16:37:05 2007
|
||||
@@ -73,13 +73,24 @@
|
||||
}
|
||||
break;
|
||||
case AFSPARC: /* don't know */
|
||||
+ if (!CmndOneLine(NULL, "sysctl hw.model", res))
|
||||
+ {
|
||||
+ if (strstr(res, "UltraSparc-IV")) mach = SunUSIV;
|
||||
+ if (strstr(res, "UltraSparc-II")) mach = SunUSII;
|
||||
+ if (strstr(res, "UltraSparc-I")) mach = SunUSI;
|
||||
+ if (strstr(res, "UltraSparc")) mach = SunUSI;
|
||||
+ else mach = SunUSI;
|
||||
+ }
|
||||
break;
|
||||
case AFALPHA:
|
||||
#if 0
|
||||
if (!CmndOneLine(NULL, "sysctl hw.model", res))
|
||||
{
|
||||
if (strstr(res, "433au")) mach = Dec21164;
|
||||
+ else if (strstr(res, "500au")) mach = Dec21164;
|
||||
+ else if (strstr(res, "AlphaPC 164")) mach = Dec21164;
|
||||
else if (strstr(res, "XP1000")) mach = Dec21264;
|
||||
+ else mach = Dec21264;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
@@ -89,15 +100,33 @@
|
||||
if (!CmndOneLine(NULL, "sysctl hw.model", res))
|
||||
{
|
||||
if (strstr(res, "Pentium Pro")) mach = IntPPRO;
|
||||
+ else if (strstr(res, "Pentium(R) D")) mach = IntP4E;
|
||||
+ else if (strstr(res, "Pentium(R) Pro")) mach = IntPPRO;
|
||||
+ else if (strstr(res, "Pentium 4")) mach = IntP4;
|
||||
+ else if (strstr(res, "Pentium(R) 4")) mach = IntP4;
|
||||
+ else if (strstr(res, "Pentium(R) M")) mach = IntP4;
|
||||
else if (strstr(res, "Pentium III")) mach = IntPIII;
|
||||
else if (strstr(res, "Pentium II ")) mach = IntPII;
|
||||
else if (strstr(res, "Athlon")) mach = AmdAthlon;
|
||||
+ else if (strstr(res, "Pentium III/Pentium III")) mach = IntPIII;
|
||||
+ else if (strstr(res, "Pentium(R) III")) mach = IntPIII;
|
||||
+ else if (strstr(res, "Pentium II")) mach = IntPII;
|
||||
+ else if (strstr(res, "Pentium II/PentiumII")) mach = IntPII;
|
||||
+ else if (strstr(res, "Pentium(R) II ")) mach = IntPII;
|
||||
+ else if (strstr(res, "Celeron")) mach = IntPII;
|
||||
+ else if (strstr(res, "Celeron(R)")) mach = IntPII;
|
||||
+ else if (strstr(res, "Opteron(tm)")) mach = AmdHammer;
|
||||
+ else if (strstr(res, "AMD Athlon(tm) 64")) mach = AmdHammer;
|
||||
else if (strstr(res, "AMD-K7")) mach = AmdAthlon;
|
||||
- else if (strstr(res, "32 bit Hammer")) mach = AmdHammer;
|
||||
- else if (strstr(res, "64 bit Hammer")) mach = AmdHammer;
|
||||
- else if (strstr(res, "Pentium/P55C")) mach = IntP5MMX; /* sent by */
|
||||
- else if (strstr(res, "Pentium")) mach=IntP5; /* Nakata Maho */
|
||||
else if (strstr(res, "iMac4,1")) mach=IntCoreDuo;
|
||||
+ else if (strstr(res, "Sempron(tm)")) mach = AmdAthlon;
|
||||
+ else if (strstr(res, "AMD-K6(tm)")) mach = IntP5MMX;
|
||||
+ else if (strstr(res, "Pentium/P55C")) mach = IntP5MMX;
|
||||
+ else if (strstr(res, "Pentium/P54C")) mach=IntP5;
|
||||
+ else if (strstr(res, "Pentium")) mach=IntP5;
|
||||
+ else if (strstr(res, "VIA")) mach=IntP5MMX;
|
||||
+ else if (strstr(res, "Crusoe(tm)")) mach=IntP5MMX;
|
||||
+ else mach = IntP5;
|
||||
}
|
||||
break;
|
||||
default:;
|
||||
@@ -156,8 +185,8 @@
|
||||
{
|
||||
int mhz=0;
|
||||
char res[1024];
|
||||
- if (!CmndOneLine(NULL, "sysctl hw.cpufrequency", res) )
|
||||
+ if (!CmndOneLine(NULL, "sysctl machdep.tsc_freq", res) )
|
||||
mhz = GetFirstDouble(res) / 1000000;
|
||||
return(mhz);
|
||||
}
|
||||
|
10
math/atlas/files/patch-CONFIG+src+backend+archinfo_x86.c
Normal file
10
math/atlas/files/patch-CONFIG+src+backend+archinfo_x86.c
Normal file
@ -0,0 +1,10 @@
|
||||
--- CONFIG/src/backend/archinfo_x86.c~ Tue Dec 19 06:47:11 2006
|
||||
+++ CONFIG/src/backend/archinfo_x86.c Wed Dec 27 12:05:00 2006
|
||||
@@ -281,6 +281,7 @@
|
||||
case 9:
|
||||
case 13:
|
||||
iret = IntPM;
|
||||
+ break;
|
||||
case 14:
|
||||
iret = IntCoreDuo;
|
||||
break;
|
@ -1,13 +0,0 @@
|
||||
http://math-atlas.sourceforge.net/errata.html
|
||||
make kill from topdir removes libraries
|
||||
|
||||
--- Make.top Mon Dec 22 09:06:32 2003
|
||||
+++ Make.top Wed Mar 7 02:15:31 2007
|
||||
@@ -211,7 +211,6 @@
|
||||
rm -rf src/blas/reference/level1/$(arch)
|
||||
rm -rf src/auxil/$(arch)
|
||||
rm -rf src/testing/$(arch)
|
||||
- rm -rf lib/$(arch)
|
||||
rm -rf bin/$(arch)
|
||||
|
||||
killall :
|
@ -1,27 +0,0 @@
|
||||
http://math-atlas.sourceforge.net/errata.html
|
||||
Error in compiler flags for gcc/USIII arch defaults
|
||||
|
||||
--- tune/blas/gemm/CASES/ccases.flg Mon Dec 22 09:12:07 2003
|
||||
+++ tune/blas/gemm/CASES/ccases.flg Wed Mar 7 03:06:39 2007
|
||||
@@ -5,7 +5,7 @@
|
||||
-mcpu=ultrasparc -mtune=ultrasparc -fomit-frame-pointer -O
|
||||
306 192 4 4 8 0 4 4 4 8 ATL_mm4x4x8p.c "R. Clint Whaley" \
|
||||
gcc
|
||||
--O -fomit-frame-pointer -fno-schedule-insns -fno-schedule-insns2
|
||||
+-mcpu=ultrasparc -mtune=ultrasparc -O -fomit-frame-pointer -fno-schedule-insns -fno-schedule-insns2
|
||||
307 192 4 4 16 1 0 4 4 16 ATL_smm4x4x16_av.c "R. Clint Whaley"
|
||||
308 192 4 4 4 1 0 4 4 4 ATL_smm4x4x4_av.c "R. Clint Whaley"
|
||||
309 16 0 0 4 1 0 4 4 4 ATL_smmMNCU_av.c "R. Clint Whaley"
|
||||
|
||||
--- tune/blas/gemm/CASES/scases.flg Mon Dec 22 09:12:07 2003
|
||||
+++ tune/blas/gemm/CASES/scases.flg Wed Mar 7 03:08:48 2007
|
||||
@@ -5,7 +5,7 @@
|
||||
-mcpu=ultrasparc -mtune=ultrasparc -fomit-frame-pointer -O
|
||||
306 192 4 4 8 0 4 4 4 8 ATL_mm4x4x8p.c "R. Clint Whaley" \
|
||||
gcc
|
||||
--O -fomit-frame-pointer -fno-schedule-insns -fno-schedule-insns2
|
||||
+-mcpu=ultrasparc -mtune=ultrasparc -O -fomit-frame-pointer -fno-schedule-insns -fno-schedule-insns2
|
||||
307 192 4 4 16 1 0 4 4 16 ATL_smm4x4x16_av.c "R. Clint Whaley"
|
||||
308 192 4 4 4 1 0 4 4 4 ATL_smm4x4x4_av.c "R. Clint Whaley"
|
||||
309 16 0 0 4 1 0 4 4 4 ATL_smmMNCU_av.c "R. Clint Whaley"
|
||||
|
@ -1,197 +0,0 @@
|
||||
--- config.c.orig Mon Dec 22 23:06:32 2003
|
||||
+++ config.c Sat Mar 27 14:47:04 2004
|
||||
@@ -666,7 +666,9 @@
|
||||
sprintf(ln, "%s --version", gcc);
|
||||
if (CmndOneLine(NULL, ln, ln2) == 0)
|
||||
{
|
||||
- *major = GetIntVers(ln2, &j);
|
||||
+ j=0;if(isalpha(ln2[0])){for(i=0;!isspace(ln2[i]);i++)j++;} /*skip gccXXX ; XXX is number*/
|
||||
+ for (i=j; !isdigit(ln2[i]); i++) j++;
|
||||
+ *major = GetIntVers(ln2+j, &i); j += i;
|
||||
if (*major != -1)
|
||||
{
|
||||
*minor = GetIntVers(ln2+j, &i); j += i;
|
||||
@@ -1188,7 +1190,9 @@
|
||||
switch(OS)
|
||||
{
|
||||
case OSOSX: /* don't know answer */
|
||||
- case OSFreeBSD: /* don't know answer */
|
||||
+ case OSFreeBSD:
|
||||
+ if (THREADS) strcpy(LIBS, "%%PTHREAD_LIBS%% -lm");
|
||||
+ break;
|
||||
case OSLinux:
|
||||
break;
|
||||
case OSSunOS:
|
||||
@@ -1450,9 +1454,9 @@
|
||||
if (THREADS && OS == OSFreeBSD)
|
||||
{
|
||||
if (which == CPF77)
|
||||
- strcat(flag, " -pthread");
|
||||
+ strcat(flag, " %%PTHREAD_LIBS%%");
|
||||
else
|
||||
- strcat(flag, " -pthread -D_REENTRANT -D_THREAD_SAFE");
|
||||
+ strcat(flag, " %%PTHREAD_LIBS%% %%PTHREAD_CFLAGS%%");
|
||||
}
|
||||
break;
|
||||
case OSSunOS4:
|
||||
@@ -1984,8 +1988,8 @@
|
||||
if (OS == OSFreeBSD)
|
||||
{
|
||||
if (strstr(comp, "cc"))
|
||||
- strcat(flag, " -pthread -D_REENTRANT -D_THREAD_SAFE");
|
||||
- else strcat(flag, " -pthread");
|
||||
+ strcat(flag, " %%PTHREAD_LIBS%% %%PTHREAD_CFLAGS%%");
|
||||
+ else strcat(flag, " %%PTHREAD_LIBS%%");
|
||||
}
|
||||
}
|
||||
return(*comp ? comp : NULL);
|
||||
@@ -2587,7 +2587,7 @@
|
||||
break;
|
||||
case IntP4:
|
||||
lf1 = l1 = 64;
|
||||
- lf2 = l2 = 512;
|
||||
+ lf2 = l2 = 4096;
|
||||
s1 = 0;
|
||||
s2 = 0;
|
||||
break;
|
||||
@@ -2687,6 +2687,7 @@
|
||||
l1 = l2 = s1 = s2 = 0;
|
||||
lf2 = 4096;
|
||||
}
|
||||
+ s1 = 0; // XXX always calculate L1 cache size
|
||||
if (lvl == 1)
|
||||
{
|
||||
if (AmSure) *AmSure = s1;
|
||||
@@ -2799,7 +2803,7 @@
|
||||
else if (strstr(ln, "ia64")) la = LAIA64;
|
||||
else if ( strstr(ln, "i686") || strstr(ln, "i586") ||
|
||||
strstr(ln, "i486") || strstr(ln, "i386") ||
|
||||
- strstr(ln, "x86_64") ) la = LAX86;
|
||||
+ strstr(ln, "x86_64") || strstr(ln, "amd64") ) la = LAX86;
|
||||
}
|
||||
return(la);
|
||||
}
|
||||
@@ -2835,12 +2839,22 @@
|
||||
}
|
||||
break;
|
||||
case LASPARC: /* don't know */
|
||||
+ if (!CmndOneLine(targ, "sysctl hw.model", ln))
|
||||
+ {
|
||||
+ if (strstr(ln, "UltraSparc-II")) mach = SunUS2;
|
||||
+ if (strstr(ln, "UltraSparc-I")) mach = SunUS1;
|
||||
+ if (strstr(ln, "UltraSparc")) mach = SunUSX;
|
||||
+ else mach = SunUSX;
|
||||
+ }
|
||||
break;
|
||||
case LAALPHA:
|
||||
if (!CmndOneLine(targ, "sysctl hw.model", ln))
|
||||
{
|
||||
if (strstr(ln, "433au")) mach = Dec21164;
|
||||
+ else if (strstr(ln, "500au")) mach = Dec21164;
|
||||
+ else if (strstr(ln, "AlphaPC 164")) mach = Dec21164;
|
||||
else if (strstr(ln, "XP1000")) mach = Dec21264;
|
||||
+ else mach = Dec21264;
|
||||
}
|
||||
break;
|
||||
case LAIA64: /* don't know */
|
||||
@@ -2849,14 +2863,33 @@
|
||||
if (!CmndOneLine(targ, "sysctl hw.model", ln))
|
||||
{
|
||||
if (strstr(ln, "Pentium Pro")) mach = IntPPRO;
|
||||
+ else if (strstr(ln, "Pentium(R) Pro")) mach = IntPPRO;
|
||||
+ else if (strstr(ln, "Pentium 4")) mach = IntP4;
|
||||
+ else if (strstr(ln, "Pentium(R) 4")) mach = IntP4;
|
||||
+ else if (strstr(ln, "Pentium(R) M")) mach = IntP4;
|
||||
else if (strstr(ln, "Pentium III")) mach = IntPIII;
|
||||
- else if (strstr(ln, "Pentium II ")) mach = IntPII;
|
||||
+ else if (strstr(ln, "Pentium III/Pentium III")) mach = IntPIII;
|
||||
+ else if (strstr(ln, "Pentium(R) III")) mach = IntPIII;
|
||||
+ else if (strstr(ln, "Pentium II")) mach = IntPII;
|
||||
+ else if (strstr(ln, "Pentium II/PentiumII")) mach = IntPII;
|
||||
+ else if (strstr(ln, "Pentium(R) II ")) mach = IntPII;
|
||||
+ else if (strstr(ln, "Celeron")) mach = IntPII;
|
||||
+ else if (strstr(ln, "Celeron(R)")) mach = IntPII;
|
||||
+ else if (strstr(ln, "Opteron(tm)") && sizeof(void *)==4) mach = AmdHammer32;
|
||||
+ else if (strstr(ln, "Opteron(tm)") && sizeof(void *)==8) mach = AmdHammer64;
|
||||
+ else if (strstr(ln, "AMD Athlon(tm) 64") && sizeof(void *)==4) mach = AmdHammer32;
|
||||
+ else if (strstr(ln, "AMD Athlon(tm) 64") && sizeof(void *)==8) mach = AmdHammer64;
|
||||
+ else if (strstr(ln, "Sempron(tm)")) mach = AmdAthlon;
|
||||
+ else if (strstr(ln, "Athlon(tm)")) mach = AmdAthlon;
|
||||
else if (strstr(ln, "Athlon")) mach = AmdAthlon;
|
||||
else if (strstr(ln, "AMD-K7")) mach = AmdAthlon;
|
||||
- else if (strstr(ln, "32 bit Hammer")) mach = AmdHammer32;
|
||||
- else if (strstr(ln, "64 bit Hammer")) mach = AmdHammer64;
|
||||
- else if (strstr(ln, "Pentium/P55C")) mach = IntP5MMX; /* sent by */
|
||||
- else if (strstr(ln, "Pentium")) mach=IntP5; /* Nakata Maho */
|
||||
+ else if (strstr(ln, "AMD-K6(tm)")) mach = IntP5MMX;
|
||||
+ else if (strstr(ln, "Pentium/P55C")) mach = IntP5MMX;
|
||||
+ else if (strstr(ln, "Pentium/P54C")) mach=IntP5;
|
||||
+ else if (strstr(ln, "Pentium")) mach=IntP5;
|
||||
+ else if (strstr(ln, "VIA")) mach=IntP5MMX;
|
||||
+ else if (strstr(ln, "Crusoe(tm)")) mach=IntP5MMX;
|
||||
+ else mach = IntP5;
|
||||
}
|
||||
break;
|
||||
default:;
|
||||
@@ -3641,8 +3673,8 @@
|
||||
}
|
||||
if (THREADS) /* add ncpu to ARCH */
|
||||
{
|
||||
- for (i=0; ARCH[i]; i++);
|
||||
- sprintf(ARCH+i, "_%d", ncpu);
|
||||
+// for (i=0; ARCH[i]; i++); // do not add number of cpu for ARCHNAME
|
||||
+// sprintf(ARCH+i, "_%d", ncpu); // #cpu can be different in general
|
||||
}
|
||||
do
|
||||
{
|
||||
@@ -4047,9 +4079,9 @@
|
||||
if (mach == IA64Itan || mach == IA64Itan2 )
|
||||
fprintf(fpout, " -DATL_MAXNREG=128");
|
||||
if (ASMD != ASM_None) fprintf(fpout, " -DATL_%s", ASMNAM[ASMD]);
|
||||
- if (mach == AmdHammer32 && (OS != OSWinNT && OS != OSWin9x))
|
||||
+ if (mach == AmdHammer32 && (OS != OSWinNT && OS != OSWin9x && OS != OSFreeBSD))
|
||||
fprintf(fpout, " -m32");
|
||||
- else if (mach == AmdHammer64) fprintf(fpout, " -m64");
|
||||
+ else if (mach == AmdHammer64 && (OS != OSFreeBSD)) fprintf(fpout, " -m64");
|
||||
if (mach == IA64Itan2 && strstr(CC, "icc"))
|
||||
fprintf(fpout, " -DATL_IntelIccBugs");
|
||||
fprintf(fpout, "\n\n");
|
||||
@@ -4080,7 +4112,7 @@
|
||||
if (THREADS)
|
||||
{
|
||||
fprintf(fpout, " -DATL_NCPU=%d", ncpu);
|
||||
- if (OS == OSFreeBSD) fprintf(fpout, " -D_THREAD_SAFE -D_REENTRANT");
|
||||
+ if (OS == OSFreeBSD) fprintf(fpout, " %%PTHREAD_CFLAGS%%");
|
||||
if (OS == OSAIX) fprintf(fpout, " -DIBM_PT_ERROR");
|
||||
if (OS == OSIRIX) fprintf(fpout, " -D_POSIX_C_SOURCE=199506L");
|
||||
}
|
||||
--- config.c.orig Sat Jan 6 21:07:32 2007
|
||||
+++ config.c Sun Jan 7 06:06:08 2007
|
||||
@@ -4177,9 +4177,9 @@
|
||||
fprintf(fpout, "# ------------------------------------\n");
|
||||
fprintf(fpout, "# Reference and system libraries\n");
|
||||
fprintf(fpout, "# ------------------------------------\n");
|
||||
- fprintf(fpout, " BLASlib = %s\n", BLASlib);
|
||||
- fprintf(fpout, " FBLASlib = \n");
|
||||
- fprintf(fpout, " FLAPACKlib = \n");
|
||||
+ fprintf(fpout, " BLASlib = -L%%LOCALBASE%%/lib -lblas\n");
|
||||
+ fprintf(fpout, " FBLASlib = -L%%LOCALBASE%%/lib -lblas\n");
|
||||
+ fprintf(fpout, " FLAPACKlib = -L%%LOCALBASE%%/lib -llapack\n");
|
||||
fprintf(fpout, " LIBS = %s\n\n", LIBS);
|
||||
|
||||
fprintf(fpout,
|
||||
|
||||
http://math-atlas.sourceforge.net/errata.html
|
||||
String overrun in config for long compiler paths
|
||||
|
||||
--- config.c Mon Dec 22 09:06:32 2003
|
||||
+++ config.c Wed Mar 7 02:08:34 2007
|
||||
@@ -3411,7 +3411,7 @@
|
||||
char LIBS[256];
|
||||
char TAR[256], GZIP[256], GUNZIP[256], PMAKE[128];
|
||||
|
||||
- char comp[64], cflg[512], ln[512], tnam[256], archdef[256], mmdef[256];
|
||||
+ char comp[512], cflg[512], ln[512], tnam[256], archdef[256], mmdef[256];
|
||||
char BC[256], BCFLAGS[256];
|
||||
int GOGO=0, L2IsKnown=0, Use3DNow=0, TuneL1=1;
|
||||
int USEDEFL1=0;
|
@ -1,220 +0,0 @@
|
||||
http://math-atlas.sourceforge.net/errata.html
|
||||
Large blocking factors hurt LAPACK performance for small N
|
||||
|
||||
--- interfaces/lapack/F77/src/ilaenv.f Mon Dec 22 09:07:51 2003
|
||||
+++ interfaces/lapack/F77/src/ilaenv.f Mon Mar 5 12:41:41 2007
|
||||
@@ -7,7 +7,7 @@
|
||||
* June 30, 1999
|
||||
*
|
||||
* -- Modified by R. Clint Whaley for ATLAS Fortran77 LAPACK interface,
|
||||
-* 1999
|
||||
+* 1999, 2006
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER*( * ) NAME, OPTS
|
||||
@@ -111,6 +111,7 @@
|
||||
CHARACTER*3 C3
|
||||
CHARACTER*6 SUBNAM
|
||||
INTEGER I, IC, IZ, NB, NBMIN, NX
|
||||
+ INTEGER MN, ATLNB
|
||||
* ..
|
||||
* .. Intrinsic Functions ..
|
||||
INTRINSIC CHAR, ICHAR, INT, MIN, REAL
|
||||
@@ -207,13 +208,10 @@
|
||||
* ISPEC = 1: block size
|
||||
*
|
||||
* ATLAS sets default blocking factor to the internal blocking factor of
|
||||
-* GEMM. In routines such as QR where unblocked code addresses a panel
|
||||
-* (as opposed to a NBxNB block as in POTF2), this will often be too large
|
||||
-* to provide the optimal performance due to the slowness of the panel
|
||||
-* factorization. Asymptotically, however, you will want it at least
|
||||
-* this big. Therefore, we choose this NB as default since how much smaller
|
||||
-* an NB is required is very problem size and system architecture
|
||||
-* dependent. Note that the recursive routines provided by ATLAS
|
||||
+* GEMM. For particular routines, we then examine input parameters to
|
||||
+* see if we should reduce it (for instance, to ensure that we don't
|
||||
+* spend too much time in the unblocked level-2 portion of the algorithm).
|
||||
+* Note that the recursive routines provided by ATLAS
|
||||
* (presently, LU & Cholesky) do not need this value.
|
||||
*
|
||||
NB = 60
|
||||
@@ -226,6 +224,179 @@
|
||||
ELSE IF (DCPLX) THEN
|
||||
CALL ATL_F77WRAP_ZGETNB(NB)
|
||||
ENDIF
|
||||
+ ATLNB = NB
|
||||
+*
|
||||
+* Find minimum dimension of problem: don't want NB bigger than that
|
||||
+*
|
||||
+ MN = N1
|
||||
+ IF (N2 .GT. 0) THEN
|
||||
+ IF (MN .GT. N2) MN = N2
|
||||
+ IF (N3 .GT. 0) THEN
|
||||
+ IF (MN .GT. N3) MN = N3
|
||||
+ IF (N4 .GT. 0) THEN
|
||||
+ IF (MN .GT. N4) MN = N4
|
||||
+ END IF
|
||||
+ END IF
|
||||
+ END IF
|
||||
+*
|
||||
+* Make sure NB is not close to size of entire dimension, unless smallest
|
||||
+* dimension is so small you might as well use unblocked code the whole way
|
||||
+*
|
||||
+ IF (MN .LE. 3) THEN
|
||||
+ NB = MN;
|
||||
+ ELSE IF (NB*5 .GT. MN) THEN
|
||||
+ IF (MN .LT. 16) THEN
|
||||
+ IF (MN .LT. 8) THEN
|
||||
+ NB = 2
|
||||
+ ELSE
|
||||
+ NB = 4
|
||||
+ END IF
|
||||
+ ELSE
|
||||
+ NB = (MN / 4)
|
||||
+ IF (NB .GT. 4) THEN
|
||||
+ NB = (NB/4)*4
|
||||
+ ENDIF
|
||||
+ END IF
|
||||
+ END IF
|
||||
+ IF( C2.EQ.'GE' ) THEN
|
||||
+ IF( C3.EQ.'TRF' ) THEN
|
||||
+ NB = NB
|
||||
+*
|
||||
+* QR requires extra flops for blocking, so restrain total NB
|
||||
+*
|
||||
+ ELSE IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR.
|
||||
+ $ C3.EQ.'QLF' ) THEN
|
||||
+ IF (NB .GT. 80) THEN
|
||||
+ IF( SNAME ) THEN
|
||||
+ NB = 60
|
||||
+ ELSE
|
||||
+ NB = 40
|
||||
+ END IF
|
||||
+ END IF
|
||||
+ ELSE IF( C3.EQ.'HRD' ) THEN
|
||||
+ IF (NB .GT. 80) THEN
|
||||
+ IF( SNAME ) THEN
|
||||
+ NB = 60
|
||||
+ ELSE
|
||||
+ NB = 40
|
||||
+ END IF
|
||||
+ END IF
|
||||
+ ELSE IF( C3.EQ.'BRD' ) THEN
|
||||
+ IF (NB .GT. 80) THEN
|
||||
+ IF( SNAME ) THEN
|
||||
+ NB = 60
|
||||
+ ELSE
|
||||
+ NB = 40
|
||||
+ END IF
|
||||
+ END IF
|
||||
+ ELSE IF( C3.EQ.'TRI' ) THEN
|
||||
+ NB = NB
|
||||
+ END IF
|
||||
+ ELSE IF( C2.EQ.'PO' ) THEN
|
||||
+ IF( C3.EQ.'TRF' ) THEN
|
||||
+ NB = NB
|
||||
+ END IF
|
||||
+ ELSE IF( C2.EQ.'SY' ) THEN
|
||||
+ IF( C3.EQ.'TRF' ) THEN
|
||||
+ NB = NB
|
||||
+ ELSE IF( SNAME .AND. C3.EQ.'TRD' ) THEN
|
||||
+ IF (NB .GT. 80) THEN
|
||||
+ IF( SNAME ) THEN
|
||||
+ NB = 60
|
||||
+ ELSE
|
||||
+ NB = 40
|
||||
+ END IF
|
||||
+ END IF
|
||||
+ ELSE IF( SNAME .AND. C3.EQ.'GST' ) THEN
|
||||
+ NB = NB
|
||||
+ END IF
|
||||
+ ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN
|
||||
+ IF( C3.EQ.'TRF' ) THEN
|
||||
+ NB = NB
|
||||
+ ELSE IF( C3.EQ.'TRD' ) THEN
|
||||
+ IF (NB .GT. 80) THEN
|
||||
+ IF( SNAME ) THEN
|
||||
+ NB = 60
|
||||
+ ELSE
|
||||
+ NB = 40
|
||||
+ END IF
|
||||
+ END IF
|
||||
+ ELSE IF( C3.EQ.'GST' ) THEN
|
||||
+ NB = NB
|
||||
+ END IF
|
||||
+ ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN
|
||||
+ IF( C3( 1:1 ).EQ.'G' ) THEN
|
||||
+ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
|
||||
+ $ C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
|
||||
+ $ C4.EQ.'BR' ) THEN
|
||||
+ IF (NB .GT. 80) NB = 60
|
||||
+ END IF
|
||||
+ ELSE IF( C3( 1:1 ).EQ.'M' ) THEN
|
||||
+ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
|
||||
+ $ C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
|
||||
+ $ C4.EQ.'BR' ) THEN
|
||||
+ IF (NB .GT. 80) NB = 60
|
||||
+ END IF
|
||||
+ END IF
|
||||
+ ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN
|
||||
+ IF( C3( 1:1 ).EQ.'G' ) THEN
|
||||
+ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
|
||||
+ $ C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
|
||||
+ $ C4.EQ.'BR' ) THEN
|
||||
+ IF (NB .GT. 80) NB = 40
|
||||
+ END IF
|
||||
+ ELSE IF( C3( 1:1 ).EQ.'M' ) THEN
|
||||
+ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
|
||||
+ $ C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
|
||||
+ $ C4.EQ.'BR' ) THEN
|
||||
+ IF (NB .GT. 80) NB = 40
|
||||
+ END IF
|
||||
+ END IF
|
||||
+ ELSE IF( C2.EQ.'GB' ) THEN
|
||||
+ IF( C3.EQ.'TRF' ) THEN
|
||||
+ IF( SNAME ) THEN
|
||||
+ NB = NB
|
||||
+ ELSE
|
||||
+ NB = NB
|
||||
+ END IF
|
||||
+ END IF
|
||||
+ ELSE IF( C2.EQ.'PB' ) THEN
|
||||
+ IF( C3.EQ.'TRF' ) THEN
|
||||
+ IF( SNAME ) THEN
|
||||
+ IF( N2.LE.64 ) THEN
|
||||
+ NB = NB
|
||||
+ ELSE
|
||||
+ NB = NB
|
||||
+ END IF
|
||||
+ ELSE
|
||||
+ IF( N2.LE.64 ) THEN
|
||||
+ NB = NB
|
||||
+ ELSE
|
||||
+ NB = NB
|
||||
+ END IF
|
||||
+ END IF
|
||||
+ END IF
|
||||
+ ELSE IF( C2.EQ.'TR' ) THEN
|
||||
+ IF( C3.EQ.'TRI' ) THEN
|
||||
+ IF( SNAME ) THEN
|
||||
+ NB = NB
|
||||
+ ELSE
|
||||
+ NB = NB
|
||||
+ END IF
|
||||
+ END IF
|
||||
+ ELSE IF( C2.EQ.'LA' ) THEN
|
||||
+ IF( C3.EQ.'UUM' ) THEN
|
||||
+ IF( SNAME ) THEN
|
||||
+ NB = NB
|
||||
+ ELSE
|
||||
+ NB = NB
|
||||
+ END IF
|
||||
+ END IF
|
||||
+ ELSE IF( SNAME .AND. C2.EQ.'ST' ) THEN
|
||||
+ IF( C3.EQ.'EBZ' ) THEN
|
||||
+ NB = 1
|
||||
+ END IF
|
||||
+ END IF
|
||||
*
|
||||
ILAENV = NB
|
||||
RETURN
|
@ -1,16 +0,0 @@
|
||||
http://math-atlas.sourceforge.net/errata.html
|
||||
Misdetection of nregs causes some x86 installs to go awry.
|
||||
|
||||
--- tune/blas/gemm/mmsearch.c Mon Dec 22 09:11:57 2003
|
||||
+++ tune/blas/gemm/mmsearch.c Wed Mar 7 02:42:27 2007
|
||||
@@ -822,6 +822,10 @@
|
||||
int lat, NO1D=0;
|
||||
double mf0, mf1, mf;
|
||||
|
||||
+ #if defined(ATL_GAS_x8632) || defined(ATL_GAS_x8664)
|
||||
+ return(0);
|
||||
+ #endif
|
||||
+
|
||||
if (pre == 'z') pre = 'd';
|
||||
else if (pre == 'c') pre = 's';
|
||||
|
@ -1,13 +0,0 @@
|
||||
http://math-atlas.sourceforge.net/errata.html
|
||||
Install dies in tfc / ?Xover.h is incomplete
|
||||
--- tune/blas/gemm/tfc.c Mon Dec 22 09:11:57 2003
|
||||
+++ tune/blas/gemm/tfc.c Wed Mar 7 02:01:20 2007
|
||||
@@ -55,7 +55,7 @@
|
||||
double time00();
|
||||
|
||||
#define DENMAT 175
|
||||
-#define MAXALLOC (3*1024*1024*8)
|
||||
+#define MAXALLOC (8*1024*1024*8)
|
||||
|
||||
#ifdef ATL_DeclareSlens
|
||||
F77_INTEGER ATL_Slen1, ATL_Slen2;
|
@ -1,5 +1,5 @@
|
||||
--- tune/sysinfo/L1CacheSize.c Mon Dec 22 23:11:53 2003
|
||||
+++ ../../L1CacheSize.c Tue Jun 28 13:37:10 2005
|
||||
--- tune/sysinfo/L1CacheSize.c.orig Tue Dec 19 06:48:02 2006
|
||||
+++ tune/sysinfo/L1CacheSize.c Wed Dec 27 12:43:59 2006
|
||||
@@ -31,7 +31,7 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@ -9,12 +9,12 @@
|
||||
|
||||
#ifndef time00
|
||||
#define time00 ATL_cputime
|
||||
@@ -134,7 +134,7 @@
|
||||
@@ -267,7 +267,7 @@
|
||||
|
||||
main(int nargs, char *args[])
|
||||
{
|
||||
- int L1Size, tmp, MaxSize=64, correct=1;
|
||||
+ int L1Size, tmp, MaxSize=256, correct=1;
|
||||
- int L1Size, MaxSize=64, correct=1;
|
||||
+ int L1Size, MaxSize=256, correct=1;
|
||||
FILE *L1f;
|
||||
|
||||
if (nargs > 2)
|
||||
|
@ -1,11 +1,12 @@
|
||||
--- config.c.orig Tue Jul 1 12:35:09 2003
|
||||
+++ config.c Tue Jul 1 12:35:44 2003
|
||||
@@ -79,7 +79,7 @@
|
||||
char *usermmnam[2] = {"", "GOTO"};
|
||||
enum USERGEMM {UG_None=0, UG_GOTO};
|
||||
|
||||
-int XCOMP=0, THREADS=0, USEWINF77=0, NLINES=0, ISWIN=0;
|
||||
+int XCOMP=0, THREADS=1, USEWINF77=0, NLINES=0, ISWIN=0; // force threading for single processor
|
||||
char TARGNAM[512];
|
||||
enum MACHTYPE mach=MACHOther;
|
||||
|
||||
--- CONFIG/src/SpewMakeInc.c~ Fri Feb 16 11:40:19 2007
|
||||
+++ CONFIG/src/SpewMakeInc.c Fri Feb 16 11:41:06 2007
|
||||
@@ -332,7 +332,8 @@
|
||||
&mhz, &ptrbits, &ncpu, comps, &gccflags, &outfile, &srcdir,
|
||||
&blddir, &USEDEFL1, &USEARCHDEF, &nof77, &f2cdefs, &cdefs, &pmake,
|
||||
&flapack, &smaflags, &dmaflags, &f77lib, &l2size, &targ);
|
||||
- if (ncpu > 1) THREADS = 1;
|
||||
+ /* if (ncpu > 1) THREADS = 1; */
|
||||
+ THREADS = 1;
|
||||
if (!outfile)
|
||||
fpout = stdout;
|
||||
else
|
||||
|
@ -1,12 +0,0 @@
|
||||
http://math-atlas.sourceforge.net/errata.html#tol
|
||||
--- tune/sysinfo/GetSysSum.c~ Sat Jul 24 20:40:05 2004
|
||||
+++ tune/sysinfo/GetSysSum.c Sun Jun 26 07:52:43 2005
|
||||
@@ -116,7 +116,7 @@
|
||||
fprintf(fpout, "#define ATL_fplat %d\n", lat);
|
||||
fprintf(fpout, "#define ATL_lbnreg %d\n", lbnreg);
|
||||
fprintf(fpout, "#define ATL_mmnreg %d\n", mmnreg);
|
||||
- fprintf(fpout, "#define ATL_nkflop %d\n", nkflop);
|
||||
+ fprintf(fpout, "#define ATL_nkflop %d\n", nkflop*5);
|
||||
fprintf(fpout, "\n#endif\n");
|
||||
fclose(fpout);
|
||||
}
|
@ -2,17 +2,23 @@ The ATLAS (Automatically Tuned Linear Algebra Software) project is
|
||||
an ongoing research effort focusing on applying empirical techniques
|
||||
in order to provide portable performance.
|
||||
|
||||
At present, it provides C and Fortran77 interfaces to a
|
||||
portably efficient BLAS implementation, as well as a few routines from LAPACK.
|
||||
At present, it provides C and Fortran77 interfaces to a portable,
|
||||
efficient BLAS implementation, as well as enhanced versions of
|
||||
a few routines from LAPACK.
|
||||
|
||||
If you use blas, you can simply change flags when linking,
|
||||
from -lblas to -lf77blas -latlas (order is important).
|
||||
If you want to link software to ATLAS rather than the standard BLAS, simply
|
||||
use -lf77blas -latlas (order is important), or -lptf77blas -latlas for the
|
||||
threaded library (which is primarily useful on SMP machines), in place of
|
||||
the usual -lblas. Corresponding pure C versions of the ATLAS libraries are
|
||||
also included, in libcblas and libptcblas.
|
||||
|
||||
A few routines from LAPACK are merged into one library as libalapack.
|
||||
It requres both C and Fortran77 interfaces, and thus that link line would be:
|
||||
-lalapack -lf77blas -lcblas -latlas -lg2c -lm .
|
||||
|
||||
Other choice of CC and CFLAGS are *NOT* recommended.
|
||||
They are already optimized for this platform and automatically searched.
|
||||
The ATLAS-enhanced LAPACK routines are also provided.
|
||||
To link software with this library instead of the standard LAPACK, use
|
||||
-L/usr/local/lib/gcc-4.2.3 -L/usr/local/lib/gcc-4.2.3/gcc/i386-portbld-freebsd7.0/4.2.3 -lalapack -lf77blas -lcblas -latlas -lgfortranbegin -lgfortran -lm, or
|
||||
-L/usr/local/lib/gcc-4.2.3 -L/usr/local/lib/gcc-4.2.3/gcc/i386-portbld-freebsd7.0/4.2.3 -lalapack_r -lptf77blas -lptcblas -latlas -lgfortranbegin -lgfortran
|
||||
-lm for the threaded library, in place of the usual -llapack.
|
||||
Note that
|
||||
-L/usr/local/lib/gcc-4.2.3 -L/usr/local/lib/gcc-4.2.3/gcc/i386-portbld-freebsd7.0/4.2.3
|
||||
depends on your environment.
|
||||
|
||||
WWW: http://math-atlas.sourceforge.net/
|
||||
|
@ -1,7 +1,5 @@
|
||||
include/cblas.h
|
||||
include/clapack.h
|
||||
include/blas.h
|
||||
include/lapack.h
|
||||
%%WITH_STATICLIB%%lib/libalapack.a
|
||||
lib/libalapack.so.2
|
||||
lib/libalapack.so
|
||||
@ -32,13 +30,8 @@ lib/libptcblas.so
|
||||
%%WITH_STATICLIB%%lib/libptf77blas.a
|
||||
lib/libptf77blas.so.2
|
||||
lib/libptf77blas.so
|
||||
%%WITH_STATICLIB%%lib/libtstatlas.a
|
||||
lib/libtstatlas.so.2
|
||||
lib/libtstatlas.so
|
||||
%%WITH_STATICLIB%%lib/libtstatlas_r.a
|
||||
lib/libtstatlas_r.so.2
|
||||
lib/libtstatlas_r.so
|
||||
%%PORTDOCS%%share/doc/atlas/AtlasCredits.txt
|
||||
%%PORTDOCS%%share/doc/atlas/BootSequence.txt
|
||||
%%PORTDOCS%%share/doc/atlas/ChangeLog
|
||||
%%PORTDOCS%%share/doc/atlas/DirStruct.txt
|
||||
%%PORTDOCS%%share/doc/atlas/INDEX.txt
|
||||
@ -46,60 +39,12 @@ lib/libtstatlas_r.so
|
||||
%%PORTDOCS%%share/doc/atlas/TestTime.txt
|
||||
%%PORTDOCS%%share/doc/atlas/TroubleShoot.txt
|
||||
%%PORTDOCS%%share/doc/atlas/Windows.txt
|
||||
%%PORTDOCS%%share/doc/atlas/atlas_contrib.ps
|
||||
%%PORTDOCS%%share/doc/atlas/atlas_devel.ps
|
||||
%%PORTDOCS%%share/doc/atlas/atlas_over.ps
|
||||
%%PORTDOCS%%share/doc/atlas/cblas.ps
|
||||
%%PORTDOCS%%share/doc/atlas/cblasqref.ps
|
||||
%%PORTDOCS%%share/doc/atlas/f77blasqref.ps
|
||||
%%PORTDOCS%%share/doc/atlas/lapackqref.ps
|
||||
%%PORTDOCS%%share/doc/atlas/atlas_contrib.pdf
|
||||
%%PORTDOCS%%share/doc/atlas/atlas_devel.pdf
|
||||
%%PORTDOCS%%share/doc/atlas/atlas_install.pdf
|
||||
%%PORTDOCS%%share/doc/atlas/atlas_over.pdf
|
||||
%%PORTDOCS%%share/doc/atlas/cblas.pdf
|
||||
%%PORTDOCS%%share/doc/atlas/cblasqref.pdf
|
||||
%%PORTDOCS%%share/doc/atlas/f77blasqref.pdf
|
||||
%%PORTDOCS%%share/doc/atlas/lapackqref.pdf
|
||||
%%PORTDOCS%%@dirrm share/doc/atlas
|
||||
%%EXAMPLESDIR%%/xcl1blastst
|
||||
%%EXAMPLESDIR%%/xcl2blastst
|
||||
%%EXAMPLESDIR%%/xcl3blastst
|
||||
%%EXAMPLESDIR%%/xcl3blastst_pt
|
||||
%%EXAMPLESDIR%%/xcllttst
|
||||
%%EXAMPLESDIR%%/xcllttstF
|
||||
%%EXAMPLESDIR%%/xcllttstF_pt
|
||||
%%EXAMPLESDIR%%/xcllttst_pt
|
||||
%%EXAMPLESDIR%%/xclutst
|
||||
%%EXAMPLESDIR%%/xclutstF
|
||||
%%EXAMPLESDIR%%/xclutstF_pt
|
||||
%%EXAMPLESDIR%%/xclutst_pt
|
||||
%%EXAMPLESDIR%%/xdl1blastst
|
||||
%%EXAMPLESDIR%%/xdl2blastst
|
||||
%%EXAMPLESDIR%%/xdl3blastst
|
||||
%%EXAMPLESDIR%%/xdl3blastst_pt
|
||||
%%EXAMPLESDIR%%/xdllttst
|
||||
%%EXAMPLESDIR%%/xdllttstF
|
||||
%%EXAMPLESDIR%%/xdllttstF_pt
|
||||
%%EXAMPLESDIR%%/xdllttst_pt
|
||||
%%EXAMPLESDIR%%/xdlutst
|
||||
%%EXAMPLESDIR%%/xdlutstF
|
||||
%%EXAMPLESDIR%%/xdlutstF_pt
|
||||
%%EXAMPLESDIR%%/xdlutst_pt
|
||||
%%EXAMPLESDIR%%/xsl1blastst
|
||||
%%EXAMPLESDIR%%/xsl2blastst
|
||||
%%EXAMPLESDIR%%/xsl3blastst
|
||||
%%EXAMPLESDIR%%/xsl3blastst_pt
|
||||
%%EXAMPLESDIR%%/xsllttst
|
||||
%%EXAMPLESDIR%%/xsllttstF
|
||||
%%EXAMPLESDIR%%/xsllttstF_pt
|
||||
%%EXAMPLESDIR%%/xsllttst_pt
|
||||
%%EXAMPLESDIR%%/xslutst
|
||||
%%EXAMPLESDIR%%/xslutstF
|
||||
%%EXAMPLESDIR%%/xslutstF_pt
|
||||
%%EXAMPLESDIR%%/xslutst_pt
|
||||
%%EXAMPLESDIR%%/xzl1blastst
|
||||
%%EXAMPLESDIR%%/xzl2blastst
|
||||
%%EXAMPLESDIR%%/xzl3blastst
|
||||
%%EXAMPLESDIR%%/xzl3blastst_pt
|
||||
%%EXAMPLESDIR%%/xzllttst
|
||||
%%EXAMPLESDIR%%/xzllttstF
|
||||
%%EXAMPLESDIR%%/xzllttstF_pt
|
||||
%%EXAMPLESDIR%%/xzllttst_pt
|
||||
%%EXAMPLESDIR%%/xzlutst
|
||||
%%EXAMPLESDIR%%/xzlutstF
|
||||
%%EXAMPLESDIR%%/xzlutstF_pt
|
||||
%%EXAMPLESDIR%%/xzlutst_pt
|
||||
@dirrm %%EXAMPLESDIR%%
|
||||
|
Loading…
Reference in New Issue
Block a user