#include #include #include #include #include #ifndef COLMAJOR #define COLMAJOR 1 #endif #ifndef MAXDIM_M #define MAXDIM_M 4000 #endif #ifndef MAXDIM_N #define MAXDIM_N 4000 #endif #ifndef MAXDIM_K #define MAXDIM_K 4000 #endif #ifndef MIN_M #define MIN_M 100 #endif #ifndef MIN_N #define MIN_N 100 #endif #ifndef MIN_K #define MIN_K 100 #endif #ifndef MAX_M #define MAX_M 7000 #endif #ifndef MAX_N #define MAX_N 7000 #endif #ifndef MAX_K #define MAX_K 7000 #endif #ifndef INC_M #define INC_M 100 #endif #ifndef INC_N #define INC_N 100 #endif #ifndef INC_K #define INC_K 100 #endif #ifndef ALPHA #define ALPHA 1.5 #endif #ifndef BETA #define BETA 1.5 #endif //============================================================================== // bench //============================================================================== //------------------------------------------------------------------------------ // Auxiliary data for benchmarking //------------------------------------------------------------------------------ double A_bench[MAXDIM_M*MAXDIM_K]; double B_bench[MAXDIM_K*MAXDIM_N]; double C1_bench[MAXDIM_M*MAXDIM_N]; double C2_bench[MAXDIM_M*MAXDIM_N]; //------------------------------------------------------------------------------ // Auxiliary functions for benchmarking //------------------------------------------------------------------------------ double walltime_bench() { struct tms ts; static double ClockTick=0.0; if (ClockTick==0.0) { ClockTick = 1.0 / ((double) sysconf(_SC_CLK_TCK)); } return ((double) times(&ts)) * ClockTick; } void initMatrix_bench(long m, long n, double *A, long incRowA, long incColA) { long i, j; for (j=0; j