Fixed cmake bug on Visual Studio.
authorZhang Xianyi <traits.zhang@gmail.com>
Tue, 20 Oct 2015 19:37:22 +0000 (14:37 -0500)
committerZhang Xianyi <traits.zhang@gmail.com>
Tue, 20 Oct 2015 19:37:22 +0000 (14:37 -0500)
common.h
interface/CMakeLists.txt
interface/zdot.c
interface/zgemv.c
interface/zsyr.c
kernel/CMakeLists.txt

index 0b0bdb8..d8eadb4 100644 (file)
--- a/common.h
+++ b/common.h
@@ -502,8 +502,7 @@ static void __inline blas_lock(volatile BLASULONG *address){
    extension since version 3.0.  If neither are available, use a compatible
    structure as fallback (see Clause 6.2.5.13 of the C99 standard). */
 #if (defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \
-     (__GNUC__ >= 3 && !defined(__cplusplus)) || \
-     _MSC_VER >= 1800) // Visual Studio 2013 supports complex
+     (__GNUC__ >= 3 && !defined(__cplusplus)) )
   #define OPENBLAS_COMPLEX_C99
 #ifndef __cplusplus
   #include <complex.h>
index 91565d2..9ff924e 100644 (file)
@@ -69,8 +69,8 @@ foreach (CBLAS_FLAG ${CBLAS_FLAGS})
   set(DISABLE_COMPLEX 0)
   set(MANGLE_COMPLEX 3)
   if (CBLAS_FLAG EQUAL 1)
-    set(DISABLE_COMPLEX 1)
-    set(MANGLE_COMPLEX 1)
+#    set(DISABLE_COMPLEX 1)
+#    set(MANGLE_COMPLEX 1)
   endif ()
   GenerateNamedObjects("${BLAS1_SOURCES}" "" "" ${CBLAS_FLAG} "" "" false ${DISABLE_COMPLEX})
   GenerateNamedObjects("${BLAS1_REAL_ONLY_SOURCES}" "" "" ${CBLAS_FLAG} "" "" false 1)
@@ -98,43 +98,54 @@ foreach (CBLAS_FLAG ${CBLAS_FLAGS})
   GenerateNamedObjects("imax.c" "USE_ABS;USE_MIN" "i*amin" ${CBLAS_FLAG})
   GenerateNamedObjects("imax.c" "USE_MIN" "i*min" ${CBLAS_FLAG})
 
-endforeach ()
 
 # complex-specific sources
 foreach (float_type ${FLOAT_TYPES})
 
   if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX")
-    GenerateNamedObjects("zger.c" "" "geru" false "" "" false ${float_type})
-    GenerateNamedObjects("zger.c" "CONJ" "gerc" false "" "" false ${float_type})
-    GenerateNamedObjects("zdot.c" "CONJ" "dotc" false "" "" false ${float_type})
-    GenerateNamedObjects("zdot.c" "" "dotu" false "" "" false ${float_type})
+    GenerateNamedObjects("zger.c" "" "geru" ${CBLAS_FLAG} "" "" false ${float_type})
+    GenerateNamedObjects("zger.c" "CONJ" "gerc" ${CBLAS_FLAG} "" "" false ${float_type})
+    GenerateNamedObjects("zdot.c" "CONJ" "dotc" ${CBLAS_FLAG} "" "" false ${float_type})
+    GenerateNamedObjects("zdot.c" "" "dotu" ${CBLAS_FLAG} "" "" false ${float_type})
 
-    GenerateNamedObjects("symm.c" "HEMM" "hemm" false "" "" false ${float_type})
-    GenerateNamedObjects("syrk.c" "HEMM" "herk" false "" "" false ${float_type})
-    GenerateNamedObjects("syr2k.c" "HEMM" "her2k" false "" "" false ${float_type})
+    GenerateNamedObjects("symm.c" "HEMM" "hemm" ${CBLAS_FLAG} "" "" false ${float_type})
+    GenerateNamedObjects("syrk.c" "HEMM" "herk" ${CBLAS_FLAG} "" "" false ${float_type})
+    GenerateNamedObjects("syr2k.c" "HEMM" "her2k" ${CBLAS_FLAG} "" "" false ${float_type})
 
     if (USE_GEMM3M)
       GenerateNamedObjects("gemm.c" "GEMM3M" "gemm3m" false "" "" false ${float_type})
     endif()
   endif ()
   if (${float_type} STREQUAL "COMPLEX")
