#include // Libra #include // C and C++ API int main(int argc, char** argv) { const int N = 1024; long long flopCount; double startTime, time, gflops; gVar A, B, C; printf("*****************************\n\n"); printf("DGEMM : matrix multiplication\n\n"); printf("*****************************\n\n"); if (libra_Init(argc, argv) != 0) return 1; libra_SetDefaultDataType(GFLOAT64); /* Create two N by N matrices. */ A = ones(N); B = A; /* warm up (to get accurate timing results) */ C = A * B; C = A * B; C = A * B; C = A * B; startTime = libra_GetTime(); /* Perform matrix multiplication using double precision */ C = A * B; time = libra_GetTime() - startTime; printf("Total time : %g%s", time*1000, " milliseconds\n"); /* Compute a performance measurement. Gigaflop / s. */ flopCount = (2*N-1)*N*(long long)N; gflops = flopCount / time / 1e9; printf("%g%s", gflops, " GFlop/s.\n"); libra_Shutdown(); return 0; }