matrix_test.h
来自「C++编写的高性能矩阵乘法的Stranssen算法」· C头文件 代码 · 共 109 行
H
109 行
/* Avoid multiple inclusion of this header file */#ifndef PRISM_MATRIX_TEST_H #define PRISM_MATRIX_TEST_H #if PRISM_MEM_CHK#include "tr_include.h"#endif#if PRISM_CRAY#define PRISM_STR_MACHINE "CRAY"#elif PRISM_T3D#define PRISM_STR_MACHINE "T3D"#elif PRISM_SP#define PRISM_STR_MACHINE "SP"#elif PRISM_SUN#define PRISM_STR_MACHINE "SUN"#else#define PRISM_STR_MACHINE "UNKNOWN"#endif#define STRAS_ERR_MAX 1.0e-5#if STRAS_PRISM_TIME/* defines for timer prism_time */extern double prism_time();#define CLOCK() prism_time()#elif PRISM_SPextern int mclock();#define CLOCK() (double)(mclock()/100.0)#elif PRISM_T3Dextern long _rtc();#define CLK_TICK 150000000.0 #define CLOCK() (double)((double)_rtc()/CLK_TICK)#else/* defines for C library timer clock() */#if !PRISM_CRAYextern clock_t clock();#endif#define CLK_TICK 1000000.0 #define CLOCK() (double)((double)clock()/CLK_TICK)#endif#define CLOCK_START(A) A=CLOCK()#define CLOCK_UPDATE(A,B,C,D) A+=CLOCK()-(B)int i_trash,i_sum_clock;doubled_correct1,d_correct2;double t0,t1,gt0,gt1;#if STRAS_TIME_PARTSdouble time_matrix_add, time_matrix_sub, time_matrix_linear, time_matrix_prod, time_submatrix,time_matrix, time_free_matrix,time_fixup_s,time_fixup_e; #endif/* Used in random matrix generation */extern double drand48();extern int i_sub(int i);extern void print_matrix(double *a,int lda,int rows,int cols);extern double aij(int i,int j);extern double bij(int i,int j);extern double cij(int i,int j);extern double cij_result(char c_transa,char c_transb,int k,int i,int j,double alpha,double beta);/* Vendor/Yale Strassen implementations */#if PRISM_CRAY || PRISM_T3D#define dgemms_ SGEMMS#define dgemmb_ SGEMMB#elif PRISM_SP#define dgemms_ dgemms#define dgemmb_ dgemmb#endifextern void dgemmb_(char *transa,char *transb,int *m,int *n,int *k, double *alpha,double *a,int *lda,double *b, int *ldb,double *beta,double *c,int *ldc);#endif/* Vendor (FORTRAN) Strassen implementations */#if PRISM_SP && STRAS_ESSLextern void dgemms_(double *a,int *lda,char *transa,double *b,int *ldb, char *transb,double *c,int *ldc,int *m,int *k,int *n, double *d_aux,int *i_naux);#elif PRISM_CRAY && STRAS_CRAY/* Take care of character data between C and FORTRAN */extern void dgemms_(FCHAR transa,FCHAR transb,int *m,int *n,int *k,double *alpha, double *a,int *lda,double *b,int *ldb,double *beta,double *c, int *ldc,double *d_aux);#define SGEMMS(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)\ cf1=_cptofcd(a1,strlen(a1));cf2=_cptofcd(a2,strlen(a2));SGEMMS(cf1,cf2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?