-    GenerateNamedObjects("zscal.c" "SSCAL" "sscal" false "" "" false "COMPLEX")
-    GenerateNamedObjects("nrm2.c" "" "scnrm2" false "" "" true "COMPLEX")
-    GenerateNamedObjects("zrot.c" "" "csrot" false "" "" true "COMPLEX")
-    GenerateNamedObjects("max.c" "USE_ABS;USE_MIN" "scamin" false "" "" true "COMPLEX")
-    GenerateNamedObjects("max.c" "USE_ABS" "scamax" false "" "" true "COMPLEX")
-    GenerateNamedObjects("asum.c" "" "scasum" false "" "" true "COMPLEX")
+    GenerateNamedObjects("zscal.c" "SSCAL" "sscal" ${CBLAS_FLAG} "" "" false "COMPLEX")
+    GenerateNamedObjects("nrm2.c" "" "scnrm2" ${CBLAS_FLAG} "" "" true "COMPLEX")
+    GenerateNamedObjects("zrot.c" "" "csrot" ${CBLAS_FLAG} "" "" true "COMPLEX")
+    GenerateNamedObjects("max.c" "USE_ABS;USE_MIN" "scamin" ${CBLAS_FLAG} "" "" true "COMPLEX")
+    GenerateNamedObjects("max.c" "USE_ABS" "scamax" ${CBLAS_FLAG} "" "" true "COMPLEX")
+    GenerateNamedObjects("asum.c" "" "scasum" ${CBLAS_FLAG} "" "" true "COMPLEX")
   endif ()
   if (${float_type} STREQUAL "ZCOMPLEX")
-    GenerateNamedObjects("zscal.c" "SSCAL" "dscal" false "" "" false "ZCOMPLEX")
-    GenerateNamedObjects("nrm2.c" "" "dznrm2" false "" "" true "ZCOMPLEX")
-    GenerateNamedObjects("zrot.c" "" "zdrot" false "" "" true "ZCOMPLEX")
-    GenerateNamedObjects("max.c" "USE_ABS;USE_MIN" "dzamin" false "" "" true "ZCOMPLEX")
-    GenerateNamedObjects("max.c" "USE_ABS" "dzamax" false "" "" true "ZCOMPLEX")
-    GenerateNamedObjects("asum.c" "" "dzasum" false "" "" true "ZCOMPLEX")
+    GenerateNamedObjects("zscal.c" "SSCAL" "dscal" ${CBLAS_FLAG} "" "" false "ZCOMPLEX")
+    GenerateNamedObjects("nrm2.c" "" "dznrm2" ${CBLAS_FLAG} "" "" true "ZCOMPLEX")
+    GenerateNamedObjects("zrot.c" "" "zdrot" ${CBLAS_FLAG} "" "" true "ZCOMPLEX")
+    GenerateNamedObjects("max.c" "USE_ABS;USE_MIN" "dzamin" ${CBLAS_FLAG} "" "" true "ZCOMPLEX")
+    GenerateNamedObjects("max.c" "USE_ABS" "dzamax" ${CBLAS_FLAG} "" "" true "ZCOMPLEX")
+    GenerateNamedObjects("asum.c" "" "dzasum" ${CBLAS_FLAG} "" "" true "ZCOMPLEX")
   endif ()
 endforeach ()
 
