From 296ea108e257249bc6f81072ddc22903cd776577 Mon Sep 17 00:00:00 2001 From: "Viral B. Shah" Date: Wed, 11 Jun 2014 10:40:00 +0530 Subject: [PATCH 1/2] Add checksums for openblas 0.2.9, and LAPACK 3.5.0. Remove LAPACK 3.4.2 patches (for slasd4 and dlasd4). Fixed in 3.5.0. Remove openblas 0.2.9rc1 checksum. Remove openblas osx10.9 patch, which was required for openblas 0.2.8. The OpenBLAS gemv bug is fixed now (#6941), and we can call gemv. Add a test. Remove Windows specific openblas version in Versions.make. --- base/linalg/matmul.jl | 27 ++++++-------- deps/Makefile | 8 ----- deps/Versions.make | 8 ++--- deps/checksums/lapack-3.5.0.tgz/md5 | 1 + deps/checksums/lapack-3.5.0.tgz/sha512 | 1 + deps/checksums/openblas-v0.2.9.rc1.tar.gz/md5 | 1 - .../openblas-v0.2.9.rc1.tar.gz/sha512 | 1 - deps/checksums/openblas-v0.2.9.tar.gz/md5 | 1 + deps/checksums/openblas-v0.2.9.tar.gz/sha512 | 1 + deps/dlasd4-lapack-3.4.2.patch | 36 ------------------- deps/openblas-link-osx109.patch | 11 ------ deps/slasd4-lapack-3.4.2.patch | 36 ------------------- test/linalg1.jl | 4 +++ 13 files changed, 21 insertions(+), 115 deletions(-) create mode 100644 deps/checksums/lapack-3.5.0.tgz/md5 create mode 100644 deps/checksums/lapack-3.5.0.tgz/sha512 delete mode 100644 deps/checksums/openblas-v0.2.9.rc1.tar.gz/md5 delete mode 100644 deps/checksums/openblas-v0.2.9.rc1.tar.gz/sha512 create mode 100644 deps/checksums/openblas-v0.2.9.tar.gz/md5 create mode 100644 deps/checksums/openblas-v0.2.9.tar.gz/sha512 delete mode 100644 deps/dlasd4-lapack-3.4.2.patch delete mode 100644 deps/openblas-link-osx109.patch delete mode 100644 deps/slasd4-lapack-3.4.2.patch diff --git a/base/linalg/matmul.jl b/base/linalg/matmul.jl index b1e777142e660..a8d18032112b1 100644 --- a/base/linalg/matmul.jl +++ b/base/linalg/matmul.jl @@ -203,23 +203,18 @@ function copytri!(A::StridedMatrix, uplo::Char, conjugate::Bool=false) A end -if Base.blas_vendor() == :openblas - ## Avoid calling BLAS.gemv! when OpenBLAS is being used until #6941 is fixed. - gemv!{T<:BlasFloat}(y::StridedVector{T}, tA::Char, A::StridedMatrix{T}, x::StridedVector{T}) = generic_matvecmul!(y, tA, A, x) -else - function gemv!{T<:BlasFloat}(y::StridedVector{T}, tA::Char, A::StridedMatrix{T}, x::StridedVector{T}) - stride(A, 1)==1 || return generic_matvecmul!(y, tA, A, x) - if tA != 'N' - (nA, mA) = size(A) - else - (mA, nA) = size(A) - end - nA==length(x) || throw(DimensionMismatch("")) - mA==length(y) || throw(DimensionMismatch("")) - mA == 0 && return zeros(T, 0) - nA == 0 && return zeros(T, mA) - return BLAS.gemv!(tA, one(T), A, x, zero(T), y) +function gemv!{T<:BlasFloat}(y::StridedVector{T}, tA::Char, A::StridedMatrix{T}, x::StridedVector{T}) + stride(A, 1)==1 || return generic_matvecmul!(y, tA, A, x) + if tA != 'N' + (nA, mA) = size(A) + else + (mA, nA) = size(A) end + nA==length(x) || throw(DimensionMismatch("")) + mA==length(y) || throw(DimensionMismatch("")) + mA == 0 && return zeros(T, 0) + nA == 0 && return zeros(T, mA) + return BLAS.gemv!(tA, one(T), A, x, zero(T), y) end function syrk_wrapper!{T<:BlasFloat}(C::StridedMatrix{T}, tA::Char, A::StridedMatrix{T}) diff --git a/deps/Makefile b/deps/Makefile index db4350a2b5091..d375c0ec2c95b 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -799,13 +799,6 @@ openblas-$(OPENBLAS_VER)/config.status: openblas-$(OPENBLAS_VER).tar.gz mkdir -p openblas-$(OPENBLAS_VER) && \ $(TAR) -C openblas-$(OPENBLAS_VER) --strip-components 1 -xf $< perl -i -ple 's/^\s*(EXTRALIB\s*\+=\s*-lSystemStubs)\s*$$/# $$1/g' openblas-$(OPENBLAS_VER)/Makefile.system -ifeq ($(OPENBLAS_VER),v0.2.8) - cd openblas-$(OPENBLAS_VER)/lapack-netlib/SRC && \ - patch < ../../../dlasd4-lapack-3.4.2.patch && \ - patch < ../../../slasd4-lapack-3.4.2.patch - cd openblas-$(OPENBLAS_VER)/exports && \ - patch < ../../openblas-link-osx109.patch -endif echo 1 > $@ $(OPENBLAS_OBJ_SOURCE): openblas-$(OPENBLAS_VER)/config.status $(MAKE) -C openblas-$(OPENBLAS_VER) $(OPENBLAS_BUILD_OPTS) || (echo "*** Clean the OpenBLAS build with 'make -C deps clean-openblas'. Rebuild with 'make OPENBLAS_USE_THREAD=0 if OpenBLAS had trouble linking libpthread.so, and with 'make OPENBLAS_TARGET_ARCH=NEHALEM' if there were errors building SandyBridge support. Both these options can also be used simultaneously. ***" && false) @@ -930,7 +923,6 @@ lapack-$(LAPACK_VER).tgz: lapack-$(LAPACK_VER)/Makefile: lapack-$(LAPACK_VER).tgz $(JLCHECKSUM) $< $(TAR) zxf $< - cd lapack-$(LAPACK_VER)/SRC && patch < ../../dlasd4-lapack-3.4.2.patch && patch < ../../slasd4-lapack-3.4.2.patch touch -c $@ ifeq ($(USE_SYSTEM_BLAS), 0) lapack-$(LAPACK_VER)/liblapack.a: | $(OPENBLAS_OBJ_TARGET) diff --git a/deps/Versions.make b/deps/Versions.make index 91a105c720b13..fdcd79caf2237 100644 --- a/deps/Versions.make +++ b/deps/Versions.make @@ -3,12 +3,8 @@ LLVM_LIB_SUFFIX = PCRE_VER = 8.31 GRISU_VER = 1.1.1 DSFMT_VER = 2.2 -ifeq ($(OS),WINNT) -OPENBLAS_VER = v0.2.9.rc1 -else -OPENBLAS_VER = v0.2.8 -endif -LAPACK_VER = 3.4.2 +OPENBLAS_VER = v0.2.9 +LAPACK_VER = 3.5.0 ARPACK_VER = 3.1.5 FFTW_VER = 3.3.3 SUITESPARSE_VER = 4.2.1 diff --git a/deps/checksums/lapack-3.5.0.tgz/md5 b/deps/checksums/lapack-3.5.0.tgz/md5 new file mode 100644 index 0000000000000..a1e6c43f2278d --- /dev/null +++ b/deps/checksums/lapack-3.5.0.tgz/md5 @@ -0,0 +1 @@ +b1d3e3e425b2e44a06760ff173104bdf diff --git a/deps/checksums/lapack-3.5.0.tgz/sha512 b/deps/checksums/lapack-3.5.0.tgz/sha512 new file mode 100644 index 0000000000000..de7df8cb34518 --- /dev/null +++ b/deps/checksums/lapack-3.5.0.tgz/sha512 @@ -0,0 +1 @@ +b948a0a0db032bda455ec4f519d4e89e4c29e29cecb5b6258ca61f68faaeeac9fdf4ece5c39ffcd0154c5505facbc392c7d09c8348b1d60bdd2685153ab2543f diff --git a/deps/checksums/openblas-v0.2.9.rc1.tar.gz/md5 b/deps/checksums/openblas-v0.2.9.rc1.tar.gz/md5 deleted file mode 100644 index 1471a06fcac33..0000000000000 --- a/deps/checksums/openblas-v0.2.9.rc1.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -34b03e26a7240c640978a4d3b87849a3 diff --git a/deps/checksums/openblas-v0.2.9.rc1.tar.gz/sha512 b/deps/checksums/openblas-v0.2.9.rc1.tar.gz/sha512 deleted file mode 100644 index f5fc22fa73957..0000000000000 --- a/deps/checksums/openblas-v0.2.9.rc1.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -db1fa3ac4572869dbdf4c887fa6112419464accbfb311d9c9ca8bcde8882208001963dbbeb6afa350ca0d72c13fdda0ab7c6bc464de93d9af0889a0b361c0f97 diff --git a/deps/checksums/openblas-v0.2.9.tar.gz/md5 b/deps/checksums/openblas-v0.2.9.tar.gz/md5 new file mode 100644 index 0000000000000..11f315b5b8156 --- /dev/null +++ b/deps/checksums/openblas-v0.2.9.tar.gz/md5 @@ -0,0 +1 @@ +b3af3bed5f353d1fc024cab1b836ac3e diff --git a/deps/checksums/openblas-v0.2.9.tar.gz/sha512 b/deps/checksums/openblas-v0.2.9.tar.gz/sha512 new file mode 100644 index 0000000000000..ee26eac411508 --- /dev/null +++ b/deps/checksums/openblas-v0.2.9.tar.gz/sha512 @@ -0,0 +1 @@ +26675d3f66121e1be1b1ab149883afb392fa40f313380416d2e56093cf88c64e5d36dab366c734b9d5e9a4bd49085235cb73d819e9b559e924039cd2b42aa2f9 diff --git a/deps/dlasd4-lapack-3.4.2.patch b/deps/dlasd4-lapack-3.4.2.patch deleted file mode 100644 index 90d5dc91eb663..0000000000000 --- a/deps/dlasd4-lapack-3.4.2.patch +++ /dev/null @@ -1,36 +0,0 @@ ---- openblas-v0.2.8/lapack-netlib/SRC/dlasd4.f 2013-08-13 12:26:35.000000000 +0530 -+++ dlasd4.f.new 2013-08-13 12:25:32.000000000 +0530 -@@ -223,6 +223,7 @@ - * - EPS = DLAMCH( 'Epsilon' ) - RHOINV = ONE / RHO -+ TAU2= ZERO - * - * The case I = N - * -@@ -275,6 +276,7 @@ - ELSE - TAU2 = ( A+SQRT( A*A+FOUR*B*C ) ) / ( TWO*C ) - END IF -+ TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) ) - END IF - * - * It can be proved that -@@ -293,6 +295,8 @@ - ELSE - TAU2 = ( A+SQRT( A*A+FOUR*B*C ) ) / ( TWO*C ) - END IF -+ TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) ) -+ - * - * It can be proved that - * D(N)^2 < D(N)^2+TAU2 < SIGMA(N)^2 < D(N)^2+RHO/2 -@@ -301,7 +305,7 @@ - * - * The following TAU is to approximate SIGMA_n - D( N ) - * -- TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) ) -+* TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) ) - * - SIGMA = D( N ) + TAU - DO 30 J = 1, N diff --git a/deps/openblas-link-osx109.patch b/deps/openblas-link-osx109.patch deleted file mode 100644 index c99b64f1a9036..0000000000000 --- a/deps/openblas-link-osx109.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- Makefile.orig 2013-08-01 11:53:12.000000000 -0400 -+++ Makefile 2013-10-25 15:08:04.000000000 -0400 -@@ -107,7 +107,7 @@ - perl ./gensymbol win2khpl $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) > $(@F) - - $(LIBDYNNAME) : ../$(LIBNAME) osx.def -- $(CC) $(CFLAGS) -all_load -headerpad_max_install_names -install_name $(CURDIR)/../$(LIBDYNNAME) -dynamiclib -o ../$(LIBDYNNAME) $< -Wl,-exported_symbols_list,osx.def $(FEXTRALIB) -+ $(FC) $(FFLAGS) -all_load -headerpad_max_install_names -install_name $(CURDIR)/../$(LIBDYNNAME) -dynamiclib -o ../$(LIBDYNNAME) $< -Wl,-exported_symbols_list,osx.def $(FEXTRALIB) - - symbol.$(SUFFIX) : symbol.S - $(CC) $(CFLAGS) -c -o $(@F) $^ diff --git a/deps/slasd4-lapack-3.4.2.patch b/deps/slasd4-lapack-3.4.2.patch deleted file mode 100644 index 3e28fc8be36ef..0000000000000 --- a/deps/slasd4-lapack-3.4.2.patch +++ /dev/null @@ -1,36 +0,0 @@ ---- openblas-v0.2.8/lapack-netlib/SRC/slasd4.f 2013-08-01 21:23:12.000000000 +0530 -+++ slasd4.f.new 2013-08-13 11:58:06.000000000 +0530 -@@ -223,6 +223,7 @@ - * - EPS = SLAMCH( 'Epsilon' ) - RHOINV = ONE / RHO -+ TAU2= ZERO - * - * The case I = N - * -@@ -275,6 +276,7 @@ - ELSE - TAU2 = ( A+SQRT( A*A+FOUR*B*C ) ) / ( TWO*C ) - END IF -+ TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) ) - END IF - * - * It can be proved that -@@ -293,6 +295,8 @@ - ELSE - TAU2 = ( A+SQRT( A*A+FOUR*B*C ) ) / ( TWO*C ) - END IF -+ TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) ) -+ - * - * It can be proved that - * D(N)^2 < D(N)^2+TAU2 < SIGMA(N)^2 < D(N)^2+RHO/2 -@@ -301,7 +305,7 @@ - * - * The following TAU is to approximate SIGMA_n - D( N ) - * -- TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) ) -+* TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) ) - * - SIGMA = D( N ) + TAU - DO 30 J = 1, N diff --git a/test/linalg1.jl b/test/linalg1.jl index 04c450d10569d..ff0c96f4a6c56 100644 --- a/test/linalg1.jl +++ b/test/linalg1.jl @@ -266,3 +266,7 @@ debug && println("Matrix square root") end end end + +#6941 +@test (ones(10^7,4)*ones(4))[3] == 4.0 + From f23c53d7bade12377f9341fc028aba5217cf44b3 Mon Sep 17 00:00:00 2001 From: "Viral B. Shah" Date: Thu, 12 Jun 2014 21:53:37 +0530 Subject: [PATCH 2/2] Disable the test for #6941 temporarily until juliadeps is updated. --- test/linalg1.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/linalg1.jl b/test/linalg1.jl index ff0c96f4a6c56..bb6b2a67990bd 100644 --- a/test/linalg1.jl +++ b/test/linalg1.jl @@ -268,5 +268,5 @@ end end #6941 -@test (ones(10^7,4)*ones(4))[3] == 4.0 +#@test (ones(10^7,4)*ones(4))[3] == 4.0