add CBLAS interface for s/d/c/zimatcopy
This commit is contained in:
		
							parent
							
								
									7794766d3c
								
							
						
					
					
						commit
						a057e5434d
					
				
							
								
								
									
										8
									
								
								cblas.h
								
								
								
								
							
							
						
						
									
										8
									
								
								cblas.h
								
								
								
								
							|  | @ -327,6 +327,14 @@ void cblas_comatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum | ||||||
| void cblas_zomatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double* calpha, OPENBLAS_CONST double* a,  | void cblas_zomatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double* calpha, OPENBLAS_CONST double* a,  | ||||||
| 		     OPENBLAS_CONST blasint clda,  double *b, OPENBLAS_CONST blasint cldb);  | 		     OPENBLAS_CONST blasint clda,  double *b, OPENBLAS_CONST blasint cldb);  | ||||||
| 
 | 
 | ||||||
|  | void cblas_simatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float calpha, float *a,  | ||||||
|  | 		     OPENBLAS_CONST blasint clda, OPENBLAS_CONST blasint cldb);  | ||||||
|  | void cblas_dimatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double calpha, double *a, | ||||||
|  | 		     OPENBLAS_CONST blasint clda, OPENBLAS_CONST blasint cldb);  | ||||||
|  | void cblas_cimatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float* calpha, float* a,  | ||||||
|  | 		     OPENBLAS_CONST blasint clda, OPENBLAS_CONST blasint cldb);  | ||||||
|  | void cblas_zimatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double* calpha, double* a,  | ||||||
|  | 		     OPENBLAS_CONST blasint clda, OPENBLAS_CONST blasint cldb);  | ||||||
| 
 | 
 | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -315,6 +315,14 @@ void cblas_comatcopy( enum CBLAS_ORDER CORDER,  enum CBLAS_TRANSPOSE CTRANS,  bl | ||||||
| void cblas_zomatcopy( enum CBLAS_ORDER CORDER,  enum CBLAS_TRANSPOSE CTRANS,  blasint crows,  blasint ccols,  void* calpha,  void* a,  | void cblas_zomatcopy( enum CBLAS_ORDER CORDER,  enum CBLAS_TRANSPOSE CTRANS,  blasint crows,  blasint ccols,  void* calpha,  void* a,  | ||||||
| 		      blasint clda,  void *b,  blasint cldb);  | 		      blasint clda,  void *b,  blasint cldb);  | ||||||
| 
 | 
 | ||||||
|  | void cblas_simatcopy( enum CBLAS_ORDER CORDER,  enum CBLAS_TRANSPOSE CTRANS,  blasint crows,  blasint ccols,  float calpha, float *a,  | ||||||
|  | 		      blasint clda,  blasint cldb);  | ||||||
|  | void cblas_dimatcopy( enum CBLAS_ORDER CORDER,  enum CBLAS_TRANSPOSE CTRANS,  blasint crows,  blasint ccols,  double calpha, double *a, | ||||||
|  | 		      blasint clda,  blasint cldb);  | ||||||
|  | void cblas_cimatcopy( enum CBLAS_ORDER CORDER,  enum CBLAS_TRANSPOSE CTRANS,  blasint crows,  blasint ccols,  float* calpha, float* a,  | ||||||
|  | 		      blasint clda,  blasint cldb);  | ||||||
|  | void cblas_zimatcopy( enum CBLAS_ORDER CORDER,  enum CBLAS_TRANSPOSE CTRANS,  blasint crows,  blasint ccols,  double* calpha, double* a,  | ||||||
|  | 		      blasint clda,  blasint cldb);  | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| } | } | ||||||
| #endif  /* __cplusplus */ | #endif  /* __cplusplus */ | ||||||
|  |  | ||||||
|  | @ -53,7 +53,8 @@ | ||||||
| 	       cblas_ztbmv, cblas_ztbsv, cblas_ztpmv, cblas_ztpsv, cblas_ztrmm, cblas_ztrmv, cblas_ztrsm, | 	       cblas_ztbmv, cblas_ztbsv, cblas_ztpmv, cblas_ztpsv, cblas_ztrmm, cblas_ztrmv, cblas_ztrsm, | ||||||
| 	       cblas_ztrsv, cblas_cdotc_sub, cblas_cdotu_sub, cblas_zdotc_sub, cblas_zdotu_sub, | 	       cblas_ztrsv, cblas_cdotc_sub, cblas_cdotu_sub, cblas_zdotc_sub, cblas_zdotu_sub, | ||||||
|                cblas_saxpby,cblas_daxpby,cblas_caxpby,cblas_zaxpby, |                cblas_saxpby,cblas_daxpby,cblas_caxpby,cblas_zaxpby, | ||||||
| 	       cblas_somatcopy, cblas_domatcopy, cblas_comatcopy, cblas_zomatcopy | 	       cblas_somatcopy, cblas_domatcopy, cblas_comatcopy, cblas_zomatcopy,  | ||||||
|  | 	       cblas_simatcopy, cblas_dimatcopy, cblas_cimatcopy, cblas_zimatcopy | ||||||
|                ); |                ); | ||||||
| 
 | 
 | ||||||