+endforeach ()
+
+#Special functions for CBLAS
+if (NOT DEFINED NO_CBLAS)
+  foreach (float_type ${FLOAT_TYPES})
+  if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX")
+    #cblas_dotc_sub cblas_dotu_sub
+    GenerateNamedObjects("zdot.c" "FORCE_USE_STACK" "dotu_sub" 1 "" "" false ${float_type})
+    GenerateNamedObjects("zdot.c" "FORCE_USE_STACK;CONJ" "dotc_sub" 1 "" "" false ${float_type})
+  endif()
+  endforeach ()
+endif()
 
 if (NOT DEFINED NO_LAPACK)
   set(LAPACK_SOURCES
index 34dfb73..d4d0fab 100644 (file)
@@ -153,16 +153,19 @@ void           CNAME(blasint n, FLOAT *x, blasint incx, FLOAT *y, blasint incy,
 OPENBLAS_COMPLEX_FLOAT CNAME(blasint n, FLOAT *x, blasint incx, FLOAT *y, blasint incy){
 
   OPENBLAS_COMPLEX_FLOAT ret;
+  OPENBLAS_COMPLEX_FLOAT zero=OPENBLAS_MAKE_COMPLEX_FLOAT(0.0, 0.0);
 #endif
 
   PRINT_DEBUG_CNAME;
 
   if (n <= 0) {
 #ifdef FORCE_USE_STACK
-    *result = OPENBLAS_MAKE_COMPLEX_FLOAT(0.0, 0.0);
+    //*result = OPENBLAS_MAKE_COMPLEX_FLOAT(0.0, 0.0);
+       CREAL(*result) = 0.0;
+       CIMAG(*result) = 0.0;
     return;
 #else
-    return OPENBLAS_MAKE_COMPLEX_FLOAT(0.0, 0.0);
+    return zero;
 #endif
   }
 
index 792f799..520136b 100644 (file)
@@ -148,6 +148,9 @@ void CNAME(enum CBLAS_ORDER order,
   blasint info, t;
 #ifdef SMP
   int nthreads;
+  int nthreads_max;
+  int nthreads_avail;
+  double MNK;
 #endif
 
   int (*gemv[])(BLASLONG, BLASLONG, BLASLONG, FLOAT, FLOAT, FLOAT *, BLASLONG,
index 5fe29ce..09b1de5 100644 (file)
@@ -121,6 +121,9 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, int n, FLOAT alpha, FLO
   FLOAT *buffer;
   int trans, uplo;
   blasint info;
+  FLOAT * ALPHA = &alpha;
+  FLOAT alpha_r        = ALPHA[0];
+  FLOAT alpha_i        = ALPHA[1];
 #ifdef SMP
   int nthreads;
 #endif
index 2d7b189..2156e39 100644 (file)
@@ -347,6 +347,74 @@ foreach (float_type ${FLOAT_TYPES})
     GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RTC}" "CONJ;ROWM" "omatcopy_k_rtc" false "" "" false ${float_type})
   endif()
 
+  #imatcopy
+  if (NOT DEFINED ${float_char}IMATCOPY_CN)
+    if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+      set(${float_char}IMATCOPY_CN ../generic/zimatcopy_cn.c)
+    else ()
+      set(${float_char}IMATCOPY_CN ../generic/imatcopy_cn.c)
+    endif ()
+  endif ()
+
+  if (NOT DEFINED ${float_char}IMATCOPY_RN)
+    if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+      set(${float_char}IMATCOPY_RN ../generic/zimatcopy_rn.c)
+    else ()
+      set(${float_char}IMATCOPY_RN ../generic/imatcopy_rn.c)
+    endif ()
+  endif ()
+
+  if (NOT DEFINED ${float_char}IMATCOPY_CT)
+    if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+      set(${float_char}IMATCOPY_CT ../generic/zimatcopy_ct.c)
+    else ()
+      set(${float_char}IMATCOPY_CT ../generic/imatcopy_ct.c)
+    endif ()
+  endif ()
+
+  if (NOT DEFINED ${float_char}IMATCOPY_RT)
+    if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+      set(${float_char}IMATCOPY_RT ../generic/zimatcopy_rt.c)
+    else ()
+      set(${float_char}IMATCOPY_RT ../generic/imatcopy_rt.c)
+    endif ()
+  endif ()
+
+  GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CN}" "" "imatcopy_k_cn" false "" "" false ${float_type})
+  GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RN}" "ROWM" "imatcopy_k_rn" false "" "" false ${float_type})
+  GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CT}" "" "imatcopy_k_ct" false "" "" false ${float_type})
+  GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RT}" "ROWM" "imatcopy_k_rt" false "" "" false ${float_type})
+
+
+  if (NOT DEFINED ${float_char}IMATCOPY_CNC)
+    if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+      set(${float_char}IMATCOPY_CNC ../generic/zimatcopy_cnc.c)
+    endif ()
+  endif ()
+  if (NOT DEFINED ${float_char}IMATCOPY_RNC)
+    if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+      set(${float_char}IMATCOPY_RNC ../generic/zimatcopy_rnc.c)
+    endif  ()
+  endif ()
+  if (NOT DEFINED ${float_char}IMATCOPY_CTC)
+    if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+      set(${float_char}IMATCOPY_CTC ../generic/zimatcopy_ctc.c)
+    endif ()
+  endif ()
+  if (NOT DEFINED ${float_char}IMATCOPY_RTC)
+    if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+      set(${float_char}IMATCOPY_RTC ../generic/zimatcopy_rtc.c)
+    endif ()
+  endif ()
+
+  if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+    GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CNC}" "CONJ" "imatcopy_k_cnc" false "" "" false ${float_type})
+    GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RNC}" "CONJ;ROWM" "imatcopy_k_rnc" false "" "" false ${float_type})
+    GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CTC}" "CONJ" "imatcopy_k_ctc" false "" "" false ${float_type})
+    GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RTC}" "CONJ;ROWM" "imatcopy_k_rtc" false "" "" false ${float_type})
+  endif()
+
+  #geadd
   GenerateNamedObjects("${KERNELDIR}/${${float_char}GEADD_KERNEL}" "" "geadd_k" false "" "" false ${float_type})
 endforeach ()