From f22bfe6a55dc6b52ab5c6de46e12b81926f5c227 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 2 Jul 2012 02:49:12 +0200 Subject: [PATCH 1/7] Set the tests for hurd similar to linux --- ctest.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ctest.c b/ctest.c index 9fc0b0c40..d12e7be99 100644 --- a/ctest.c +++ b/ctest.c @@ -70,6 +70,11 @@ OS_CYGWIN_NT OS_INTERIX #endif +#if defined(__gnu_hurd__) +/* Hurd is very similar to GNU/Linux, it should work out of the box */ +OS_LINUX +#endif + #if defined(__i386) || defined(_X86) ARCH_X86 #endif From 5719b7a58d25c302a9190d5f936be7dae97851d5 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 2 Jul 2012 02:50:02 +0200 Subject: [PATCH 2/7] if SYS_gettid doesn't exist (like under HURD), use getpid() instead --- common_linux.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/common_linux.h b/common_linux.h index b0381d991..6766ff37c 100644 --- a/common_linux.h +++ b/common_linux.h @@ -86,7 +86,13 @@ static inline int my_set_mempolicy(int mode, const unsigned long *addr, unsigned return syscall(SYS_set_mempolicy, mode, addr, flag); } -static inline int my_gettid(void) { return syscall(SYS_gettid); } +static inline int my_gettid(void) { +#ifdef SYS_gettid +return syscall(SYS_gettid); +#else +return getpid(); +#endif +} #endif #endif From 4b7677a9165f2417c602152ea9fa5dfe87c21685 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 2 Jul 2012 02:50:41 +0200 Subject: [PATCH 3/7] When dealing with the kfreebsd kernel, set the same behavior as FreeBSD --- ctest.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ctest.c b/ctest.c index d12e7be99..95a5e8bb2 100644 --- a/ctest.c +++ b/ctest.c @@ -34,7 +34,7 @@ COMPILER_GNU OS_LINUX #endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) OS_FREEBSD #endif From 3692b4d631cc34de62ad17dd0519d8332d6231a3 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 2 Jul 2012 02:51:38 +0200 Subject: [PATCH 4/7] Improve the detection of sparc --- driver/others/memory.c | 2 +- param.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/driver/others/memory.c b/driver/others/memory.c index 9b8863f39..af9b54eff 100644 --- a/driver/others/memory.c +++ b/driver/others/memory.c @@ -1128,7 +1128,7 @@ static BLASULONG init_lock = 0UL; static void _touch_memory(blas_arg_t *arg, BLASLONG *range_m, BLASLONG *range_n, void *sa, void *sb, BLASLONG pos) { -#ifndef ARCH_POWER +#if !defined(ARCH_POWER) && !defined(ARCH_SPARC) long size; BLASULONG buffer; diff --git a/param.h b/param.h index 5465c1cbd..c6cd354be 100644 --- a/param.h +++ b/param.h @@ -1482,7 +1482,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define GEMM_THREAD gemm_thread_mn #endif -#if defined(SPARC) && defined(V9) +#if (defined(SPARC) && defined(V9)) || defined(__sparc_v9__) #define SNUMOPT 2 #define DNUMOPT 2 From 6fcdaa438727f2c6e4445216b8fe516197bd7535 Mon Sep 17 00:00:00 2001 From: Zhang Xianyi Date: Thu, 5 Jul 2012 13:41:03 +0800 Subject: [PATCH 5/7] Detect Sandy Bridge 22nm desktop/mobile CPU. --- cpuid_x86.c | 54 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/cpuid_x86.c b/cpuid_x86.c index ea1162e8f..b304cdade 100644 --- a/cpuid_x86.c +++ b/cpuid_x86.c @@ -975,27 +975,33 @@ int get_cpuname(void){ return CPUTYPE_DUNNINGTON; } break; - case 2: - switch (model) { - case 5: - //Intel Core (Clarkdale) / Core (Arrandale) - // Pentium (Clarkdale) / Pentium Mobile (Arrandale) - // Xeon (Clarkdale), 32nm - return CPUTYPE_NEHALEM; - case 10: - //Intel Core i5-2000 /i7-2000 (Sandy Bridge) - return CPUTYPE_SANDYBRIDGE; - case 12: - //Xeon Processor 5600 (Westmere-EP) - return CPUTYPE_NEHALEM; - case 13: - //Intel Core i7-3000 / Xeon E5 (Sandy Bridge) - return CPUTYPE_SANDYBRIDGE; - case 15: - //Xeon Processor E7 (Westmere-EX) - return CPUTYPE_NEHALEM; - } - break; + case 2: + switch (model) { + case 5: + //Intel Core (Clarkdale) / Core (Arrandale) + // Pentium (Clarkdale) / Pentium Mobile (Arrandale) + // Xeon (Clarkdale), 32nm + return CPUTYPE_NEHALEM; + case 10: + //Intel Core i5-2000 /i7-2000 (Sandy Bridge) + return CPUTYPE_SANDYBRIDGE; + case 12: + //Xeon Processor 5600 (Westmere-EP) + return CPUTYPE_NEHALEM; + case 13: + //Intel Core i7-3000 / Xeon E5 (Sandy Bridge) + return CPUTYPE_SANDYBRIDGE; + case 15: + //Xeon Processor E7 (Westmere-EX) + return CPUTYPE_NEHALEM; + } + break; + case 3: + switch (model) { + case 10: + return CPUTYPE_SANDYBRIDGE; + } + break; } break; case 0x7: @@ -1349,6 +1355,12 @@ int get_coretype(void){ return CORE_NEHALEM; } break; + case 3: + switch (model) { + case 10: + return CORE_SANDYBRIDGE; + } + break; } break; From 4a5d08d0cf042e41836eafd98a2b9bb3f1790374 Mon Sep 17 00:00:00 2001 From: Zhang Xianyi Date: Fri, 6 Jul 2012 21:37:51 +0800 Subject: [PATCH 6/7] Refs #123. Fixed exporting DLL functions bug on Windows --- exports/gensymbol | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/exports/gensymbol b/exports/gensymbol index e09a8b6ab..64c92d396 100644 --- a/exports/gensymbol +++ b/exports/gensymbol @@ -2760,30 +2760,27 @@ if ($ARGV[0] eq "win2k"){ print "EXPORTS\n"; $count = 1; - #remove openblas_set_num_threads - @underscore_objs = grep /[^openblas_set_num_threads]/,@underscore_objs; - foreach $objs (@underscore_objs) { - $uppercase = $objs; - $uppercase =~ tr/[a-z]/[A-Z]/; - print "\t$objs=$objs","_ \@", $count, "\n"; - $count ++; - print "\t",$objs, "_=$objs","_ \@", $count, "\n"; - $count ++; - print "\t$uppercase=$objs", "_ \@", $count, "\n"; - $count ++; + unless ($objs =~ /openblas_set_num_threads/) { #remove openblas_set_num_threads + $uppercase = $objs; + $uppercase =~ tr/[a-z]/[A-Z]/; + print "\t$objs=$objs","_ \@", $count, "\n"; + $count ++; + print "\t",$objs, "_=$objs","_ \@", $count, "\n"; + $count ++; + print "\t$uppercase=$objs", "_ \@", $count, "\n"; + $count ++; + } } - #for openblas_set_num_threads + #for openblas_set_num_threads print "\topenblas_set_num_threads_=openblas_set_num_threads_ \@", $count, "\n"; + $count ++; + + foreach $objs (@no_underscore_objs) { + print "\t",$objs,"=$objs"," \@", $count, "\n"; $count ++; - -# if ($ARGV[4] == 0) { - foreach $objs (@no_underscore_objs) { - print "\t",$objs,"=$objs"," \@", $count, "\n"; - $count ++; - } -# } + } exit(0); } From 50848e34ec2b67ff38ee4ddb057ec8884707a469 Mon Sep 17 00:00:00 2001 From: Zhang Xianyi Date: Fri, 6 Jul 2012 22:08:35 +0800 Subject: [PATCH 7/7] Updated the doc for 0.2.2 version. --- Changelog.txt | 12 ++++++++++++ Makefile.rule | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Changelog.txt b/Changelog.txt index 019870d8c..4e80473d6 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,4 +1,16 @@ OpenBLAS ChangeLog +==================================================================== +Version 0.2.2 +6-July-2012 +common: + * Fixed exporting DLL functions bug on Windows/MingW + * Support GNU Hurd (Thank Sylvestre Ledru) + * Support kfreebsd kernel (Thank Sylvestre Ledru) +x86/x86-64: + * Support Intel Sandy Bridge 22nm desktop/mobile CPU +SPARC: + * Improve the detection of SPARC (Thank Sylvestre Ledru) + ==================================================================== Version 0.2.1 30-Jun-2012 diff --git a/Makefile.rule b/Makefile.rule index 082487835..85abf584b 100644 --- a/Makefile.rule +++ b/Makefile.rule @@ -3,7 +3,7 @@ # # This library's version -VERSION = 0.2.1 +VERSION = 0.2.2 # If you set the suffix, the library name will be libopenblas_$(LIBNAMESUFFIX).a # and libopenblas_$(LIBNAMESUFFIX).so. Meanwhile, the soname in shared library