PLASMA
2.4.5
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
Main Page
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
time_dgemm.c
Go to the documentation of this file.
1
6
#define _TYPE double
7
#define _PREC double
8
#define _LAMCH LAPACKE_dlamch_work
9
10
#define _NAME "PLASMA_dgemm"
11
/* See Lawn 41 page 120 */
12
#define _FMULS FMULS_GEMM(M, N, K)
13
#define _FADDS FADDS_GEMM(M, N, K)
14
15
#include "
./timing.c
"
16
17
static
int
18
RunTest(
int
*iparam,
double
*dparam,
real_Double_t
*t_)
19
{
20
double
alpha, beta;
21
PASTE_CODE_IPARAM_LOCALS
( iparam );
22
23
LDB =
max
(K, iparam[
IPARAM_LDB
]);
24
LDC =
max
(M, iparam[
IPARAM_LDC
]);
25
26
/* Allocate Data */
27
PASTE_CODE_ALLOCATE_MATRIX
(
A
, 1,
double
, LDA, K );
28
PASTE_CODE_ALLOCATE_MATRIX
(
B
, 1,
double
, LDB, N );
29
PASTE_CODE_ALLOCATE_MATRIX
(
C
, 1,
double
, LDC, N );
30
PASTE_CODE_ALLOCATE_MATRIX
( C2, check,
double
, LDC, N );
31
32
PLASMA_dplrnt
( M, K,
A
, LDA, 453 );
33
PLASMA_dplrnt
( K, N,
B
, LDB, 5673 );
34
PLASMA_dplrnt
( M, N,
C
, LDC, 740 );
35
36
LAPACKE_dlarnv_work(1,
ISEED
, 1, &alpha);
37
LAPACKE_dlarnv_work(1,
ISEED
, 1, &beta );
38
39
if
(check)
40
{
41
memcpy(C2,
C
, LDC*N*
sizeof
(
double
));
42
}
43
44
START_TIMING
();
45
PLASMA_dgemm
(
PlasmaNoTrans
,
PlasmaNoTrans
, M, N, K, alpha,
A
, LDA,
B
, LDB, beta,
C
, LDC );
46
STOP_TIMING
();
47
48
/* Check the solution */
49
if
(check)
50
{
51
dparam[
IPARAM_RES
] =
d_check_gemm
(
PlasmaNoTrans
,
PlasmaNoTrans
, M, N, K,
52
alpha,
A
, LDA,
B
, LDB, beta,
C
, C2, LDC,
53
&(dparam[
IPARAM_ANORM
]),
54
&(dparam[
IPARAM_BNORM
]),
55
&(dparam[
IPARAM_XNORM
]));
56
free(C2);
57
}
58
59
free(
A
);
60
free(
B
);
61
free(
C
);
62
63
return
0;
64
}
plasma_2.4.5
timing
time_dgemm.c
Generated on Mon Jul 9 2012 12:45:07 for PLASMA by
1.8.1