#include <iostream>
#include <chrono>
#include <omp.h>

void matrix_multiply(float **A, float **B, float **C, int size);
void matrix_multiply_parallel(float **A, float **B, float **C, int size,int nbThreads);
void block_matrix_multiply(float **A, float **B, float **C, int size, int block_size);
void block_matrix_multiply_parallel(float **A, float **B, float **C, int size, int block_size,int nbThreads);
void test_matrix_mul_parallel(float **A, float **B, float **C, int size);
void display_matrix(float **matrix, int size);
void WriteMatrix(char *fn, float **matrix, int size);
void WriteData(char *fn, int n, float d);
void WriteData(char *fn, int n, float d,int ths);
void CreateData(char *fn);
void WriteData(char *fn, int nbThreads, int size, float timeExec, float speedUp, float efficacity, float realEfficacity);
void scenario();