2 2

[alpine-devel] [PATCH 1/2] Add testing/openblas.

Isaac Dunham
Details
Message ID
<1409264344-5879-1-git-send-email-ibid.ag@gmail.com>
Sender timestamp
1409264343
DKIM signature
missing
Download raw message
Patch: +87 -0
OpenBLAS is a fast implementation of BLAS that's easier to build than ATLAS;
it also includes LAPACK support.
---
 testing/openblas/00-cpuid.patch | 34 ++++++++++++++++++++++++++
 testing/openblas/APKBUILD       | 53 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 87 insertions(+)
 create mode 100644 testing/openblas/00-cpuid.patch
 create mode 100644 testing/openblas/APKBUILD

diff --git a/testing/openblas/00-cpuid.patch b/testing/openblas/00-cpuid.patch
new file mode 100644
index 0000000..7758b46
--- /dev/null
+++ b/testing/openblas/00-cpuid.patch
@@ -0,0 +1,34 @@
+commit db7e6366cd86b57cd0712293968938058288bde0
+Author: Isaac Dunham <ibid.ag@gmail.com>
+Date:   Thu Aug 28 13:05:07 2014 -0700
+
+    Workaround PIC limitations in cpuid.
+    
+    cpuid uses register ebx, but ebx is reserved in PIC.
+    So save ebx, swap ebx & edi, and return edi.
+    
+    Copied from Igor Pavlov's equivalent fix for 7zip (in CpuArch.c),
+    which is public domain and thus OK license-wise.
+
+diff --git a/cpuid_x86.c b/cpuid_x86.c
+index 53016e1..f9df722 100644
+--- a/cpuid_x86.c
+@@ -59,9 +59,16 @@
+ void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx);
+ #else
+ static inline void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx){
++#if defined(__i386__) && defined(__PIC__)
++  __asm__ __volatile__
++    ("mov %%ebx, %%edi;"
++     "cpuid;"
++     "xchgl %%ebx, %%edi;"
++     : "=a" (*eax), "=D" (*ebx), "=c" (*ecx), "=d" (*edx) : "a" (op) : "cc");
++#else
+   __asm__ __volatile__
+     ("cpuid": "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx) : "a" (op) : "cc");
+-
++#endif
+ }
+ #endif
+ 
diff --git a/testing/openblas/APKBUILD b/testing/openblas/APKBUILD
new file mode 100644
index 0000000..ce6f2fc
--- /dev/null
+++ b/testing/openblas/APKBUILD
@@ -0,0 +1,53 @@
+# Contributor: Isaac Dunham <ibid.ag@gmail.com>
+# Maintainer: Isaac Dunham <ibid.ag@gmail.com>
+pkgname=openblas
+pkgver=0.2.11
+pkgrel=0
+pkgdesc="A fast BSD-licensed BLAS based on gotoBLAS2, with LAPACK"
+url="http://www.openblas.net"
+arch="all"
+license="BSD"
+depends=""
+depends_dev="gfortran"
+makedepends="$depends_dev"
+install=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="$pkgname-$pkgver.tar.gz::http://github.com/xianyi/OpenBLAS/archive/v$pkgver.tar.gz
+	00-cpuid.patch"
+
+_builddir="$srcdir"/OpenBLAS-$pkgver
+prepare() {
+	local i
+	cd "$_builddir"
+	for i in $source; do
+		case $i in
+		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+		esac
+	done
+}
+
+build() {
+	cd "$_builddir"
+#USE_OPENMP=0: see GCC bug 60035
+#NO_AFFINITY: don't expect to work on musl, also breaks R
+#DYNAMIC_ARCH=1 requires 00-cpuid.patch
+	make USE_OPENMP=0 NO_LAPACK=0 NUM_THREADS=8 MAJOR_VERSION=3 \
+	NO_AFFINITY=1 DYNAMIC_ARCH=1 PREFIX=/usr || return 1
+}
+
+package() {
+	cd "$_builddir"
+	mkdir -pm 0755 "$pkgdir/usr/lib" "$pkgdir/usr/include" \
+	"$pkgdir/usr/share/doc/$pkgname" || return 1
+	make USE_OPENMP=0 NO_LAPACK=0 NUM_THREADS=2 MAJOR_VERSION=3 \
+	NO_AFFINITY=1 DYNAMIC_ARCH=1 PREFIX="$pkgdir/usr" install || return 1
+	for FILE in *.txt *.md LICENSE; do
+		install -m 0644 $FILE "$pkgdir/usr/share/doc/$pkgname" || return 1
+	done
+}
+md5sums="c456f3c5e84c3ab69ef89b22e616627a  openblas-0.2.11.tar.gz
+0b8b59052a6387fe4aa9e3e473b3749b  00-cpuid.patch"
+sha256sums="dc06836e700ef26519933af309a25958150693c376a536fe35d633d76f1a5606  openblas-0.2.11.tar.gz
+65a809e9f0f06fd9ccefd0af6bc7c398fefe011404f699926946320783050d8b  00-cpuid.patch"
+sha512sums="68abdf8366d4766fe5d852ca3850ea6236d4dc5bad044fa4116ca60872716003746bcfdb1005aac87533d9a085ae319ef18b7ed6f293baf88c79fd7c8562c9f0  openblas-0.2.11.tar.gz
+1f41a324a9f233ef5fe037cd16c4aeabaf5895ba42e2f3758f8bb7a2cddda967fc01df50d86218f316d9406bb6ced4e91d4aec8119fc8f9c2f11b4ecf24e551f  00-cpuid.patch"
-- 
2.1.0



---
Unsubscribe:  alpine-devel+unsubscribe@lists.alpinelinux.org
Help:         alpine-devel+help@lists.alpinelinux.org
---

[alpine-devel] [PATCH 2/2] testing/py-numpy: upgrade, use OpenBLAS

Isaac Dunham
Details
Message ID
<1409264344-5879-2-git-send-email-ibid.ag@gmail.com>
In-Reply-To
<1409264344-5879-1-git-send-email-ibid.ag@gmail.com> (view parent)
Sender timestamp
1409264344
DKIM signature
missing
Download raw message
Patch: +168 -6
Upgraded to 1.8.1 so I could build with OpenBLAS.
Fixed a typo while I was here.
---
 testing/py-numpy/APKBUILD |  17 +++--
 testing/py-numpy/site.cfg | 157 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 168 insertions(+), 6 deletions(-)
 create mode 100644 testing/py-numpy/site.cfg

diff --git a/testing/py-numpy/APKBUILD b/testing/py-numpy/APKBUILD
index a590ba1..db7f1f8 100644
--- a/testing/py-numpy/APKBUILD
+++ b/testing/py-numpy/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Francesco Colista <francesco.colista@gmail.com>
 pkgname=py-numpy
 _pkgname=numpy
-pkgver=1.7.1
+pkgver=1.8.1
 pkgrel=0
 pkgdesc="Scientific tools for Python"
 url="http://numpy.scipy.org/"
@@ -13,7 +13,8 @@ depends_dev="python-dev"
 makedepends="$depends_dev"
 install=""
 subpackages="$pkgname-dev $pkgname-doc"
-source="http://downloads.sourceforge.net/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="http://downloads.sourceforge.net/$_pkgname/$_pkgname-$pkgver.tar.gz
+	site.cfg"
 
 _builddir="$srcdir"/$_pkgname-$pkgver
 prepare() {
@@ -22,13 +23,14 @@ prepare() {
 	for i in $source; do
 		case $i in
 		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+		site.cfg) msg $i; cp "$srcdir"/$i ./ || return 1;;
 		esac
 	done
 }
 
 build() {
 	cd "$_builddir"
-	export Atles=None
+	export Atlas=None
 	LDFLAGS="$LDFLAGS -shared"
 	python setup.py build config_fc --fcompiler=gnu95  || return 1
 }
@@ -41,6 +43,9 @@ package() {
 	install -m644 LICENSE.txt "$pkgdir"/usr/share/licenses/custom/$pkgname/LICENSE
 }
 
-md5sums="0ab72b3b83528a7ae79c6df9042d61c6  numpy-1.7.1.tar.gz"
-sha256sums="5525019a3085c3d860e6cfe4c0a30fb65d567626aafc50cf1252a641a418084a  numpy-1.7.1.tar.gz"
-sha512sums="d58177f3971b6d07baf6f81a2088ba371c7e43ea64ee7ada261da97c6d725b4bd4927122ac373c55383254e4e31691939276dab08a79a238bfa55172a3eff684  numpy-1.7.1.tar.gz"
+md5sums="be95babe263bfa3428363d6db5b64678  numpy-1.8.1.tar.gz
+6f15bb8fe3d12faa8983a9e18bbea2a9  site.cfg"
+sha256sums="3d722fc3ac922a34c50183683e828052cd9bb7e9134a95098441297d7ea1c7a9  numpy-1.8.1.tar.gz
+8aa71c1aec2a9fdf6ab6167c92e86bdaf27f9a263b6b9849097ec7dcdf6d91a3  site.cfg"
+sha512sums="39ef9e13f8681a2c2ba3d74ab96fd28c5669e653308fd1549f262921814fa7c276ce6d9fb65ef135006584c608bdf3db198d43f66c9286fc7b3c79803dbc1f57  numpy-1.8.1.tar.gz
+21ca8db304cbbf5949f07702f2a42bb5e5a0d641921e36649555a41b0e48f04e96f53760417823177ac27f6de24b2191e6e1d5f0eb393beafa29f7484e23284f  site.cfg"
diff --git a/testing/py-numpy/site.cfg b/testing/py-numpy/site.cfg
new file mode 100644
index 0000000..effb46f
--- /dev/null
+++ b/testing/py-numpy/site.cfg
@@ -0,0 +1,157 @@
+# This file provides configuration information about non-Python dependencies for
+# numpy.distutils-using packages. Create a file like this called "site.cfg" next
+# to your package's setup.py file and fill in the appropriate sections. Not all
+# packages will use all sections so you should leave out sections that your
+# package does not use.
+
+# To assist automatic installation like easy_install, the user's home directory
+# will also be checked for the file ~/.numpy-site.cfg .
+
+# The format of the file is that of the standard library's ConfigParser module.
+#
+#   http://www.python.org/doc/current/lib/module-ConfigParser.html
+#
+# Each section defines settings that apply to one particular dependency. Some of
+# the settings are general and apply to nearly any section and are defined here.
+# Settings specific to a particular section will be defined near their section.
+#
+#   libraries
+#       Comma-separated list of library names to add to compile the extension
+#       with. Note that these should be just the names, not the filenames. For
+#       example, the file "libfoo.so" would become simply "foo".
+#           libraries = lapack,f77blas,cblas,atlas
+#
+#   library_dirs
+#       List of directories to add to the library search path when compiling
+#       extensions with this dependency. Use the character given by os.pathsep
+#       to separate the items in the list. Note that this character is known to
+#       vary on some unix-like systems; if a colon does not work, try a comma.
+#       This also applies to include_dirs and src_dirs (see below).
+#       On UN*X-type systems (OS X, most BSD and Linux systems):
+#           library_dirs = /usr/lib:/usr/local/lib
+#       On Windows:
+#           library_dirs = c:\mingw\lib,c:\atlas\lib
+#       On some BSD and Linux systems:
+#           library_dirs = /usr/lib,/usr/local/lib
+#
+#   include_dirs
+#       List of directories to add to the header file earch path.
+#           include_dirs = /usr/include:/usr/local/include
+#
+#   src_dirs 
+#       List of directories that contain extracted source code for the
+#       dependency. For some dependencies, numpy.distutils will be able to build
+#       them from source if binaries cannot be found. The FORTRAN BLAS and
+#       LAPACK libraries are one example. However, most dependencies are more
+#       complicated and require actual installation that you need to do
+#       yourself.
+#           src_dirs = /home/rkern/src/BLAS_SRC:/home/rkern/src/LAPACK_SRC
+#
+#   search_static_first
+#       Boolean (one of (0, false, no, off) for False or (1, true, yes, on) for
+#       True) to tell numpy.distutils to prefer static libraries (.a) over
+#       shared libraries (.so). It is turned off by default.
+#           search_static_first = false
+
+# Defaults
+# ========
+# The settings given here will apply to all other sections if not overridden.
+# This is a good place to add general library and include directories like
+# /usr/local/{lib,include}
+#
+#[DEFAULT]
+#library_dirs = /usr/local/lib
+#include_dirs = /usr/local/include
+
+# Atlas
+# -----
+# Atlas is an open source optimized implementation of the BLAS and Lapack
+# routines. Numpy will try to build against Atlas by default when available in
+# the system library dirs. To build numpy against a custom installation of
+# Atlas you can add an explicit section such as the following. Here we assume
+# that Atlas was configured with ``prefix=/opt/atlas``.
+#
+# [atlas]
+# library_dirs = /opt/atlas/lib
+# include_dirs = /opt/atlas/include
+
+# OpenBLAS
+# --------
+# OpenBLAS is another open source optimized implementation of BLAS and Lapack
+# and can be seen as an alternative to Atlas. To build numpy against OpenBLAS
+# instead of Atlas, use this section instead of the above, adjusting as needed
+# for your configuration (in the following example we installed OpenBLAS with
+# ``make install PREFIX=/opt/OpenBLAS``.
+#
+# **Warning**: OpenBLAS, by default, is built in multithreaded mode. Due to the
+# way Python's multiprocessing is implemented, a multithreaded OpenBLAS can
+# cause programs using both to hang as soon as a worker process is forked on
+# POSIX systems (Linux, Mac).
+# This is fixed in Openblas 0.2.9 for the pthread build, the OpenMP build using
+# GNU openmp is as of gcc-4.9 not fixed yet.
+# Python 3.4 will introduce a new feature in multiprocessing, called the
+# "forkserver", which solves this problem. For older versions, make sure
+# OpenBLAS is built using pthreads or use Python threads instead of
+# multiprocessing.
+# (This problem does not exist with multithreaded ATLAS.)
+#
+# http://docs.python.org/3.4/library/multiprocessing.html#contexts-and-start-methods
+# https://github.com/xianyi/OpenBLAS/issues/294
+#
+[openblas]
+libraries = openblas
+library_dirs = /usr/lib
+include_dirs = /usr/include
+
+# MKL
+#----
+# MKL is Intel's very optimized yet proprietary implementation of BLAS and
+# Lapack.
+# For recent (9.0.21, for example) mkl, you need to change the names of the
+# lapack library. Assuming you installed the mkl in /opt, for a 32 bits cpu:
+# [mkl]
+# library_dirs = /opt/intel/mkl/9.1.023/lib/32/
+# lapack_libs = mkl_lapack
+#
+# For 10.*, on 32 bits machines:
+# [mkl]
+# library_dirs = /opt/intel/mkl/10.0.1.014/lib/32/
+# lapack_libs = mkl_lapack
+# mkl_libs = mkl, guide
+
+# UMFPACK
+# -------
+# The UMFPACK library is used in scikits.umfpack to factor large sparse matrices. 
+# It, in turn, depends on the AMD library for reordering the matrices for
+# better performance.  Note that the AMD library has nothing to do with AMD
+# (Advanced Micro Devices), the CPU company.
+#
+# UMFPACK is not needed for numpy or scipy.
+#
+#   http://www.cise.ufl.edu/research/sparse/umfpack/
+#   http://www.cise.ufl.edu/research/sparse/amd/
+#   http://scikits.appspot.com/umfpack
+#
+#[amd]
+#amd_libs = amd
+#
+#[umfpack]
+#umfpack_libs = umfpack
+
+# FFT libraries
+# -------------
+# There are two FFT libraries that we can configure here: FFTW (2 and 3) and djbfft.
+# Note that these libraries are not needed for numpy or scipy.
+#
+#   http://fftw.org/
+#   http://cr.yp.to/djbfft.html
+#
+# Given only this section, numpy.distutils will try to figure out which version
+# of FFTW you are using.
+#[fftw]
+#libraries = fftw3
+#
+# For djbfft, numpy.distutils will look for either djbfft.a or libdjbfft.a . 
+#[djbfft]
+#include_dirs = /usr/local/djbfft/include
+#library_dirs = /usr/local/djbfft/lib
-- 
2.1.0



---
Unsubscribe:  alpine-devel+unsubscribe@lists.alpinelinux.org
Help:         alpine-devel+help@lists.alpinelinux.org
---

Re: [alpine-devel] [PATCH 2/2] testing/py-numpy: upgrade, use OpenBLAS

Natanael Copa
Details
Message ID
<20140901095747.2748bb03@ncopa-desktop.alpinelinux.org>
In-Reply-To
<1409264344-5879-2-git-send-email-ibid.ag@gmail.com> (view parent)
Sender timestamp
1409558267
DKIM signature
missing
Download raw message
On Thu, 28 Aug 2014 15:19:04 -0700
Isaac Dunham <ibid.ag@gmail.com> wrote:

> Upgraded to 1.8.1 so I could build with OpenBLAS.
> Fixed a typo while I was here.

both applied.

Thanks!

-nc


---
Unsubscribe:  alpine-devel+unsubscribe@lists.alpinelinux.org
Help:         alpine-devel+help@lists.alpinelinux.org
---