From 7bfb3011e8e672417724aafb4ba95ea02bef7440 Mon Sep 17 00:00:00 2001 From: wernsaar Date: Mon, 9 Jun 2014 20:21:13 +0200 Subject: [PATCH] Ref #51: added blas extension somatcopy --- common_level3.h | 5 +++++ common_macro.h | 6 ++++++ common_param.h | 5 +++++ common_s.h | 12 ++++++++++++ interface/Makefile | 9 +++++++-- kernel/Makefile.L3 | 33 +++++++++++++++++++++++++++++++++ kernel/setparam-ref.c | 2 ++ 7 files changed, 70 insertions(+), 2 deletions(-) diff --git a/common_level3.h b/common_level3.h index 8a33c20ba..ad978b03c 100644 --- a/common_level3.h +++ b/common_level3.h @@ -1732,6 +1732,11 @@ int zgemc_otcopy(BLASLONG m, BLASLONG n, double *a, BLASLONG lda, double *b, BLA int xgemc_oncopy(BLASLONG m, BLASLONG n, xdouble *a, BLASLONG lda, xdouble *b, BLASLONG ldb, xdouble *c); int xgemc_otcopy(BLASLONG m, BLASLONG n, xdouble *a, BLASLONG lda, xdouble *b, BLASLONG ldb, xdouble *c); +int somatcopy_k_cn(BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG); +int somatcopy_k_rn(BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG); +int somatcopy_k_ct(BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG); +int somatcopy_k_rt(BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG); + int domatcopy_k_cn(BLASLONG, BLASLONG, double, double *, BLASLONG, double *, BLASLONG); int domatcopy_k_rn(BLASLONG, BLASLONG, double, double *, BLASLONG, double *, BLASLONG); int domatcopy_k_ct(BLASLONG, BLASLONG, double, double *, BLASLONG, double *, BLASLONG); diff --git a/common_macro.h b/common_macro.h index 1a08613ca..b93842fbe 100644 --- a/common_macro.h +++ b/common_macro.h @@ -629,6 +629,7 @@ #define HERK_THREAD_LC DSYRK_THREAD_LT #define AXPBY_K DAXPBY_K + #define OMATCOPY_K_CN DOMATCOPY_K_CN #define OMATCOPY_K_RN DOMATCOPY_K_RN #define OMATCOPY_K_CT DOMATCOPY_K_CT @@ -926,6 +927,11 @@ #define AXPBY_K SAXPBY_K +#define OMATCOPY_K_CN SOMATCOPY_K_CN +#define OMATCOPY_K_RN SOMATCOPY_K_RN +#define OMATCOPY_K_CT SOMATCOPY_K_CT +#define OMATCOPY_K_RT SOMATCOPY_K_RT + #endif #else #ifdef XDOUBLE diff --git a/common_param.h b/common_param.h index 1b7d8a5a7..6c98f6c09 100644 --- a/common_param.h +++ b/common_param.h @@ -816,6 +816,11 @@ BLASLONG (*ixamin_k)(BLASLONG, xdouble *, BLASLONG); int (*caxpby_k) (BLASLONG, float, float, float*, BLASLONG,float,float, float*, BLASLONG); int (*zaxpby_k) (BLASLONG, double, double, double*, BLASLONG,double,double, double*, BLASLONG); + int (*somatcopy_k_cn) (BLASLONG, BLASLONG, float, float*, BLASLONG, float*, BLASLONG); + int (*somatcopy_k_ct) (BLASLONG, BLASLONG, float, float*, BLASLONG, float*, BLASLONG); + int (*somatcopy_k_rn) (BLASLONG, BLASLONG, float, float*, BLASLONG, float*, BLASLONG); + int (*somatcopy_k_rt) (BLASLONG, BLASLONG, float, float*, BLASLONG, float*, BLASLONG); + int (*domatcopy_k_cn) (BLASLONG, BLASLONG, double, double*, BLASLONG, double*, BLASLONG); int (*domatcopy_k_ct) (BLASLONG, BLASLONG, double, double*, BLASLONG, double*, BLASLONG); int (*domatcopy_k_rn) (BLASLONG, BLASLONG, double, double*, BLASLONG, double*, BLASLONG); diff --git a/common_s.h b/common_s.h index cac1af317..4e9b6dbe7 100644 --- a/common_s.h +++ b/common_s.h @@ -148,6 +148,12 @@ #define SAXPBY_K saxpby_k +#define SOMATCOPY_K_CN somatcopy_k_cn +#define SOMATCOPY_K_RN somatcopy_k_rn +#define SOMATCOPY_K_CT somatcopy_k_ct +#define SOMATCOPY_K_RT somatcopy_k_rt + + #else #define SAMAX_K gotoblas -> samax_k @@ -263,6 +269,12 @@ #define SAXPBY_K gotoblas -> saxpby_k +#define SOMATCOPY_K_CN gotoblas -> somatcopy_k_cn +#define SOMATCOPY_K_RN gotoblas -> somatcopy_k_rn +#define SOMATCOPY_K_CT gotoblas -> somatcopy_k_ct +#define SOMATCOPY_K_RT gotoblas -> somatcopy_k_rt + + #endif #define SGEMM_NN sgemm_nn diff --git a/interface/Makefile b/interface/Makefile index aaae70271..0d302eefb 100644 --- a/interface/Makefile +++ b/interface/Makefile @@ -40,7 +40,9 @@ SBLAS2OBJS = \ SBLAS3OBJS = \ sgemm.$(SUFFIX) ssymm.$(SUFFIX) strmm.$(SUFFIX) \ - strsm.$(SUFFIX) ssyrk.$(SUFFIX) ssyr2k.$(SUFFIX) + strsm.$(SUFFIX) ssyrk.$(SUFFIX) ssyr2k.$(SUFFIX) \ + somatcopy.$(SUFFIX) + DBLAS1OBJS = \ daxpy.$(SUFFIX) dswap.$(SUFFIX) \ @@ -2025,6 +2027,9 @@ caxpby.$(SUFFIX) caxpby.$(PSUFFIX) : zaxpby.c cblas_caxpby.$(SUFFIX) cblas_caxpby.$(PSUFFIX) : zaxpby.c $(CC) $(CFLAGS) -DCBLAS -c $< -o $(@F) -domatcopy.$(SUFFIX) domatcopy.$(PSUFFIX) : omatcopy.c ../param.h +domatcopy.$(SUFFIX) domatcopy.$(PSUFFIX) : omatcopy.c + $(CC) -c $(CFLAGS) $< -o $(@F) + +somatcopy.$(SUFFIX) domatcopy.$(PSUFFIX) : omatcopy.c $(CC) -c $(CFLAGS) $< -o $(@F) diff --git a/kernel/Makefile.L3 b/kernel/Makefile.L3 index 552773f2d..b03d2b9d3 100644 --- a/kernel/Makefile.L3 +++ b/kernel/Makefile.L3 @@ -321,6 +321,9 @@ XBLASOBJS += \ endif ###### BLAS extensions ##### +SBLASOBJS += \ + somatcopy_k_cn$(TSUFFIX).$(SUFFIX) somatcopy_k_rn$(TSUFFIX).$(SUFFIX) \ + somatcopy_k_ct$(TSUFFIX).$(SUFFIX) somatcopy_k_rt$(TSUFFIX).$(SUFFIX) DBLASOBJS += \ domatcopy_k_cn$(TSUFFIX).$(SUFFIX) domatcopy_k_rn$(TSUFFIX).$(SUFFIX) \ @@ -3276,6 +3279,36 @@ endif $(KDIR)domatcopy_k_rt$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(DOMATCOPY_RT) $(CC) $(CFLAGS) -c -DDOUBLE -UCOMPLEX $< -o $@ +ifndef SOMATCOPY_CN +SOMATCOPY_CN = ../arm/omatcopy_cn.c +endif + +$(KDIR)somatcopy_k_cn$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SOMATCOPY_CN) + $(CC) $(CFLAGS) -c -UDOUBLE -UCOMPLEX $< -o $@ + +ifndef SOMATCOPY_RN +SOMATCOPY_RN = ../arm/omatcopy_rn.c +endif + +$(KDIR)somatcopy_k_rn$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SOMATCOPY_RN) + $(CC) $(CFLAGS) -c -UDOUBLE -UCOMPLEX $< -o $@ + +ifndef SOMATCOPY_CT +SOMATCOPY_CT = ../arm/omatcopy_ct.c +endif + +$(KDIR)somatcopy_k_ct$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SOMATCOPY_CT) + $(CC) $(CFLAGS) -c -UDOUBLE -UCOMPLEX $< -o $@ + +ifndef SOMATCOPY_RT +SOMATCOPY_RT = ../arm/omatcopy_rt.c +endif + +$(KDIR)somatcopy_k_rt$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SOMATCOPY_RT) + $(CC) $(CFLAGS) -c -UDOUBLE -UCOMPLEX $< -o $@ + + + diff --git a/kernel/setparam-ref.c b/kernel/setparam-ref.c index aaa68c650..6d41c82af 100644 --- a/kernel/setparam-ref.c +++ b/kernel/setparam-ref.c @@ -501,6 +501,8 @@ gotoblas_t TABLE_NAME = { SNUMOPT, DNUMOPT, QNUMOPT, saxpby_kTS, daxpby_kTS, caxpby_kTS, zaxpby_kTS, + + somatcopy_k_cnTS, somatcopy_k_ctTS, somatcopy_k_rnTS, somatcopy_k_rtTS, domatcopy_k_cnTS, domatcopy_k_ctTS, domatcopy_k_rnTS, domatcopy_k_rtTS