#include #include #include "mkl.h" #define N 100 //#define min(x,y) (((x) < (y)) ? (x) : (y)) // Declare global arrays __declspec(target(mic)) static float *A, *B, *C; //float *A, *B, *C; int not_main(); // Init global arrays C is set to zero (being global) int init_arrays() { long int i; long int nz = N*N; // Allocate memory with MKL tools. A = (float *)mkl_malloc( N*N*sizeof( float ), 64 ); B = (float *)mkl_malloc( N*N*sizeof( float ), 64 ); C = (float *)mkl_malloc( N*N*sizeof( float ), 64 ); // Check for succesful allocation if (A == NULL || B == NULL || C == NULL) { printf( "\n ERROR: Can't allocate memory for matrices. Aborting... \n\n"); mkl_free(A); mkl_free(B); mkl_free(C); return (1); } // Matrix initialization printf(" Intializing matrix data \n\n"); for (i = 0; i < nz; i++) { A[i] = (float)(i+1); } for (i = 0; i < nz; i++) { B[i] = (float)(-i-1.f); } for (i = 0; i < nz; i++) { C[i] = 0.0f; } return (0); } int free_arrays() { printf ("\n Deallocating memory... "); mkl_free(A); mkl_free(B); mkl_free(C); printf ("Deallocating completed \n\n"); return (0); } void print_arrays_snap_shot() { int i, j; printf (" Top left corner of matrix A: \n"); for (i=0; i