debian/0000775000000000000000000000000012317530614007172 5ustar debian/control0000664000000000000000000000414212317530614010576 0ustar Source: openblas Section: devel Priority: optional Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Debian Science Team Uploaders: Sylvestre Ledru , Sébastien Villemot Standards-Version: 3.9.5 Build-Depends: debhelper (>= 9), patch, cdbs, gfortran Homepage: https://github.com/xianyi/OpenBLAS Vcs-Git: git://anonscm.debian.org/debian-science/packages/openblas.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=debian-science/packages/openblas.git Package: libopenblas-base Section: libs Architecture: amd64 i386 powerpc ppc64 kfreebsd-i386 kfreebsd-amd64 Depends: ${shlibs:Depends}, ${misc:Depends} Provides: libblas.so.3 Suggests: liblapack3 Replaces: libblas3gf (<< 1.2.20110419-3), libatlas3gf-base (<< 3.8.4-4) Breaks: libblas3gf (<< 1.2.20110419-3), libatlas3gf-base (<< 3.8.4-4) Description: Optimized BLAS (linear algebra) library based on GotoBLAS2 OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version. . Unlike Atlas, OpenBLAS provides a multiple architecture library. . All kernel will be included in the library and dynamically switched to the best architecture at run time (only on x86 arches). . For more information on how to rebuild locally OpenBLAS, see the section: "Building Optimized OpenBLAS Packages on your ARCH" in README.Debian Package: libopenblas-dev Section: libdevel Architecture: amd64 i386 powerpc ppc64 kfreebsd-i386 kfreebsd-amd64 Depends: libopenblas-base (= ${binary:Version}), libblas-dev, ${shlibs:Depends}, ${misc:Depends} Provides: libblas.so Suggests: liblapack-dev Description: Optimized BLAS (linear algebra) library based on GotoBLAS2 OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version. . Unlike Atlas, OpenBLAS provides a multiple architecture library. . All kernel will be included in the library and dynamically switched to the best architecture at run time (only on x86 arches). . This package includes the static libraries and symbolic links needed for program development. debian/TODO0000664000000000000000000000033112317530614007657 0ustar * disable the download of lapack and use the one from debian * update copyright * update homepage * write some doc about update-alternatives * write a debconf alert about the fact that a rebuild will improve the perf debian/libopenblas-dev.install0000664000000000000000000000005712317530614013632 0ustar libopenblas.a usr/lib/ libopenblas.so usr/lib/ debian/orig-tar.sh0000775000000000000000000000055412317530614011261 0ustar #!/bin/sh -e # called by uscan with '--upstream-version' DIR=OpenBLAS-$2 TAR=../openblas_$2.orig.tar.xz # clean up the upstream tarball tar xaf $3 rm -f $3 rm -rf $DIR/lapack-netlib/* echo "clean:" > $DIR/lapack-netlib/Makefile tar caf $TAR $DIR rm -rf $DIR echo "openblas: Repackaged tarball as $TAR (after stripping embedded LAPACK)" exit 0 debian/libopenblas-base.postinst0000664000000000000000000000052612317530614014204 0ustar #! /bin/sh set -e update-alternatives --install /usr/lib/libblas.so.3 libblas.so.3 \ /usr/lib/openblas-base/libblas.so.3 40 \ --slave /usr/lib/libblas.so.3gf libblas.so.3gf /usr/lib/openblas-base/libblas.so.3 # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/libopenblas-dev.preinst0000664000000000000000000000101212317530614013640 0ustar #! /bin/sh set -e # In 0.2.8-4, /usr/lib/openblas-base/libopenblas.so was renamed to # /usr/lib/openblas-base/libblas.so. It is therefore necessary to remove the # old path from the alternatives system before adding the new. if [ "$1" = "upgrade" ] && dpkg --compare-versions "$2" lt 0.2.8-4 then update-alternatives --remove libblas.so /usr/lib/openblas-base/libopenblas.so 2>/dev/null fi # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/watch0000664000000000000000000000027312317530614010225 0ustar version=3 opts=filenamemangle=s/.+\/archive\/v(.+)\.tar\.gz$/openblas_$1.orig.tar.gz/ \ https://github.com/xianyi/OpenBLAS/tags .*/archive/v(\d[\d\.]+)\.tar\.gz debian debian/orig-tar.sh debian/changelog0000664000000000000000000002622212317530614011050 0ustar openblas (0.2.8-6ubuntu1) trusty; urgency=medium * computational-error-of-dgemv_n.patch: fix wrong dgemv results -- Julian Taylor Fri, 04 Apr 2014 15:17:35 +0200 openblas (0.2.8-6) unstable; urgency=medium * Team upload. * backport two fixes from upstream git: - dgemv-crash.patch: fixes core2/barcelona dgemv kernel - wrong-parameter-for-zherk-zher2.patch -- Julian Taylor Thu, 13 Mar 2014 20:03:07 +0100 openblas (0.2.8-5) unstable; urgency=medium * kfreebsd-soname.patch: give a SONAME to the shared library under kfreebsd, by using the same stanza to create the shared object than under Linux. Incidentally, this fixes the FTBFS on kfreebsd-* archs. * Remove ia64, powerpcspe, hurd-i386 and sparc from the list of supported architectures (the package never compiled on those). * fork-handler.patch: improved version backported from upstream. -- Sébastien Villemot Fri, 21 Feb 2014 18:07:32 +0100 openblas (0.2.8-4) unstable; urgency=medium * Revert to pthreads parallelism instead of OpenMP (Closes: #737675) * remove-openmp-warning.patch: new patch, removes annoying warning when OpenBLAS is called from an OpenMP application. * fork-handler.patch: fixes hangs of OpenBLAS when called from a program using OpenMP (Closes: #739331) * Drop obsolete code in maintainer scripts to deal with the transition libblas.so.3gf => libblas.so.3. * Ship an additional libopenblas.so.0 in /usr/lib, to allow direct linking to OpenBLAS, without using the alternatives system for BLAS implementations. Thanks to Martin Koehler for his help in crafting a proper solution. (Closes: #725673) -- Sébastien Villemot Wed, 19 Feb 2014 17:20:03 +0100 openblas (0.2.8-3) unstable; urgency=medium * Use OpenMP parallelism instead of pthreads (Closes: #684344). * Bump Standards-Version to 3.9.5, no changes needed. * Bump to debhelper compat level 9. -- Sébastien Villemot Wed, 15 Jan 2014 14:07:39 +0100 openblas (0.2.8-2) unstable; urgency=low * qemu-athlon.patch: new patch, should fix FTBFS on babin.debian.org (which is a weird qemu guest declaring an Athlon CPU but without 3dnow! extensions) -- Sébastien Villemot Tue, 27 Aug 2013 18:04:04 +0200 openblas (0.2.8-1) unstable; urgency=low * New upstream release -- Sébastien Villemot Sat, 03 Aug 2013 23:25:41 +0200 openblas (0.2.7-1) unstable; urgency=low * New upstream release * power7.patch: remove patch, applied upstream * Repackage upstream tarball without embedded LAPACK copy * Package descriptions: mention that multiple arch is only for x86; fix typo * Use canonical URLs for packaging VCS * Add dependency of libopenblas-dev on libblas-dev, so that CBLAS headers are installed. (Closes: #685890) * Disable memory address range benchmarking (NO_WARMUP=1), for better startup performance. (Closes: #709224) * test-custom-package.patch: new package, ensures that testsuite is run even when building a custom package. (Closes: #677866) -- Sébastien Villemot Fri, 26 Jul 2013 18:37:41 +0200 openblas (0.2.6-2) unstable; urgency=low * power7.patch: new patch, should fix FTBFS on powerpc buildd with Power7 arch * libblas3-soname.patch: new patch, sets the SONAME of the dynamic library to libblas.so.3. (Closes: #687349) * Put "libblas3 | libblas.so.3" in the shlibs of libopenblas-base. Packages compiled with libopenblas-dev installed will now have a BLAS dependency satisfiable by all BLAS flavours. * Switch to git as VCS for packaging -- Sébastien Villemot Mon, 20 May 2013 18:40:07 +0200 openblas (0.2.6-1) unstable; urgency=low * Upload to unstable * Update Standards-Version to 3.9.4 * Increase the maximum number of threads to 64 when building the generic package. At runtime, OpenBLAS will not use more threads than there are available cores. (LP: #817212) -- Sébastien Villemot Sat, 02 Mar 2013 17:46:01 +0100 openblas (0.2.6-1~exp1) experimental; urgency=low * New upstream release + Fixes use of uninitialized values in vectorized sgemv on i386. (Closes: #696000) + Fixes the overflowing buffer bug of gemv. (Closes: #697231) + Fixes the the overflowing buffer bug of multithreading hbmv and sbmv. (Closes: #697232) + Fixes crash on 32-bit Athlon CPUs. (Closes: #697233) + Better handling of unknown amd64 CPUs (e.g. within qemu). (Closes: #697235) * Disable processor affinity. (Closes: #684338) * Force the maximum number of threads to 2 when building the generic package (as we do for ATLAS). Otherwise, it is the number of cores on the build machine which is chosen instead. * README.Debian: improve instructions for building the custom package -- Sébastien Villemot Sat, 02 Mar 2013 15:09:09 +0100 openblas (0.2.5-1~exp1) experimental; urgency=low [ Sébastien Villemot ] * Update debian/watch * Use my @debian.org email address * Remove obsolete DM-Upload-Allowed flag [ Sylvestre Ledru ] * New upstream release * generic_profile.diff removed (applied upstream) -- Sylvestre Ledru Sat, 08 Dec 2012 16:24:30 +0100 openblas (0.2.4-1~exp1) experimental; urgency=low * New upstream release -- Sylvestre Ledru Mon, 15 Oct 2012 20:15:49 +0200 openblas (0.2.3-1~exp1) experimental; urgency=low * New upstream release + Kills threads when unloading the library (Closes: #673061) -- Sébastien Villemot Mon, 20 Aug 2012 12:18:07 +0000 openblas (0.2.2-1~exp1) experimental; urgency=low * New upstream release * hurd.diff, hurd_gettid.diff, kfreebsd.diff, sparc.diff: remove patches, applied upstream * debian/rules: implement support for DEB_BUILD_OPTIONS=noopt -- Sébastien Villemot Wed, 11 Jul 2012 16:32:27 +0000 openblas (0.2.1-1~exp1) experimental; urgency=low * New upstream release -- Sylvestre Ledru Mon, 02 Jul 2012 02:24:00 +0200 openblas (0.1.1-5) unstable; urgency=low * libopenblas-base.prerm: avoid crash if libblas.so.3gf already deleted * Add myself to Uploaders * Set DM-Upload-Allowed to yes -- Sébastien Villemot Sun, 24 Jun 2012 16:15:11 +0000 openblas (0.1.1-4) unstable; urgency=low * Fix the FTBFS under KFreebsd. Thanks to Sébastien Villemot (Closes: #677165) -- Sylvestre Ledru Wed, 13 Jun 2012 10:29:51 +0200 openblas (0.1.1-3) unstable; urgency=low * Upload in unstable -- Sylvestre Ledru Sat, 02 Jun 2012 17:33:58 +0200 openblas (0.1.1-3~exp4) experimental; urgency=low * Rollback previous upload -- Sylvestre Ledru Fri, 01 Jun 2012 11:04:51 +0200 openblas (0.1.1-3~exp3) experimental; urgency=low * Fix a bad alternative link to the old library name -- Sylvestre Ledru Fri, 01 Jun 2012 10:28:09 +0200 openblas (0.1.1-3~exp2) experimental; urgency=low * Fix FTBFS (Closes: #666277) -- Sylvestre Ledru Wed, 30 May 2012 14:52:40 +0200 openblas (0.1.1-3~exp1) experimental; urgency=low * Replaces and Breaks updated against the right versions of other impacted packages -- Sylvestre Ledru Mon, 21 May 2012 13:13:46 +0200 openblas (0.1.1-2) experimental; urgency=low * Moved removal from postinst to preinst -- Sylvestre Ledru Fri, 18 May 2012 15:58:32 +0200 openblas (0.1.1-1) experimental; urgency=low * New upstream release * Remove libblas.so.3gf references before the install -- Sylvestre Ledru Mon, 14 May 2012 18:47:53 +0200 openblas (0.1.0-1) experimental; urgency=low * New upstream release * Standards-Version updated to 3.9.3 -- Sylvestre Ledru Wed, 04 Apr 2012 14:31:34 +0200 openblas (0.1alpha2.5-1~exp2) experimental; urgency=low * Join modifications with blas, lapack, atlas and openblas. Declare the replacements of all *3gf blas & lapack implementation (See bug #660607) -- Sylvestre Ledru Mon, 20 Feb 2012 19:33:41 +0100 openblas (0.1alpha2.5-1~exp1) experimental; urgency=low * New upstream release * Fix an upgrade issue (Closes: #659786) -- Sylvestre Ledru Sun, 19 Feb 2012 15:50:41 +0100 openblas (0.1alpha2.3-1~exp1) experimental; urgency=low * New upstream release Fix FTBFS under KfreeBSD (Closes: #635552) -- Sylvestre Ledru Mon, 05 Sep 2011 15:24:24 +0200 openblas (0.1alpha2.2-4~exp1) experimental; urgency=low * Rename the reference libblas.so.3gf to libblas.so.3 -- Sylvestre Ledru Sat, 03 Sep 2011 20:24:39 +0200 openblas (0.1alpha2.2-3) unstable; urgency=low * Same player try again: the lib has different names with build with the dynamic arch or not. -- Sylvestre Ledru Tue, 26 Jul 2011 18:40:04 +0200 openblas (0.1alpha2.2-2) unstable; urgency=low * Disable dynamic arch on non amd64 / i386 archs (Closes: #631887) * Fix a FTBFS under hurd -- Sylvestre Ledru Tue, 26 Jul 2011 16:56:27 +0200 openblas (0.1alpha2.2-1) unstable; urgency=low * New upstream release (Closes: #631886) -- Sylvestre Ledru Mon, 25 Jul 2011 10:46:44 +0200 openblas (0.1alpha2.1-1) unstable; urgency=low * New upstream release * gfortran added a build dep -- Sylvestre Ledru Wed, 29 Jun 2011 21:18:48 +0200 openblas (0.1alpha2-1) unstable; urgency=low * New upstream release * Good news: use DYNAMIC_ARCH=1 in the build option of OpenBLAS/Gotoblas to support multiple architecture. All kernel will be included in the library and dynamically switched the best architecture at run time. -- Sylvestre Ledru Thu, 23 Jun 2011 10:44:43 +0200 openblas (0.1alpha1-4) experimental; urgency=low * Fix FTBFS under kfreebsd, sparc & hurd. * Limit architectures to amd64 i386 ia64 powerpc powerpcspe ppc64 kfreebsd-i386 kfreebsd-amd64 hurd-i386 sparc * cherry-pick from upstream to fail build when the arch is not supported -- Sylvestre Ledru Mon, 30 May 2011 17:05:23 +0200 openblas (0.1alpha1-3) experimental; urgency=low * clean target now really cleans everything. Thanks to Ryan Lovett (Closes: #624253) -- Sylvestre Ledru Wed, 04 May 2011 18:03:10 +0200 openblas (0.1alpha1-2) experimental; urgency=low * Update the README.Debian file * watch file removed for now (it was the one from atlas) * Fix a custom build issue (thanks to Ryan Lovett for the bug report) * Fix a FTBFS under sparc * Switch to dpkg-source 3.0 (quilt) format * Standards-Version updated to version 3.9.2 -- Sylvestre Ledru Sat, 16 Apr 2011 15:23:22 +0200 openblas (0.1alpha1-1) experimental; urgency=low * Initial version (Closes: #605456) -- Sylvestre Ledru Fri, 04 Feb 2011 18:28:26 +0100 debian/libopenblas-dev.prerm0000664000000000000000000000023512317530614013307 0ustar #!/bin/sh set -e if [ "$1" != "upgrade" ] then update-alternatives --remove libblas.so \ /usr/lib/openblas-base/libblas.so fi #DEBHELPER# exit 0 debian/libopenblas-base.prerm0000664000000000000000000000024112317530614013440 0ustar #!/bin/sh set -e if [ "$1" != "upgrade" ] then update-alternatives --remove libblas.so.3 \ /usr/lib/openblas-base/libblas.so.3 fi #DEBHELPER# exit 0 debian/libopenblas-base.install0000664000000000000000000000007612317530614013767 0ustar libopenblas.so.0 usr/lib/ libblas.so.3 usr/lib/openblas-base/ debian/source/0000775000000000000000000000000012317530614010472 5ustar debian/source/format0000664000000000000000000000001412317530614011700 0ustar 3.0 (quilt) debian/compat0000664000000000000000000000000112317530614010367 0ustar 9debian/libopenblas-dev.postinst0000664000000000000000000000051212317530614014043 0ustar #! /bin/sh set -e update-alternatives --install /usr/lib/libblas.so libblas.so \ /usr/lib/openblas-base/libblas.so 40 \ --slave /usr/lib/libblas.a libblas.a \ /usr/lib/openblas-base/libblas.a # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/patches/0000775000000000000000000000000012317530614010621 5ustar debian/patches/series0000664000000000000000000000034412317530614012037 0ustar kfreebsd-soname.patch libblas3-soname.patch test-custom-package.patch qemu-athlon.patch remove-openmp-warning.patch fork-handler.patch dgemv-crash.patch wrong-parameter-for-zherk-zher2.patch computational-error-of-dgemv_n.patch debian/patches/qemu-athlon.patch0000664000000000000000000000316212317530614014076 0ustar Description: Avoid failure on qemu guests declaring an Athlon CPU without 3dnow! babin.debian.org is a qemu guest which declares the CPU model and family of an Athlon CPU. The dynamic engine of OpenBLAS recognizes that machine as an Athlon CPU and uses the corresponding kernel. However, that machine does not have 3dnow! extensions, and OpenBLAS therefore crashes because of illegal instructions. . The present patch verifies that, on machines declaring an Athlon CPU model and family, the 3dnow and 3dnowext feature flags are indeed present. If they are not, it fallbacks on the most generic x86 kernel. Author: Sébastien Villemot Bug: https://github.com/xianyi/OpenBLAS/issues/272 Applied-Upstream: https://github.com/xianyi/OpenBLAS/commit/eae4cfa3f67e2ff18c301087172bf5e36bdc54f1 Last-Update: 2013-08-28 --- This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ --- a/driver/others/dynamic.c +++ b/driver/others/dynamic.c @@ -224,7 +224,19 @@ } if (vendor == VENDOR_AMD){ - if (family <= 0xe) return &gotoblas_ATHLON; + if (family <= 0xe) { + // Verify that CPU has 3dnow and 3dnowext before claiming it is Athlon + cpuid(0x80000000, &eax, &ebx, &ecx, &edx); + if (eax & 0xffff >= 0x01) { + cpuid(0x80000001, &eax, &ebx, &ecx, &edx); + if ((edx & (1 << 30)) == 0 || (edx & (1 << 31)) == 0) + return NULL; + } + else + return NULL; + + return &gotoblas_ATHLON; + } if (family == 0xf){ if ((exfamily == 0) || (exfamily == 2)) { if (ecx & (1 << 0)) return &gotoblas_OPTERON_SSE3; debian/patches/libblas3-soname.patch0000664000000000000000000000210112317530614014607 0ustar Description: Create a libblas.so.3 with the right SONAME That one is needed for the update-alternatives system. The code is inserted in the Linux section, which is also the kFreeBSD section because of kfreebsd-soname.patch. Author: Sébastien Villemot Forwarded: not-needed Last-Update: 2014-02-20 --- This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ --- a/exports/Makefile +++ b/exports/Makefile @@ -117,7 +117,7 @@ dllinit.$(SUFFIX) : dllinit.c ifeq ($(OSNAME), $(filter $(OSNAME),Linux FreeBSD)) -so : ../$(LIBSONAME) +so : ../$(LIBSONAME) ../libblas.so.3 ../$(LIBSONAME) : ../$(LIBNAME) linux.def linktest.c $(CC) $(CFLAGS) $(LDFLAGS) -shared -o ../$(LIBSONAME) \ @@ -131,6 +131,11 @@ else endif rm -f linktest +../libblas.so.3 : ../$(LIBNAME) linux.def linktest.c + $(CC) $(CFLAGS) $(LDFLAGS) -shared -o $@ \ + -Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive \ + -Wl,--retain-symbols-file=linux.def -Wl,-soname,libblas.so.3 $(EXTRALIB) + endif #http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or debian/patches/computational-error-of-dgemv_n.patch0000664000000000000000000001601712317530614017674 0ustar Origin: 2d557eb1e05eb, 9a557e90dafe Description: fix wrong result of dgemv_n Bug: https://github.com/xianyi/OpenBLAS/issues/340 --- a/kernel/x86_64/dgemv_n.S +++ b/kernel/x86_64/dgemv_n.S @@ -111,6 +111,9 @@ #define MM M #endif +#define TMP_M %r15 +#define Y2 %rbx + PROLOGUE PROFCODE @@ -170,8 +173,9 @@ jge .L00t movq MMM,M - addq I,M + addq M, I jle .L999x + movq I, M .L00t: movq XX,X @@ -2463,21 +2467,23 @@ cmpq Y, BUFFER je .L999 #endif - + movq M, TMP_M + movq Y, Y1 + cmpq $SIZE, INCY jne .L950 - testq $SIZE, Y + testq $SIZE, Y1 je .L910 - movsd (Y), %xmm0 + movsd (Y1), %xmm0 addsd (BUFFER), %xmm0 - movsd %xmm0, (Y) + movsd %xmm0, (Y1) - addq $SIZE, Y + addq $SIZE, Y1 addq $SIZE, BUFFER - decq M + decq TMP_M jle .L999 ALIGN_4 @@ -2485,20 +2491,20 @@ testq $SIZE, BUFFER jne .L920 - movq M, %rax + movq TMP_M, %rax sarq $3, %rax jle .L914 ALIGN_3 .L912: #ifdef PREFETCHW - PREFETCHW (PREFETCHSIZE) * 4 + PREOFFSET(Y) + PREFETCHW (PREFETCHSIZE) * 4 + PREOFFSET(Y1) #endif - movapd 0 * SIZE(Y), %xmm0 - movapd 2 * SIZE(Y), %xmm1 - movapd 4 * SIZE(Y), %xmm2 - movapd 6 * SIZE(Y), %xmm3 + movapd 0 * SIZE(Y1), %xmm0 + movapd 2 * SIZE(Y1), %xmm1 + movapd 4 * SIZE(Y1), %xmm2 + movapd 6 * SIZE(Y1), %xmm3 movapd 0 * SIZE(BUFFER), %xmm4 movapd 2 * SIZE(BUFFER), %xmm5 @@ -2514,12 +2520,12 @@ addpd %xmm6, %xmm2 addpd %xmm7, %xmm3 - movapd %xmm0, 0 * SIZE(Y) - movapd %xmm1, 2 * SIZE(Y) - movapd %xmm2, 4 * SIZE(Y) - movapd %xmm3, 6 * SIZE(Y) + movapd %xmm0, 0 * SIZE(Y1) + movapd %xmm1, 2 * SIZE(Y1) + movapd %xmm2, 4 * SIZE(Y1) + movapd %xmm3, 6 * SIZE(Y1) - addq $8 * SIZE, Y + addq $8 * SIZE, Y1 addq $8 * SIZE, BUFFER decq %rax @@ -2527,14 +2533,14 @@ ALIGN_3 .L914: - testq $7, M + testq $7, TMP_M jle .L999 - testq $4, M + testq $4, TMP_M jle .L915 - movapd 0 * SIZE(Y), %xmm0 - movapd 2 * SIZE(Y), %xmm1 + movapd 0 * SIZE(Y1), %xmm0 + movapd 2 * SIZE(Y1), %xmm1 movapd 0 * SIZE(BUFFER), %xmm4 movapd 2 * SIZE(BUFFER), %xmm5 @@ -2542,40 +2548,40 @@ addpd %xmm4, %xmm0 addpd %xmm5, %xmm1 - movapd %xmm0, 0 * SIZE(Y) - movapd %xmm1, 2 * SIZE(Y) + movapd %xmm0, 0 * SIZE(Y1) + movapd %xmm1, 2 * SIZE(Y1) - addq $4 * SIZE, Y + addq $4 * SIZE, Y1 addq $4 * SIZE, BUFFER ALIGN_3 .L915: - testq $2, M + testq $2, TMP_M jle .L916 - movapd (Y), %xmm0 + movapd (Y1), %xmm0 movapd (BUFFER), %xmm4 addpd %xmm4, %xmm0 - movapd %xmm0, (Y) + movapd %xmm0, (Y1) - addq $2 * SIZE, Y + addq $2 * SIZE, Y1 addq $2 * SIZE, BUFFER ALIGN_3 .L916: - testq $1, M + testq $1, TMP_M jle .L999 - movsd (Y), %xmm0 + movsd (Y1), %xmm0 movsd 0 * SIZE(BUFFER), %xmm4 addsd %xmm4, %xmm0 - movlpd %xmm0, (Y) + movlpd %xmm0, (Y1) ALIGN_3 jmp .L999 @@ -2584,20 +2590,20 @@ .L920: movapd -1 * SIZE(BUFFER), %xmm4 - movq M, %rax + movq TMP_M, %rax sarq $3, %rax jle .L924 ALIGN_3 .L922: #ifdef PREFETCHW - PREFETCHW (PREFETCHSIZE) * 4 + PREOFFSET(Y) + PREFETCHW (PREFETCHSIZE) * 4 + PREOFFSET(Y1) #endif - movapd 0 * SIZE(Y), %xmm0 - movapd 2 * SIZE(Y), %xmm1 - movapd 4 * SIZE(Y), %xmm2 - movapd 6 * SIZE(Y), %xmm3 + movapd 0 * SIZE(Y1), %xmm0 + movapd 2 * SIZE(Y1), %xmm1 + movapd 4 * SIZE(Y1), %xmm2 + movapd 6 * SIZE(Y1), %xmm3 movapd 1 * SIZE(BUFFER), %xmm5 movapd 3 * SIZE(BUFFER), %xmm6 @@ -2618,14 +2624,14 @@ addpd %xmm6, %xmm2 addpd %xmm7, %xmm3 - movapd %xmm0, 0 * SIZE(Y) - movapd %xmm1, 2 * SIZE(Y) - movapd %xmm2, 4 * SIZE(Y) - movapd %xmm3, 6 * SIZE(Y) + movapd %xmm0, 0 * SIZE(Y1) + movapd %xmm1, 2 * SIZE(Y1) + movapd %xmm2, 4 * SIZE(Y1) + movapd %xmm3, 6 * SIZE(Y1) movapd %xmm8, %xmm4 - addq $8 * SIZE, Y + addq $8 * SIZE, Y1 addq $8 * SIZE, BUFFER decq %rax @@ -2633,14 +2639,14 @@ ALIGN_3 .L924: - testq $7, M + testq $7, TMP_M jle .L999 - testq $4, M + testq $4, TMP_M jle .L925 - movapd 0 * SIZE(Y), %xmm0 - movapd 2 * SIZE(Y), %xmm1 + movapd 0 * SIZE(Y1), %xmm0 + movapd 2 * SIZE(Y1), %xmm1 movapd 1 * SIZE(BUFFER), %xmm5 movapd 3 * SIZE(BUFFER), %xmm6 @@ -2651,20 +2657,20 @@ addpd %xmm4, %xmm0 addpd %xmm5, %xmm1 - movapd %xmm0, 0 * SIZE(Y) - movapd %xmm1, 2 * SIZE(Y) + movapd %xmm0, 0 * SIZE(Y1) + movapd %xmm1, 2 * SIZE(Y1) movapd %xmm6, %xmm4 - addq $4 * SIZE, Y + addq $4 * SIZE, Y1 addq $4 * SIZE, BUFFER ALIGN_3 .L925: - testq $2, M + testq $2, TMP_M jle .L926 - movapd (Y), %xmm0 + movapd (Y1), %xmm0 movapd 1 * SIZE(BUFFER), %xmm5 @@ -2672,25 +2678,25 @@ addpd %xmm4, %xmm0 - movapd %xmm0, (Y) + movapd %xmm0, (Y1) movaps %xmm5, %xmm4 - addq $2 * SIZE, Y + addq $2 * SIZE, Y1 addq $2 * SIZE, BUFFER ALIGN_3 .L926: - testq $1, M + testq $1, TMP_M jle .L999 - movsd (Y), %xmm0 + movsd (Y1), %xmm0 shufpd $1, %xmm4, %xmm4 addsd %xmm4, %xmm0 - movlpd %xmm0, (Y) + movlpd %xmm0, (Y1) ALIGN_3 jmp .L999 @@ -2700,53 +2706,53 @@ testq $SIZE, BUFFER je .L960 - movsd (Y), %xmm0 + movsd (Y1), %xmm0 addsd (BUFFER), %xmm0 - movsd %xmm0, (Y) + movsd %xmm0, (Y1) - addq INCY, Y + addq INCY, Y1 addq $SIZE, BUFFER - decq M + decq TMP_M jle .L999 ALIGN_4 .L960: - movq Y, Y1 + movq Y1, Y2 - movq M, %rax + movq TMP_M, %rax sarq $3, %rax jle .L964 ALIGN_3 .L962: - movsd (Y), %xmm0 - addq INCY, Y - movhpd (Y), %xmm0 - addq INCY, Y + movsd (Y2), %xmm0 + addq INCY, Y2 + movhpd (Y2), %xmm0 + addq INCY, Y2 movapd 0 * SIZE(BUFFER), %xmm4 - movsd (Y), %xmm1 - addq INCY, Y - movhpd (Y), %xmm1 - addq INCY, Y + movsd (Y2), %xmm1 + addq INCY, Y2 + movhpd (Y2), %xmm1 + addq INCY, Y2 movapd 2 * SIZE(BUFFER), %xmm5 - movsd (Y), %xmm2 - addq INCY, Y - movhpd (Y), %xmm2 - addq INCY, Y + movsd (Y2), %xmm2 + addq INCY, Y2 + movhpd (Y2), %xmm2 + addq INCY, Y2 movapd 4 * SIZE(BUFFER), %xmm6 addpd %xmm4, %xmm0 - movsd (Y), %xmm3 - addq INCY, Y - movhpd (Y), %xmm3 - addq INCY, Y + movsd (Y2), %xmm3 + addq INCY, Y2 + movhpd (Y2), %xmm3 + addq INCY, Y2 movapd 6 * SIZE(BUFFER), %xmm7 @@ -2781,23 +2787,23 @@ ALIGN_3 .L964: - testq $7, M + testq $7, TMP_M jle .L999 - testq $4, M + testq $4, TMP_M jle .L965 - movsd (Y), %xmm0 - addq INCY, Y - movhpd (Y), %xmm0 - addq INCY, Y + movsd (Y2), %xmm0 + addq INCY, Y2 + movhpd (Y2), %xmm0 + addq INCY, Y2 movapd 0 * SIZE(BUFFER), %xmm4 - movsd (Y), %xmm1 - addq INCY, Y - movhpd (Y), %xmm1 - addq INCY, Y + movsd (Y2), %xmm1 + addq INCY, Y2 + movhpd (Y2), %xmm1 + addq INCY, Y2 movapd 2 * SIZE(BUFFER), %xmm5 @@ -2817,13 +2823,13 @@ ALIGN_3 .L965: - testq $2, M + testq $2, TMP_M jle .L966 - movsd (Y), %xmm0 - addq INCY, Y - movhpd (Y), %xmm0 - addq INCY, Y + movsd (Y2), %xmm0 + addq INCY, Y2 + movhpd (Y2), %xmm0 + addq INCY, Y2 movapd 0 * SIZE(BUFFER), %xmm4 @@ -2838,10 +2844,10 @@ ALIGN_3 .L966: - testq $1, M + testq $1, TMP_M jle .L999 - movsd (Y), %xmm0 + movsd (Y2), %xmm0 movsd 0 * SIZE(BUFFER), %xmm4 @@ -2853,6 +2859,9 @@ .L999: leaq (, M, SIZE), %rax addq %rax,AA + movq STACK_INCY, INCY + imulq INCY, %rax + addq %rax, Y jmp .L0t ALIGN_4 debian/patches/dgemv-crash.patch0000664000000000000000000000045512317530614014046 0ustar Bug: https://github.com/xianyi/OpenBLAS/issues/304 Description: Fixed buffer overflow bug in kernel/x86_64/dgemv_t.S Origin: beffee7d914 --- a/kernel/x86_64/dgemv_t.S +++ b/kernel/x86_64/dgemv_t.S @@ -171,7 +171,7 @@ .L0x: xorq M,M addq $1,M - salq $22,M + salq $21,M subq M,MMM jge .L00 debian/patches/kfreebsd-soname.patch0000664000000000000000000000145012317530614014707 0ustar Description: Ensure that the shared library under kFreeBSD has a SONAME Simply use the same code for shared object creation than under Linux. Author: Sébastien Villemot Forwarded: not-needed Last-Update: 2014-02-20 --- This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ --- a/exports/Makefile +++ b/exports/Makefile @@ -115,7 +115,7 @@ symbol.$(SUFFIX) : symbol.S dllinit.$(SUFFIX) : dllinit.c $(CC) $(CFLAGS) -c -o $(@F) -s $< -ifeq ($(OSNAME), Linux) +ifeq ($(OSNAME), $(filter $(OSNAME),Linux FreeBSD)) so : ../$(LIBSONAME) @@ -134,7 +134,7 @@ endif endif #http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or -ifeq ($(OSNAME), $(filter $(OSNAME),FreeBSD NetBSD)) +ifeq ($(OSNAME), $(filter $(OSNAME),NetBSD)) so : ../$(LIBSONAME) debian/patches/fork-handler.patch0000664000000000000000000000562312317530614014224 0ustar Description: Add fork handler This patches fixes hangs of OpenBLAS when called from a program using OpenMP. Note that this will only work if OpenBLAS is compiled with pthreads (i.e. no OpenMP). Origin: upstream, https://github.com/xianyi/OpenBLAS/commit/138a8413903776242cb3c184df9838ba54d04044 Bug: https://github.com/xianyi/OpenBLAS/issues/294 Bug-Debian: http://bugs.debian.org/739331 Last-Update: 2014-02-20 --- This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ --- a/driver/others/blas_server.c +++ b/driver/others/blas_server.c @@ -74,6 +74,21 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF #include #endif +#ifndef likely +#ifdef __GNUC__ +#define likely(x) __builtin_expect(!!(x), 1) +#else +#define likely(x) (x) +#endif +#endif +#ifndef unlikely +#ifdef __GNUC__ +#define unlikely(x) __builtin_expect(!!(x), 0) +#else +#define unlikely(x) (x) +#endif +#endif + #ifdef SMP_SERVER #undef MONITOR @@ -584,6 +599,10 @@ static BLASULONG exec_queue_lock = 0; int exec_blas_async(BLASLONG pos, blas_queue_t *queue){ +#ifdef SMP_SERVER + // Handle lazy re-init of the thread-pool after a POSIX fork + if (unlikely(blas_server_avail == 0)) blas_thread_init(); +#endif BLASLONG i = 0; blas_queue_t *current = queue; #if defined(OS_LINUX) && !defined(NO_AFFINITY) && !defined(PARAMTEST) @@ -708,7 +727,11 @@ int exec_blas_async_wait(BLASLONG num, b /* Execute Threads */ int exec_blas(BLASLONG num, blas_queue_t *queue){ - int (*routine)(blas_arg_t *, void *, void *, double *, double *, BLASLONG); +#ifdef SMP_SERVER + // Handle lazy re-init of the thread-pool after a POSIX fork + if (unlikely(blas_server_avail == 0)) blas_thread_init(); +#endif + int (*routine)(blas_arg_t *, void *, void *, double *, double *, BLASLONG); #ifdef TIMING_DEBUG BLASULONG start, stop; --- a/driver/others/memory.c +++ b/driver/others/memory.c @@ -253,6 +253,21 @@ int goto_get_num_procs (void) { return blas_cpu_number; } +void openblas_fork_handler() +{ + // This handler shuts down the OpenBLAS-managed PTHREAD pool when OpenBLAS is + // built with "make USE_OPENMP=0". + // Hanging can still happen when OpenBLAS is built against the libgomp + // implementation of OpenMP. The problem is tracked at: + // http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60035 + // In the mean time build with USE_OPENMP=0 or link against another + // implementation of OpenMP. + int err; + err = pthread_atfork (BLASFUNC(blas_thread_shutdown), NULL, NULL); + if(err != 0) + fprintf(stderr, "OpenBLAS Warning ... cannot install fork handler. You may meet hang after fork.\n"); +} + int blas_get_cpu_number(void){ char *p; #if defined(OS_LINUX) || defined(OS_WINDOWS) || defined(OS_FREEBSD) || defined(OS_DARWIN) @@ -1268,6 +1283,9 @@ void CONSTRUCTOR gotoblas_init(void) { if (gotoblas_initialized) return; +#ifdef SMP + openblas_fork_handler(); +#endif #ifdef PROFILE moncontrol (0); debian/patches/test-custom-package.patch0000664000000000000000000000101312317530614015515 0ustar Description: Run testsuite even when compiling custom package Author: Sébastien Villemot Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=677866 Forwarded: not-needed Last-Update: 2013-07-26 --- This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ --- a/Makefile +++ b/Makefile @@ -108,7 +108,6 @@ tests : ifndef NOFORTRAN -ifndef TARGET ifndef CROSS touch $(LIBNAME) ifndef NO_FBLAS @@ -122,7 +121,6 @@ endif endif endif -endif libs : ifeq ($(CORE), UNKOWN) debian/patches/remove-openmp-warning.patch0000664000000000000000000000156112317530614016101 0ustar Description: Remove warning about OpenMP This warning is annoying when the library is built with pthreads. See #684344 Author: Sébastien Villemot Forwarded: no Last-Update: 2014-02-17 --- This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ --- a/driver/others/blas_server.c +++ b/driver/others/blas_server.c @@ -719,16 +719,6 @@ int exec_blas(BLASLONG num, blas_queue_t #ifdef SMP_DEBUG fprintf(STDERR, "Exec_blas is called. Number of executing threads : %ld\n", num); #endif - -#ifdef __ELF__ - if (omp_in_parallel && (num > 1)) { - if (omp_in_parallel() > 0) { - fprintf(stderr, - "OpenBLAS Warning : Detect OpenMP Loop and this application may hang. " - "Please rebuild the library with USE_OPENMP=1 option.\n"); - } - } -#endif if ((num > 1) && queue -> next) exec_blas_async(1, queue -> next); debian/patches/wrong-parameter-for-zherk-zher2.patch0000664000000000000000000000142212317530614017710 0ustar Description: Detect the wrong parameter for zherk/zher2k. Bug: https://github.com/xianyi/OpenBLAS/issues/333 Origin: 3e0a7b9 --- a/interface/syr2k.c +++ b/interface/syr2k.c @@ -146,8 +146,10 @@ void NAME(char *UPLO, char *TRANS, if (uplo_arg == 'L') uplo = 1; if (trans_arg == 'N') trans = 0; +#ifndef HEMM if (trans_arg == 'T') trans = 1; if (trans_arg == 'R') trans = 0; +#endif if (trans_arg == 'C') trans = 1; nrowa = args.n; --- a/interface/syrk.c +++ b/interface/syrk.c @@ -149,8 +149,10 @@ void NAME(char *UPLO, char *TRANS, if (uplo_arg == 'L') uplo = 1; if (trans_arg == 'N') trans = 0; +#ifndef HEMM if (trans_arg == 'T') trans = 1; if (trans_arg == 'R') trans = 0; +#endif if (trans_arg == 'C') trans = 1; nrowa = args.n; debian/copyright0000664000000000000000000004040212317530614011125 0ustar This package was debianized by Sylvestre Ledru on Fri, 25 Mar 2011 20:22:27 +0100 It was downloaded from https://github.com/xianyi/OpenBLAS Copyright: (C) Copyright 2009, 2010 The University of Texas at Austin. Files: ./benchmark/cholesky.c ./benchmark/linpack.c ./common_alpha.h ./common.h ./common_ia64.h ./common_interface.h ./common_lapack.h ./common_level1.h ./common_level2.h ./common_level3.h ./common_linux.h ./common_macro.h ./common_param.h ./common_power.h ./common_sparc.h ./common_thread.h ./common_x86_64.h ./common_x86.h ./cpuid_alpha.c ./cpuid.h ./cpuid_ia64.c ./cpuid_power.c ./cpuid_sparc.c ./cpuid_x86.c ./driver/level2/gbmv_k.c ./driver/level2/gbmv_thread.c ./driver/level2/gemv_thread.c ./driver/level2/ger_thread.c ./driver/level2/sbmv_k.c ./driver/level2/sbmv_thread.c ./driver/level2/spmv_k.c ./driver/level2/spmv_thread.c ./driver/level2/spr2_k.c ./driver/level2/spr2_thread.c ./driver/level2/spr_k.c ./driver/level2/spr_thread.c ./driver/level2/symv_thread.c ./driver/level2/syr2_k.c ./driver/level2/syr2_thread.c ./driver/level2/syr_k.c ./driver/level2/syr_thread.c ./driver/level2/tbmv_L.c ./driver/level2/tbmv_thread.c ./driver/level2/tbmv_U.c ./driver/level2/tbsv_L.c ./driver/level2/tbsv_U.c ./driver/level2/tpmv_L.c ./driver/level2/tpmv_thread.c ./driver/level2/tpmv_U.c ./driver/level2/tpsv_L.c ./driver/level2/tpsv_U.c ./driver/level2/trmv_L.c ./driver/level2/trmv_thread.c ./driver/level2/trmv_U.c ./driver/level2/trsv_L.c ./driver/level2/trsv_U.c ./driver/level2/zgbmv_k.c ./driver/level2/zhbmv_k.c ./driver/level2/zher2_k.c ./driver/level2/zher_k.c ./driver/level2/zhpmv_k.c ./driver/level2/zhpr2_k.c ./driver/level2/zhpr_k.c ./driver/level2/zsbmv_k.c ./driver/level2/zspmv_k.c ./driver/level2/zspr2_k.c ./driver/level2/zspr_k.c ./driver/level2/zsyr2_k.c ./driver/level2/zsyr_k.c ./driver/level2/ztbmv_L.c ./driver/level2/ztbmv_U.c ./driver/level2/ztbsv_L.c ./driver/level2/ztbsv_U.c ./driver/level2/ztpmv_L.c ./driver/level2/ztpmv_U.c ./driver/level2/ztpsv_L.c ./driver/level2/ztpsv_U.c ./driver/level2/ztrmv_L.c ./driver/level2/ztrmv_U.c ./driver/level2/ztrsv_L.c ./driver/level2/ztrsv_U.c ./driver/level3/gemm3m.c ./driver/level3/gemm3m_level3.c ./driver/level3/gemm.c ./driver/level3/gemm_thread_m.c ./driver/level3/gemm_thread_mn.c ./driver/level3/gemm_thread_n.c ./driver/level3/gemm_thread_variable.c ./driver/level3/hemm3m_k.c ./driver/level3/level3.c ./driver/level3/level3_gemm3m_thread.c ./driver/level3/level3_syr2k.c ./driver/level3/level3_syrk.c ./driver/level3/level3_syrk_threaded.c ./driver/level3/level3_thread.c ./driver/level3/symm3m_k.c ./driver/level3/symm_k.c ./driver/level3/syr2k_k.c ./driver/level3/syr2k_kernel.c ./driver/level3/syrk_k.c ./driver/level3/syrk_kernel.c ./driver/level3/syrk_thread.c ./driver/level3/trmm_L.c ./driver/level3/trmm_R.c ./driver/level3/trsm_L.c ./driver/level3/trsm_R.c ./driver/level3/zhemm_k.c ./driver/level3/zher2k_k.c ./driver/level3/zher2k_kernel.c ./driver/level3/zherk_beta.c ./driver/level3/zherk_k.c ./driver/level3/zherk_kernel.c ./driver/level3/zsyrk_beta.c ./driver/mapper/mapper.c ./driver/others/abs.c ./driver/others/blas_l1_thread.c ./driver/others/blas_server_omp.c ./driver/others/blas_server_win32.c ./driver/others/divtable.c ./driver/others/dynamic.c ./driver/others/lamc3.c ./driver/others/lamch.c ./driver/others/lsame.c ./driver/others/memory_qalloc.c ./driver/others/parameter.c ./driver/others/profile.c ./driver/others/xerbla.c ./exports/dllinit.c ./interface/asum.c ./interface/axpy.c ./interface/copy.c ./interface/dot.c ./interface/dsdot.c ./interface/gbmv.c ./interface/gemm.c ./interface/gemv.c ./interface/ger.c ./interface/gesv.c ./interface/getf2.c ./interface/getrf.c ./interface/getrs.c ./interface/imax.c ./interface/larf.c ./interface/laswp.c ./interface/lauu2.c ./interface/lauum.c ./interface/max.c ./interface/nrm2.c ./interface/potf2.c ./interface/potrf.c ./interface/potri.c ./interface/rot.c ./interface/sbmv.c ./interface/scal.c ./interface/sdsdot.c ./interface/spmv.c ./interface/spr2.c ./interface/spr.c ./interface/swap.c ./interface/symm.c ./interface/symv.c ./interface/syr2.c ./interface/syr2k.c ./interface/syr.c ./interface/syrk.c ./interface/tbmv.c ./interface/tbsv.c ./interface/tpmv.c ./interface/tpsv.c ./interface/trmv.c ./interface/trsm.c ./interface/trsv.c ./interface/trti2.c ./interface/trtri.c ./interface/zaxpy.c ./interface/zdot.c ./interface/zgbmv.c ./interface/zgemv.c ./interface/zger.c ./interface/zgetf2.c ./interface/zgetrf.c ./interface/zgetrs.c ./interface/zhbmv.c ./interface/zhemv.c ./interface/zher2.c ./interface/zher.c ./interface/zhpmv.c ./interface/zhpr2.c ./interface/zhpr.c ./interface/zlaswp.c ./interface/zlauu2.c ./interface/zlauum.c ./interface/zpotf2.c ./interface/zpotrf.c ./interface/zpotri.c ./interface/zrot.c ./interface/zsbmv.c ./interface/zscal.c ./interface/zspmv.c ./interface/zspr2.c ./interface/zspr.c ./interface/zswap.c ./interface/zsymv.c ./interface/zsyr2.c ./interface/zsyr.c ./interface/ztbmv.c ./interface/ztbsv.c ./interface/ztpmv.c ./interface/ztpsv.c ./interface/ztrmv.c ./interface/ztrsv.c ./interface/ztrti2.c ./interface/ztrtri.c ./kernel/generic/cabs.c ./kernel/generic/gemm_beta.c ./kernel/generic/gemm_ncopy_16.c ./kernel/generic/gemm_ncopy_1.c ./kernel/generic/gemm_ncopy_2.c ./kernel/generic/gemm_ncopy_4.c ./kernel/generic/gemm_ncopy_8.c ./kernel/generic/gemm_tcopy_16.c ./kernel/generic/gemm_tcopy_1.c ./kernel/generic/gemm_tcopy_2.c ./kernel/generic/gemm_tcopy_4.c ./kernel/generic/gemm_tcopy_8.c ./kernel/generic/ger.c ./kernel/generic/laswp_ncopy_1.c ./kernel/generic/laswp_ncopy_2.c ./kernel/generic/laswp_ncopy_4.c ./kernel/generic/laswp_ncopy_8.c ./kernel/generic/lsame.c ./kernel/generic/neg_tcopy_16.c ./kernel/generic/neg_tcopy_1.c ./kernel/generic/neg_tcopy_2.c ./kernel/generic/neg_tcopy_4.c ./kernel/generic/neg_tcopy_8.c ./kernel/generic/symm_lcopy_16.c ./kernel/generic/symm_lcopy_1.c ./kernel/generic/symm_lcopy_2.c ./kernel/generic/symm_lcopy_4.c ./kernel/generic/symm_lcopy_8.c ./kernel/generic/symm_ucopy_16.c ./kernel/generic/symm_ucopy_1.c ./kernel/generic/symm_ucopy_2.c ./kernel/generic/symm_ucopy_4.c ./kernel/generic/symm_ucopy_8.c ./kernel/generic/symv_k.c ./kernel/generic/trmm_lncopy_16.c ./kernel/generic/trmm_lncopy_1.c ./kernel/generic/trmm_lncopy_2.c ./kernel/generic/trmm_lncopy_4.c ./kernel/generic/trmm_lncopy_8.c ./kernel/generic/trmm_ltcopy_16.c ./kernel/generic/trmm_ltcopy_1.c ./kernel/generic/trmm_ltcopy_2.c ./kernel/generic/trmm_ltcopy_4.c ./kernel/generic/trmm_ltcopy_8.c ./kernel/generic/trmm_uncopy_16.c ./kernel/generic/trmm_uncopy_1.c ./kernel/generic/trmm_uncopy_2.c ./kernel/generic/trmm_uncopy_4.c ./kernel/generic/trmm_uncopy_8.c ./kernel/generic/trmm_utcopy_16.c ./kernel/generic/trmm_utcopy_1.c ./kernel/generic/trmm_utcopy_2.c ./kernel/generic/trmm_utcopy_4.c ./kernel/generic/trmm_utcopy_8.c ./kernel/generic/trsm_kernel_LN.c ./kernel/generic/trsm_kernel_LT.c ./kernel/generic/trsm_kernel_RN.c ./kernel/generic/trsm_kernel_RT.c ./kernel/generic/trsm_lncopy_16.c ./kernel/generic/trsm_lncopy_1.c ./kernel/generic/trsm_lncopy_2.c ./kernel/generic/trsm_lncopy_4.c ./kernel/generic/trsm_lncopy_8.c ./kernel/generic/trsm_ltcopy_16.c ./kernel/generic/trsm_ltcopy_1.c ./kernel/generic/trsm_ltcopy_2.c ./kernel/generic/trsm_ltcopy_4.c ./kernel/generic/trsm_ltcopy_8.c ./kernel/generic/trsm_uncopy_16.c ./kernel/generic/trsm_uncopy_1.c ./kernel/generic/trsm_uncopy_2.c ./kernel/generic/trsm_uncopy_4.c ./kernel/generic/trsm_uncopy_8.c ./kernel/generic/trsm_utcopy_16.c ./kernel/generic/trsm_utcopy_1.c ./kernel/generic/trsm_utcopy_2.c ./kernel/generic/trsm_utcopy_4.c ./kernel/generic/trsm_utcopy_8.c ./kernel/generic/zgemm3m_ncopy_1.c ./kernel/generic/zgemm3m_ncopy_2.c ./kernel/generic/zgemm3m_ncopy_4.c ./kernel/generic/zgemm3m_ncopy_8.c ./kernel/generic/zgemm3m_tcopy_1.c ./kernel/generic/zgemm3m_tcopy_2.c ./kernel/generic/zgemm3m_tcopy_4.c ./kernel/generic/zgemm3m_tcopy_8.c ./kernel/generic/zgemm_beta.c ./kernel/generic/zgemm_ncopy_1.c ./kernel/generic/zgemm_ncopy_2.c ./kernel/generic/zgemm_ncopy_4.c ./kernel/generic/zgemm_ncopy_8.c ./kernel/generic/zgemm_tcopy_1.c ./kernel/generic/zgemm_tcopy_2.c ./kernel/generic/zgemm_tcopy_4.c ./kernel/generic/zgemm_tcopy_8.c ./kernel/generic/zger.c ./kernel/generic/zhemm3m_lcopy_1.c ./kernel/generic/zhemm3m_lcopy_2.c ./kernel/generic/zhemm3m_lcopy_4.c ./kernel/generic/zhemm3m_lcopy_8.c ./kernel/generic/zhemm3m_ucopy_1.c ./kernel/generic/zhemm3m_ucopy_2.c ./kernel/generic/zhemm3m_ucopy_4.c ./kernel/generic/zhemm3m_ucopy_8.c ./kernel/generic/zhemm_ltcopy_1.c ./kernel/generic/zhemm_ltcopy_2.c ./kernel/generic/zhemm_ltcopy_4.c ./kernel/generic/zhemm_ltcopy_8.c ./kernel/generic/zhemm_utcopy_1.c ./kernel/generic/zhemm_utcopy_2.c ./kernel/generic/zhemm_utcopy_4.c ./kernel/generic/zhemm_utcopy_8.c ./kernel/generic/zhemv_k.c ./kernel/generic/zlaswp_ncopy_1.c ./kernel/generic/zlaswp_ncopy_2.c ./kernel/generic/zlaswp_ncopy_4.c ./kernel/generic/zneg_tcopy_1.c ./kernel/generic/zneg_tcopy_2.c ./kernel/generic/zneg_tcopy_4.c ./kernel/generic/zneg_tcopy_8.c ./kernel/generic/zsymm3m_lcopy_1.c ./kernel/generic/zsymm3m_lcopy_2.c ./kernel/generic/zsymm3m_lcopy_4.c ./kernel/generic/zsymm3m_lcopy_8.c ./kernel/generic/zsymm3m_ucopy_1.c ./kernel/generic/zsymm3m_ucopy_2.c ./kernel/generic/zsymm3m_ucopy_4.c ./kernel/generic/zsymm3m_ucopy_8.c ./kernel/generic/zsymm_lcopy_1.c ./kernel/generic/zsymm_lcopy_2.c ./kernel/generic/zsymm_lcopy_4.c ./kernel/generic/zsymm_lcopy_8.c ./kernel/generic/zsymm_ucopy_1.c ./kernel/generic/zsymm_ucopy_2.c ./kernel/generic/zsymm_ucopy_4.c ./kernel/generic/zsymm_ucopy_8.c ./kernel/generic/zsymv_k.c ./kernel/generic/ztrmm_lncopy_1.c ./kernel/generic/ztrmm_lncopy_2.c ./kernel/generic/ztrmm_lncopy_4.c ./kernel/generic/ztrmm_lncopy_8.c ./kernel/generic/ztrmm_ltcopy_1.c ./kernel/generic/ztrmm_ltcopy_2.c ./kernel/generic/ztrmm_ltcopy_4.c ./kernel/generic/ztrmm_ltcopy_8.c ./kernel/generic/ztrmm_uncopy_1.c ./kernel/generic/ztrmm_uncopy_2.c ./kernel/generic/ztrmm_uncopy_4.c ./kernel/generic/ztrmm_uncopy_8.c ./kernel/generic/ztrmm_utcopy_1.c ./kernel/generic/ztrmm_utcopy_2.c ./kernel/generic/ztrmm_utcopy_4.c ./kernel/generic/ztrmm_utcopy_8.c ./kernel/generic/ztrsm_lncopy_1.c ./kernel/generic/ztrsm_lncopy_2.c ./kernel/generic/ztrsm_lncopy_4.c ./kernel/generic/ztrsm_lncopy_8.c ./kernel/generic/ztrsm_ltcopy_1.c ./kernel/generic/ztrsm_ltcopy_2.c ./kernel/generic/ztrsm_ltcopy_4.c ./kernel/generic/ztrsm_ltcopy_8.c ./kernel/generic/ztrsm_uncopy_1.c ./kernel/generic/ztrsm_uncopy_2.c ./kernel/generic/ztrsm_uncopy_4.c ./kernel/generic/ztrsm_uncopy_8.c ./kernel/generic/ztrsm_utcopy_1.c ./kernel/generic/ztrsm_utcopy_2.c ./kernel/generic/ztrsm_utcopy_4.c ./kernel/generic/ztrsm_utcopy_8.c ./kernel/power/lock.c ./kernel/setparam-ref.c ./lapack/getf2/getf2_k.c ./lapack/getf2/zgetf2_k.c ./lapack/getrf/getrf_parallel.c ./lapack/getrf/getrf_parallel_omp.c ./lapack/getrf/getrf_single.c ./lapack/getrs/getrs_parallel.c ./lapack/getrs/getrs_single.c ./lapack/getrs/zgetrs_parallel.c ./lapack/getrs/zgetrs_single.c ./lapack/laswp/generic/laswp_k_1.c ./lapack/laswp/generic/laswp_k_2.c ./lapack/laswp/generic/laswp_k_4.c ./lapack/laswp/generic/laswp_k_8.c ./lapack/laswp/generic/laswp_k.c ./lapack/laswp/generic/zlaswp_k_1.c ./lapack/laswp/generic/zlaswp_k_2.c ./lapack/laswp/generic/zlaswp_k_4.c ./lapack/laswp/generic/zlaswp_k.c ./lapack/lauu2/lauu2_L.c ./lapack/lauu2/lauu2_U.c ./lapack/lauu2/zlauu2_L.c ./lapack/lauu2/zlauu2_U.c ./lapack/lauum/lauum_L_parallel.c ./lapack/lauum/lauum_L_single.c ./lapack/lauum/lauum_U_parallel.c ./lapack/lauum/lauum_U_single.c ./lapack/potf2/potf2_L.c ./lapack/potf2/potf2_U.c ./lapack/potf2/zpotf2_L.c ./lapack/potf2/zpotf2_U.c ./lapack/potrf/potrf_L_parallel.c ./lapack/potrf/potrf_L_single.c ./lapack/potrf/potrf_parallel.c ./lapack/potrf/potrf_U_parallel.c ./lapack/potrf/potrf_U_single.c ./lapack/trti2/trti2_L.c ./lapack/trti2/trti2_U.c ./lapack/trti2/ztrti2_L.c ./lapack/trti2/ztrti2_U.c ./lapack/trtri/trtri_L_parallel.c ./lapack/trtri/trtri_L_single.c ./lapack/trtri/trtri_U_parallel.c ./lapack/trtri/trtri_U_single.c ./symcopy.h Copyright: 2009, 2010 The University of Texas at Austin. License: (BSD 2 clauses) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of The University of Texas at Austin. Files: ./common_mips64.h ./common_reference.h ./cpuid_mips.c ./driver/others/blas_server.c ./driver/others/init.c ./driver/others/memory.c ./getarch.c ./param.h ./utest/common_utest.h ./utest/main.c ./utest/test_axpy.c ./utest/test_dotu.c ./utest/test_rot.c ./utest/test_swap.c ./version.h Copyright: 2011, Lab of Parallel Software and Computational Science,ICSAS License: Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the ISCAS nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Files: reference/* Copyright: jack dongarra, linpack License: Public domain Files: ctest/* Copyright: D.P. Manley, Digital Equipment Corporation. T. H. Do, 2/19/98, SGI/CRAY Research. License: Public domain Files: lapack/getri/* Copyright: Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., Courant Institute, Argonne National Lab, and Rice University License: Public domain debian/libopenblas-base.preinst0000664000000000000000000000102212317530614013775 0ustar #! /bin/sh set -e # In 0.2.8-4, /usr/lib/openblas-base/libopenblas.so.0 was renamed to # /usr/lib/openblas-base/libblas.so.3. It is therefore necessary to remove the # old path from the alternatives system before adding the new. if [ "$1" = "upgrade" ] && dpkg --compare-versions "$2" lt 0.2.8-4 then update-alternatives --remove libblas.so.3 /usr/lib/openblas-base/libopenblas.so.0 2>/dev/null fi # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/README.Debian0000664000000000000000000000263312317530614011237 0ustar How to switch between the various BLAS/LAPACK implementations ============================================================= BLAS: $ sudo update-alternatives --config libblas.so.3 LAPACK: $ sudo update-alternatives --config liblapack.so.3 Note that the LAPACK alternative should not point to ATLAS when then BLAS alternative points to OpenBLAS, otherwise you will get crashes (see #576972). More information is available at: http://wiki.debian.org/DebianScience/LinearAlgebraLibraries Building an optimized OpenBLAS packages on your architecture ============================================================ Since version openblas 0.1alpha1-5, libopenblas-base provides a multiple architecture library. All kernels are included in the library and the one matching your architecture is selected at run time. An alternative is to create a custom OpenBLAS package, optimized for your specific machine, as explained below. Install the build dependencies: $ sudo aptitude build-dep openblas $ sudo aptitude install devscripts Get the sources of the package: $ apt-get source openblas Compile the package: $ cd openblas- $ fakeroot debian/rules custom It should produce a package that you can install with: $ sudo dpkg -i ../libopenblas-base_.deb -- Sylvestre Ledru Tue, 31 May 2011 13:56:22 +0200 -- Sébastien Villemot , Thu, 13 Dec 2012 13:09:19 +0100 debian/libopenblas-dev.links0000664000000000000000000000017212317530614013302 0ustar usr/lib/libopenblas.a usr/lib/openblas-base/libblas.a usr/lib/openblas-base/libblas.so.3 usr/lib/openblas-base/libblas.so debian/rules0000775000000000000000000000364012317530614010255 0ustar #!/usr/bin/make -f # Sylvestre Ledru include /usr/share/cdbs/1/rules/debhelper.mk DEB_DH_MAKESHLIBS_ARGS_libopenblas-base = -V "libblas3 | libblas.so.3" COMMON_MAKE_OPTIONS = NO_LAPACK=1 NO_AFFINITY=1 NO_WARMUP=1 ENABLE_DYNAMIC_ARCHS := amd64 i386 kfreebsd-amd64 kfreebsd-i386 ifneq (,$(findstring $(DEB_HOST_ARCH),$(ENABLE_DYNAMIC_ARCHS))) DYNAMIC_ARCH_ARG="DYNAMIC_ARCH=1" TARGET_GENERIC_ARG="TARGET=GENERIC" endif ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) DEBUG_ARG="DEBUG=1" endif build: build-arch build-arch: build-stamp build-stamp: if test "$(TARGET)" = ""; then \ echo "Support multiple architectures"; \ $(MAKE) $(COMMON_MAKE_OPTIONS) $(DYNAMIC_ARCH_ARG) $(TARGET_GENERIC_ARG) $(DEBUG_ARG) NUM_THREADS=64; \ fi if test "$(TARGET)" = "custom"; then \ echo "Leave the detection to GotoBLAS / OpenBLAS"; \ $(MAKE) $(COMMON_MAKE_OPTIONS) $(DEBUG_ARG); \ fi if test "$(TARGET)" != "" -a "$(TARGET)" != "custom"; then \ echo "Use the value '$(TARGET)' provided by the user"; \ $(MAKE) $(COMMON_MAKE_OPTIONS) TARGET=$(TARGET) $(DEBUG_ARG); \ fi; rm libopenblas.so mv libopenblas*-*.so libopenblas.so.0 ln -s libopenblas.so.0 libopenblas.so mv libopenblas*-*.a libopenblas.a touch $@ custom: custom-stamp dch --local='+custom' "custom build on: `uname -a`" LANG=C debian/rules TARGET=custom build binary clean:: $(MAKE) clean rm -f libopenblas.so.0 libblas.so.3 # We want packages linked with -lblas to depend on any BLAS alternative, and we # want packages linked with -lopenblas to depend specifically on # libopenblas-base. # # Such a setting is not supported by dh_makeshlibs, so we ship a hand-crafted # shlibs file. binary-predeb/libopenblas-base:: cp debian/libopenblas-base.shlibs debian/libopenblas-base/DEBIAN/shlibs # Build a custom package optimized for the current arch custom-stamp: get-orig-source: -uscan --upstream-version 0 debian/libopenblas-base.shlibs0000664000000000000000000000010112317530614013572 0ustar libopenblas 0 libopenblas-base libblas 3 libblas3 | libblas.so.3