Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // INCLUDES --------------------------------------------------------------------
- #include <stdlib.h>
- #include <stdio.h>
- #include <sys/time.h>
- #include <time.h>
- // DEFINES ---------------------------------------------------------------------
- #define MAXDIM 500
- #define STEP 1
- #define NUMTHREADS 8
- #define RUNS 10
- // VARIABLES -------------------------------------------------------------------
- int matrix_a[MAXDIM][MAXDIM], matrix_b[MAXDIM][MAXDIM];
- int matrix_c[MAXDIM][MAXDIM];
- int dim;
- int threads;
- // MATRIX FUNCTIONS ------------------------------------------------------------
- void print_matrix(int matrix[][MAXDIM]) {
- for (int r = 0; r < dim; r++) {
- for (int c = 0; c < dim; c++)
- printf("%7d ", matrix[r][c]);
- printf("\n");
- }
- printf("\n");
- }
- void random_matrix(int matrix[][MAXDIM]) {
- for (int r = 0; r < dim; r++)
- for (int c = 0; c < dim; c++)
- matrix[r][c] = rand() % 100;
- }
- float run(void (*f)()) {
- float time = 0;
- for (int i = 0; i < RUNS; i++) {
- struct timeval start, end;
- gettimeofday(&start, NULL);
- (*f)();
- gettimeofday(&end, NULL);
- long s = start.tv_sec * 1000 + start.tv_usec / 1000;
- long e = end.tv_sec * 1000 + end.tv_usec / 1000;
- time += e - s;
- }
- return time / RUNS;
- }
- // SEQ MULTIPLICATION ----------------------------------------------------------
- void mult_seq() {
- for (int r = 0; r < dim; r++) {
- for (int c = 0; c < dim; c++) {
- matrix_c[r][c] = 0;
- for (int i = 0; i < dim; i++)
- matrix_c[r][c] += matrix_a[r][i] * matrix_b[i][c];
- }
- }
- }
- // MAIN ------------------------------------------------------------------------
- int main(int argc, char* argv[]) {
- srand(time(NULL));
- dim = 512;
- random_matrix(matrix_a);
- random_matrix(matrix_b);
- printf("%d ", dim);
- printf("%f \n", run(mult_seq));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement