39 lines
1.3 KiB
C
39 lines
1.3 KiB
C
|
/*
|
||
|
Please include compiler name below (you may also include any other modules you would like to be loaded)
|
||
|
|
||
|
COMPILER= gnu
|
||
|
|
||
|
Please include All compiler flags and libraries as you want them run. You can simply copy this over from the Makefile's first few lines
|
||
|
|
||
|
CC = cc
|
||
|
OPT = -O3
|
||
|
CFLAGS = -Wall -std=gnu99 $(OPT)
|
||
|
MKLROOT = /opt/intel/composer_xe_2013.1.117/mkl
|
||
|
LDLIBS = -lrt -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a $(MKLROOT)/lib/intel64/libmkl_sequential.a $(MKLROOT)/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm
|
||
|
|
||
|
*/
|
||
|
|
||
|
#define DGEMM dgemm_
|
||
|
extern void DGEMM (char*, char*, int*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
|
||
|
|
||
|
const char* dgemm_desc = "Reference dgemm.";
|
||
|
|
||
|
/* This routine performs a dgemm operation
|
||
|
* C := C + A * B
|
||
|
* where A, B, and C are lda-by-lda matrices stored in column-major format.
|
||
|
* On exit, A and B maintain their input values.
|
||
|
* This function wraps a call to the BLAS-3 routine DGEMM, via the standard FORTRAN interface - hence the reference semantics. */
|
||
|
void square_dgemm (int N, double* A, double* B, double* C)
|
||
|
{
|
||
|
char TRANSA = 'N';
|
||
|
char TRANSB = 'N';
|
||
|
int M = N;
|
||
|
int K = N;
|
||
|
double ALPHA = 1.;
|
||
|
double BETA = 1.;
|
||
|
int LDA = N;
|
||
|
int LDB = N;
|
||
|
int LDC = N;
|
||
|
DGEMM(&TRANSA, &TRANSB, &M, &N, &K, &ALPHA, A, &LDA, B, &LDB, &BETA, C, &LDC);
|
||
|
}
|