aboutsummaryrefslogtreecommitdiff
path: root/benchmarks/dgemm/dgemm_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'benchmarks/dgemm/dgemm_main.c')
-rw-r--r--benchmarks/dgemm/dgemm_main.c84
1 files changed, 6 insertions, 78 deletions
diff --git a/benchmarks/dgemm/dgemm_main.c b/benchmarks/dgemm/dgemm_main.c
index 7fd7dc2..9f28c07 100644
--- a/benchmarks/dgemm/dgemm_main.c
+++ b/benchmarks/dgemm/dgemm_main.c
@@ -2,76 +2,14 @@
// Double-precision general matrix multiplication benchmark
//--------------------------------------------------------------------------
-int ncores = 1;
#include "util.h"
//--------------------------------------------------------------------------
-// Macros
-
-// Set HOST_DEBUG to 1 if you are going to compile this for a host
-// machine (ie Athena/Linux) for debug purposes and set HOST_DEBUG
-// to 0 if you are compiling with the smips-gcc toolchain.
-
-#ifndef HOST_DEBUG
-#define HOST_DEBUG 0
-#endif
-
-// Set PREALLOCATE to 1 if you want to preallocate the benchmark
-// function before starting stats. If you have instruction/data
-// caches and you don't want to count the overhead of misses, then
-// you will need to use preallocation.
-
-#ifndef PREALLOCATE
-#define PREALLOCATE 0
-#endif
-
-// Set SET_STATS to 1 if you want to carve out the piece that actually
-// does the computation.
-
-#ifndef SET_STATS
-#define SET_STATS 0
-#endif
-
-//--------------------------------------------------------------------------
// Input/Reference Data
#include "dataset1.h"
//--------------------------------------------------------------------------
-// Helper functions
-
-int verify( long n, const double test[], const double correct[] )
-{
- int i;
- for ( i = 0; i < n; i++ ) {
- if ( test[i] != correct[i] ) {
- return 2;
- }
- }
- return 1;
-}
-
-#if HOST_DEBUG
-#include <stdio.h>
-#include <stdlib.h>
-void printArray( char name[], long n, const double arr[] )
-{
- int i;
- printf( " %10s :", name );
- for ( i = 0; i < n; i++ )
- printf( " %8.1f ", arr[i] );
- printf( "\n" );
-}
-#endif
-
-void setStats( int enable )
-{
-#if ( !HOST_DEBUG && SET_STATS )
- asm( "mtpcr %0, cr10" : : "r" (enable) );
-#endif
-}
-
-//--------------------------------------------------------------------------
// square_dgemm function
void square_dgemm( long n0, const double a0[], const double b0[], double c0[] )
@@ -162,33 +100,23 @@ int main( int argc, char* argv[] )
double results_data[DATA_SIZE*DATA_SIZE];
// Output the input array
-
-#if HOST_DEBUG
- printArray( "input1", DATA_SIZE*DATA_SIZE, input1_data );
- printArray( "input2", DATA_SIZE*DATA_SIZE, input2_data );
- printArray( "verify", DATA_SIZE*DATA_SIZE, verify_data );
-#endif
-
- // If needed we preallocate everything in the caches
+ printDoubleArray( "input1", DATA_SIZE*DATA_SIZE, input1_data );
+ printDoubleArray( "input2", DATA_SIZE*DATA_SIZE, input2_data );
+ printDoubleArray( "verify", DATA_SIZE*DATA_SIZE, verify_data );
#if PREALLOCATE
+ // If needed we preallocate everything in the caches
square_dgemm( DATA_SIZE, input1_data, input2_data, results_data );
#endif
// Do the dgemm
-
setStats(1);
square_dgemm( DATA_SIZE, input1_data, input2_data, results_data );
setStats(0);
// Print out the results
-
-#if HOST_DEBUG
- printArray( "results", DATA_SIZE*DATA_SIZE, results_data );
-#endif
+ printDoubleArray( "results", DATA_SIZE*DATA_SIZE, results_data );
// Check the results
-
- finishTest(verify( DATA_SIZE*DATA_SIZE, results_data, verify_data ));
-
+ return verifyDouble( DATA_SIZE*DATA_SIZE, results_data, verify_data );
}