Change the block size on Loongson 3B.
authorWang Qian <wangqian10@iscas.ac.cn>
Wed, 23 Nov 2011 18:40:35 +0000 (18:40 +0000)
committerWang Qian <wangqian10@iscas.ac.cn>
Wed, 23 Nov 2011 18:41:49 +0000 (18:41 +0000)
driver/level3/gemm_thread_mn.c
driver/level3/gemm_thread_variable.c
driver/others/parameter.c
param.h

index 321e88f..b81c6fa 100644 (file)
@@ -77,8 +77,8 @@ int CNAME(int mode, blas_arg_t *arg, BLASLONG *range_m, BLASLONG *range_n, int (
     range_M[0] = 0;
     i          = arg -> m;
   } else {
-    range_M[0] = range_M[0];
-    i          = range_M[1] - range_M[0];
+    range_M[0] = range_m[0];
+    i          = range_m[1] - range_m[0];
   }
 
   num_cpu_m  = 0;
index 9d83e95..9ffe170 100644 (file)
@@ -55,8 +55,8 @@ int CNAME(int mode,
     range_M[0] = 0;
     i          = arg -> m;
   } else {
-    range_M[0] = range_M[0];
-    i          = range_M[1] - range_M[0];
+    range_M[0] = range_m[0];
+    i          = range_m[1] - range_m[0];
   }
 
   num_cpu_m  = 0;
index 3e66022..21f56e8 100644 (file)
@@ -683,7 +683,7 @@ void blas_set_parameter(void){
 
 #if defined(ARCH_MIPS64) 
 void blas_set_parameter(void){
-#if defined(LOONGSON3A) || defined(LOONGSON3B) 
+#if defined(LOONGSON3A)
 #ifdef SMP
   if(blas_num_threads == 1){
 #endif
@@ -696,5 +696,20 @@ void blas_set_parameter(void){
   }
 #endif
 #endif
+
+#if defined(LOONGSON3B)
+#ifdef SMP
+  if(blas_num_threads == 1 || blas_num_threads == 2){
+#endif
+    //single thread
+    dgemm_r = 640;
+#ifdef SMP
+  }else{
+    //multi thread
+    dgemm_r = 160;
+  }
+#endif
+#endif 
+
 }
 #endif
diff --git a/param.h b/param.h
index 39f0d99..610eb5f 100644 (file)
--- a/param.h
+++ b/param.h
@@ -1502,10 +1502,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #define CGEMM_DEFAULT_Q 128
 #define ZGEMM_DEFAULT_Q 80
 
-#define SGEMM_DEFAULT_R 1024
+#define SGEMM_DEFAULT_R 640 
 #define DGEMM_DEFAULT_R dgemm_r 
-#define CGEMM_DEFAULT_R 1024
-#define ZGEMM_DEFAULT_R 1024
+#define CGEMM_DEFAULT_R 640
+#define ZGEMM_DEFAULT_R 640
 
 #define GEMM_OFFSET_A1 0x10000
 #define        GEMM_OFFSET_B1  0x100000