14 double *_C4
, *_sum
, *_A
;
24 _A
= (double *) malloc(sizeof(double)*N
*N
*N
);
25 _C4
= (double *) malloc(sizeof(double)*N
*N
);
26 _sum
= (double *) malloc(sizeof(double)*N
*N
*N
);
31 _A
[i
*N
*N
+j
*N
+k
]= A
[i
][j
][k
];
37 IF_TIME(t_start
= rtclock());
40 for (t
=0; t
<10000; t
++) {
43 for( r
= 0; r
< N
; r
++) {
44 for( q
= 0; q
< N
; q
++) {
45 for( p
= 0; p
< N
; p
++) {
46 _sum
[N
*N
*r
+ N
*q
+ p
] = 0.0;
49 cblas_dgemv(CblasRowMajor
,CblasNoTrans
,
50 N
,N
,1,_C4
,N
,&_A
[N
*N
*r
+N
*q
],1,1,&_sum
[N
*N
*r
+N
*q
],1);
52 for( p
= 0; p
< N
; p
++) {
53 _A
[N
*N
*r
+N
*q
+p
] = _sum
[N
*N
*r
+N
*q
+p
];
62 IF_TIME(t_end
= rtclock());
63 IF_TIME(fprintf(stderr
, "%0.6lfs\n", t_end
- t_start
));
65 for( r
= 0; r
<N
; r
++) {
66 for( q
= 0; q
<N
; q
++) {
67 for( p
= 0; p
< N
; p
++) {
68 A
[r
][q
][p
] = _A
[N
*N
*r
+N
*q
+p
];