From 6b01d587127536673e0db38231e92945701afeb0 Mon Sep 17 00:00:00 2001 From: Xianyi Zhang Date: Sat, 30 Mar 2013 20:12:43 +0000 Subject: [PATCH 1/4] Disable the optimization of muli-threading gemm on the Loongson3A. --- driver/level3/gemm_thread_n.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/driver/level3/gemm_thread_n.c b/driver/level3/gemm_thread_n.c index f9007f831..3e11f9aba 100644 --- a/driver/level3/gemm_thread_n.c +++ b/driver/level3/gemm_thread_n.c @@ -71,7 +71,7 @@ int CNAME(int mode, blas_arg_t *arg, BLASLONG *range_m, BLASLONG *range_n, int ( queue[num_cpu].args = arg; queue[num_cpu].range_m = range_m; queue[num_cpu].range_n = &range[num_cpu]; -#if defined(LOONGSON3A) +#if 0 //defined(LOONGSON3A) queue[num_cpu].sa = sa + GEMM_OFFSET_A1 * num_cpu; queue[num_cpu].sb = queue[num_cpu].sa + GEMM_OFFSET_A1 * 5; #else @@ -83,7 +83,7 @@ int CNAME(int mode, blas_arg_t *arg, BLASLONG *range_m, BLASLONG *range_n, int ( } if (num_cpu) { -#if defined(LOONGSON3A) +#if 0 //defined(LOONGSON3A) queue[0].sa = sa; queue[0].sb = sa + GEMM_OFFSET_A1 * 5; #else From 1a57717b1a19efd0d8dd7a01ae0b1c242e0a2742 Mon Sep 17 00:00:00 2001 From: Xianyi Zhang Date: Sun, 7 Apr 2013 15:42:07 +0800 Subject: [PATCH 2/4] Added the configuration of Loongcc compiler for Loongson 3 CPU. --- Makefile.system | 35 +++++++++++++++++++++++++++++++++++ README.md | 4 ++++ 2 files changed, 39 insertions(+) diff --git a/Makefile.system b/Makefile.system index eac61e961..5f8c251b0 100644 --- a/Makefile.system +++ b/Makefile.system @@ -514,11 +514,28 @@ ifdef INTERFACE64 FCOMMON_OPT += -i8 endif endif + +ifeq ($(ARCH), mips64) +ifndef BINARY64 +FCOMMON_OPT += -n32 +else +FCOMMON_OPT += -n64 +endif +ifeq ($(CORE), LOONGSON3A) +FCOMMON_OPT += -loongson3 +endif + +ifeq ($(CORE), LOONGSON3B) +FCOMMON_OPT += -loongson3 +endif + +else ifndef BINARY64 FCOMMON_OPT += -m32 else FCOMMON_OPT += -m64 endif +endif ifdef USE_OPENMP FEXTRALIB += -lstdc++ @@ -527,12 +544,30 @@ endif endif ifeq ($(C_COMPILER), OPEN64) + +ifeq ($(ARCH), mips64) +ifndef BINARY64 +CCOMMON_OPT += -n32 +else +CCOMMON_OPT += -n64 +endif +ifeq ($(CORE), LOONGSON3A) +CCOMMON_OPT += -loongson3 +endif + +ifeq ($(CORE), LOONGSON3B) +CCOMMON_OPT += -loongson3 +endif + +else + ifndef BINARY64 CCOMMON_OPT += -m32 else CCOMMON_OPT += -m64 endif endif +endif ifeq ($(C_COMPILER), SUN) CCOMMON_OPT += -w diff --git a/README.md b/README.md index f932b5141..0e3a49530 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,10 @@ On X86 box, compile this library for loongson3a CPU. make BINARY=64 CC=mips64el-unknown-linux-gnu-gcc FC=mips64el-unknown-linux-gnu-gfortran HOSTCC=gcc TARGET=LOONGSON3A +On X86 box, compile this library for loongson3a CPU with loongcc (based on Open64) compiler. + + make CC=loongcc FC=loongf95 HOSTCC=gcc TARGET=LOONGSON3A CROSS=1 CROSS_SUFFIX=mips64el-st-linux-gnu- NO_LAPACKE=1 NO_SHARED=1 BINARY=32 + ### Debug version make DEBUG=1 From 6958c1a1aa4714a02a49fc2cf76ab99a1ca8db0b Mon Sep 17 00:00:00 2001 From: Xianyi Zhang Date: Thu, 11 Apr 2013 15:33:43 +0800 Subject: [PATCH 3/4] Fixed the SEGFAULT bug with Loongcc and Loongson3. --- Makefile.system | 8 ++++---- common_mips64.h | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile.system b/Makefile.system index 5f8c251b0..1b8c9b476 100644 --- a/Makefile.system +++ b/Makefile.system @@ -522,11 +522,11 @@ else FCOMMON_OPT += -n64 endif ifeq ($(CORE), LOONGSON3A) -FCOMMON_OPT += -loongson3 +FCOMMON_OPT += -loongson3 -static endif ifeq ($(CORE), LOONGSON3B) -FCOMMON_OPT += -loongson3 +FCOMMON_OPT += -loongson3 -static endif else @@ -552,11 +552,11 @@ else CCOMMON_OPT += -n64 endif ifeq ($(CORE), LOONGSON3A) -CCOMMON_OPT += -loongson3 +CCOMMON_OPT += -loongson3 -static endif ifeq ($(CORE), LOONGSON3B) -CCOMMON_OPT += -loongson3 +CCOMMON_OPT += -loongson3 -static endif else diff --git a/common_mips64.h b/common_mips64.h index 85348377e..1bee69407 100644 --- a/common_mips64.h +++ b/common_mips64.h @@ -255,8 +255,8 @@ REALNAME: ;\ #endif #if defined(LOONGSON3B) -#define PAGESIZE (32UL << 10) -#define FIXED_PAGESIZE (32UL << 10) +#define PAGESIZE (16UL << 10) +#define FIXED_PAGESIZE (16UL << 10) #endif #ifndef PAGESIZE From 75a5dc3975a96ed4c7888a57356f2e8570adccbf Mon Sep 17 00:00:00 2001 From: Zhang Xianyi Date: Thu, 11 Apr 2013 16:10:47 +0000 Subject: [PATCH 4/4] Added the configure for the host loongcc compiling on Loongson3. --- Makefile.system | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Makefile.system b/Makefile.system index 5f8c251b0..a69aa0464 100644 --- a/Makefile.system +++ b/Makefile.system @@ -65,6 +65,10 @@ ifeq ($(DEBUG), 1) GETARCH_FLAGS += -g endif +ifeq ($(HOSTCC), loongcc) +GETARCH_FLAGS += -static +endif + # This operation is expensive, so execution should be once. ifndef GOTOBLAS_MAKEFILE export GOTOBLAS_MAKEFILE = 1