| @exblasobjs = ( | @exblasobjs = ( | ||||||
|  |  | ||||||
|  | @ -267,7 +267,7 @@ CSBLAS2OBJS   = \ | ||||||
| 
 | 
 | ||||||
| CSBLAS3OBJS   = \
 | CSBLAS3OBJS   = \
 | ||||||
| 	cblas_sgemm.$(SUFFIX) cblas_ssymm.$(SUFFIX) cblas_strmm.$(SUFFIX) cblas_strsm.$(SUFFIX) \
 | 	cblas_sgemm.$(SUFFIX) cblas_ssymm.$(SUFFIX) cblas_strmm.$(SUFFIX) cblas_strsm.$(SUFFIX) \
 | ||||||
| 	cblas_ssyrk.$(SUFFIX) cblas_ssyr2k.$(SUFFIX) cblas_somatcopy.$(SUFFIX)  | 	cblas_ssyrk.$(SUFFIX) cblas_ssyr2k.$(SUFFIX) cblas_somatcopy.$(SUFFIX)  cblas_simatcopy.$(SUFFIX)  | ||||||
| 
 | 
 | ||||||
| CDBLAS1OBJS   = \
 | CDBLAS1OBJS   = \
 | ||||||
| 	cblas_idamax.$(SUFFIX) cblas_dasum.$(SUFFIX) cblas_daxpy.$(SUFFIX) \
 | 	cblas_idamax.$(SUFFIX) cblas_dasum.$(SUFFIX) cblas_daxpy.$(SUFFIX) \
 | ||||||
|  | @ -283,7 +283,7 @@ CDBLAS2OBJS   = \ | ||||||
| 
 | 
 | ||||||
| CDBLAS3OBJS   += \
 | CDBLAS3OBJS   += \
 | ||||||
| 	cblas_dgemm.$(SUFFIX) cblas_dsymm.$(SUFFIX) cblas_dtrmm.$(SUFFIX) cblas_dtrsm.$(SUFFIX) \
 | 	cblas_dgemm.$(SUFFIX) cblas_dsymm.$(SUFFIX) cblas_dtrmm.$(SUFFIX) cblas_dtrsm.$(SUFFIX) \
 | ||||||
| 	cblas_dsyrk.$(SUFFIX) cblas_dsyr2k.$(SUFFIX) cblas_domatcopy.$(SUFFIX)  | 	cblas_dsyrk.$(SUFFIX) cblas_dsyr2k.$(SUFFIX) cblas_domatcopy.$(SUFFIX)  cblas_dimatcopy.$(SUFFIX)  | ||||||
| 
 | 
 | ||||||
| CCBLAS1OBJS   = \
 | CCBLAS1OBJS   = \
 | ||||||
| 	cblas_icamax.$(SUFFIX) cblas_scasum.$(SUFFIX)  cblas_caxpy.$(SUFFIX) \
 | 	cblas_icamax.$(SUFFIX) cblas_scasum.$(SUFFIX)  cblas_caxpy.$(SUFFIX) \
 | ||||||
|  | @ -306,7 +306,8 @@ CCBLAS3OBJS   = \ | ||||||
| 	cblas_cgemm.$(SUFFIX) cblas_csymm.$(SUFFIX) cblas_ctrmm.$(SUFFIX) cblas_ctrsm.$(SUFFIX) \
 | 	cblas_cgemm.$(SUFFIX) cblas_csymm.$(SUFFIX) cblas_ctrmm.$(SUFFIX) cblas_ctrsm.$(SUFFIX) \
 | ||||||
| 	cblas_csyrk.$(SUFFIX) cblas_csyr2k.$(SUFFIX) \
 | 	cblas_csyrk.$(SUFFIX) cblas_csyr2k.$(SUFFIX) \
 | ||||||
| 	cblas_chemm.$(SUFFIX) cblas_cherk.$(SUFFIX) cblas_cher2k.$(SUFFIX) \
 | 	cblas_chemm.$(SUFFIX) cblas_cherk.$(SUFFIX) cblas_cher2k.$(SUFFIX) \
 | ||||||
| 	cblas_comatcopy.$(SUFFIX) | 	cblas_comatcopy.$(SUFFIX) cblas_cimatcopy.$(SUFFIX)  | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| CZBLAS1OBJS   = \
 | CZBLAS1OBJS   = \
 | ||||||
| 	cblas_izamax.$(SUFFIX) cblas_dzasum.$(SUFFIX)  cblas_zaxpy.$(SUFFIX) \
 | 	cblas_izamax.$(SUFFIX) cblas_dzasum.$(SUFFIX)  cblas_zaxpy.$(SUFFIX) \
 | ||||||
|  | @ -329,7 +330,8 @@ CZBLAS3OBJS   = \ | ||||||
| 	cblas_zgemm.$(SUFFIX) cblas_zsymm.$(SUFFIX) cblas_ztrmm.$(SUFFIX) cblas_ztrsm.$(SUFFIX) \
 | 	cblas_zgemm.$(SUFFIX) cblas_zsymm.$(SUFFIX) cblas_ztrmm.$(SUFFIX) cblas_ztrsm.$(SUFFIX) \
 | ||||||
| 	cblas_zsyrk.$(SUFFIX) cblas_zsyr2k.$(SUFFIX) \
 | 	cblas_zsyrk.$(SUFFIX) cblas_zsyr2k.$(SUFFIX) \
 | ||||||
| 	cblas_zhemm.$(SUFFIX) cblas_zherk.$(SUFFIX) cblas_zher2k.$(SUFFIX)\
 | 	cblas_zhemm.$(SUFFIX) cblas_zherk.$(SUFFIX) cblas_zher2k.$(SUFFIX)\
 | ||||||
| 	cblas_zomatcopy.$(SUFFIX)  | 	cblas_zomatcopy.$(SUFFIX) cblas_zimatcopy.$(SUFFIX)  | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ifndef NO_CBLAS | ifndef NO_CBLAS | ||||||
| 
 | 
 | ||||||
|  | @ -2061,13 +2063,25 @@ cblas_zomatcopy.$(SUFFIX) cblas_zomatcopy.$(PSUFFIX) : zomatcopy.c | ||||||
| dimatcopy.$(SUFFIX) dimatcopy.$(PSUFFIX) : imatcopy.c | dimatcopy.$(SUFFIX) dimatcopy.$(PSUFFIX) : imatcopy.c | ||||||
| 	$(CC) -c $(CFLAGS) $< -o $(@F) | 	$(CC) -c $(CFLAGS) $< -o $(@F) | ||||||
| 
 | 
 | ||||||
|  | cblas_dimatcopy.$(SUFFIX) cblas_dimatcopy.$(PSUFFIX) : imatcopy.c | ||||||
|  | 	$(CC) -c $(CFLAGS) -DCBLAS $< -o $(@F) | ||||||
|  | 
 | ||||||
| simatcopy.$(SUFFIX) simatcopy.$(PSUFFIX) : imatcopy.c | simatcopy.$(SUFFIX) simatcopy.$(PSUFFIX) : imatcopy.c | ||||||
| 	$(CC) -c $(CFLAGS) $< -o $(@F) | 	$(CC) -c $(CFLAGS) $< -o $(@F) | ||||||
| 
 | 
 | ||||||
|  | cblas_simatcopy.$(SUFFIX) cblas_simatcopy.$(PSUFFIX) : imatcopy.c | ||||||
|  | 	$(CC) -c $(CFLAGS) -DCBLAS $< -o $(@F) | ||||||
|  | 
 | ||||||
| cimatcopy.$(SUFFIX) cimatcopy.$(PSUFFIX) : zimatcopy.c | cimatcopy.$(SUFFIX) cimatcopy.$(PSUFFIX) : zimatcopy.c | ||||||
| 	$(CC) -c $(CFLAGS) $< -o $(@F) | 	$(CC) -c $(CFLAGS) $< -o $(@F) | ||||||
| 
 | 
 | ||||||
|  | cblas_cimatcopy.$(SUFFIX) cblas_cimatcopy.$(PSUFFIX) : zimatcopy.c | ||||||
|  | 	$(CC) -c $(CFLAGS) -DCBLAS $< -o $(@F) | ||||||
|  | 
 | ||||||
| zimatcopy.$(SUFFIX) zimatcopy.$(PSUFFIX) : zimatcopy.c | zimatcopy.$(SUFFIX) zimatcopy.$(PSUFFIX) : zimatcopy.c | ||||||
| 	$(CC) -c $(CFLAGS) $< -o $(@F) | 	$(CC) -c $(CFLAGS) $< -o $(@F) | ||||||
| 
 | 
 | ||||||
|  | cblas_zimatcopy.$(SUFFIX) cblas_zimatcopy.$(PSUFFIX) : zimatcopy.c | ||||||
|  | 	$(CC) -c $(CFLAGS) -DCBLAS $< -o $(@F) | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -50,6 +50,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
| #undef malloc | #undef malloc | ||||||
| #undef free | #undef free | ||||||
| 
 | 
 | ||||||
|  | #ifndef CBLAS | ||||||
| void NAME( char* ORDER, char* TRANS, blasint *rows, blasint *cols, FLOAT *alpha, FLOAT *a, blasint *lda, blasint *ldb) | void NAME( char* ORDER, char* TRANS, blasint *rows, blasint *cols, FLOAT *alpha, FLOAT *a, blasint *lda, blasint *ldb) | ||||||
| { | { | ||||||
| 
 | 
 | ||||||
|  | @ -71,6 +72,28 @@ void NAME( char* ORDER, char* TRANS, blasint *rows, blasint *cols, FLOAT *alpha, | ||||||
| 	if ( Trans == 'R' ) trans = BlasNoTrans; | 	if ( Trans == 'R' ) trans = BlasNoTrans; | ||||||
| 	if ( Trans == 'T' ) trans = BlasTrans; | 	if ( Trans == 'T' ) trans = BlasTrans; | ||||||
| 	if ( Trans == 'C' ) trans = BlasTrans; | 	if ( Trans == 'C' ) trans = BlasTrans; | ||||||
|  | #else  | ||||||
|  | void CNAME( enum CBLAS_ORDER CORDER, enum CBLAS_TRANSPOSE CTRANS, blasint crows, blasint ccols, FLOAT calpha, FLOAT *a, blasint clda, blasint cldb) | ||||||
|  | { | ||||||
|  | 	char Order, Trans; | ||||||
|  | 	int order=-1,trans=-1; | ||||||
|  | 	blasint info = -1; | ||||||
|  | 	FLOAT *b; | ||||||
|  | 	size_t msize; | ||||||
|  | 	blasint *lda, *ldb, *rows, *cols;  | ||||||
|  | 	FLOAT *alpha;  | ||||||
|  | 
 | ||||||
|  | 	if ( CORDER == CblasColMajor) order = BlasColMajor;  | ||||||
|  | 	if ( CORDER == CblasRowMajor) order = BlasRowMajor;  | ||||||
|  | 	if ( CTRANS == CblasNoTrans || CTRANS == CblasConjNoTrans) trans = BlasNoTrans;  | ||||||
|  | 	if ( CTRANS == CblasTrans   || CTRANS == CblasConjTrans  ) trans = BlasTrans;  | ||||||
|  | 
 | ||||||
|  | 	rows = &crows;  | ||||||
|  | 	cols = &ccols;  | ||||||
|  | 	alpha = &calpha;  | ||||||
|  | 	lda = &clda;  | ||||||
|  | 	ldb = &cldb; 	 | ||||||
|  | #endif  | ||||||
| 
 | 
 | ||||||
| 	if ( order == BlasColMajor) | 	if ( order == BlasColMajor) | ||||||
| 	{ | 	{ | ||||||
|  |  | ||||||
|  | @ -49,6 +49,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
| #define BlasTransConj    2 | #define BlasTransConj    2 | ||||||
| #define BlasConj         3 | #define BlasConj         3 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | #ifndef CBLAS | ||||||
| void NAME( char* ORDER, char* TRANS, blasint *rows, blasint *cols, FLOAT *alpha, FLOAT *a, blasint *lda, blasint *ldb) | void NAME( char* ORDER, char* TRANS, blasint *rows, blasint *cols, FLOAT *alpha, FLOAT *a, blasint *lda, blasint *ldb) | ||||||
| { | { | ||||||
| 
 | 
 | ||||||
|  | @ -71,6 +73,30 @@ void NAME( char* ORDER, char* TRANS, blasint *rows, blasint *cols, FLOAT *alpha, | ||||||
| 	if ( Trans == 'C' ) trans = BlasTransConj; | 	if ( Trans == 'C' ) trans = BlasTransConj; | ||||||
| 	if ( Trans == 'R' ) trans = BlasConj; | 	if ( Trans == 'R' ) trans = BlasConj; | ||||||
| 
 | 
 | ||||||
|  | #else  | ||||||
|  | void CNAME( enum CBLAS_ORDER CORDER, enum CBLAS_TRANSPOSE CTRANS, blasint crows, blasint ccols, FLOAT *alpha, FLOAT *a, blasint clda, blasint cldb) | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | 	blasint *rows, *cols, *lda, *ldb;  | ||||||
|  | 	int order=-1,trans=-1; | ||||||
|  | 	blasint info = -1; | ||||||
|  | 	FLOAT *b; | ||||||
|  | 	size_t msize; | ||||||
|  | 
 | ||||||
|  | 	if ( CORDER == CblasColMajor ) order = BlasColMajor;  | ||||||
|  | 	if ( CORDER == CblasRowMajor ) order = BlasRowMajor;  | ||||||
|  | 
 | ||||||
|  | 	if ( CTRANS == CblasNoTrans) trans = BlasNoTrans;  | ||||||
|  | 	if ( CTRANS == CblasConjNoTrans ) trans = BlasConj;  | ||||||
|  | 	if ( CTRANS == CblasTrans) trans = BlasTrans;  | ||||||
|  | 	if ( CTRANS == CblasConjTrans) trans = BlasTransConj;  | ||||||
|  | 
 | ||||||
|  | 	rows = &crows;  | ||||||
|  | 	cols = &ccols;  | ||||||
|  | 	lda  = &clda;  | ||||||
|  | 	ldb  = &cldb;  | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| 	if ( order == BlasColMajor) | 	if ( order == BlasColMajor) | ||||||
| 	{ | 	{ | ||||||
|         	if ( trans == BlasNoTrans      &&  *ldb < *rows ) info = 9; |         	if ( trans == BlasNoTrans      &&  *ldb < *rows ) info = 9; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue