graphprogram/main.c

68 lines
2.1 KiB
C

#include "graph.h"
#include "matrix.h"
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void benchmark() {
const uint64_t vertex_count1 = 1024;
// printf("vertex_count1 * vertex_count1 * sizeof(uint64_t) = %lu bytes\n", vertex_count1 * vertex_count1 * sizeof(uint64_t));
// printf("sizeof(uint64_t[vertex_count1][vertex_count1] = %lu bytes\n", sizeof(uint64_t[vertex_count1][vertex_count1]));
// return;
uint64_t (*matrix1)[vertex_count1] = malloc(vertex_count1 * vertex_count1 * sizeof(uint64_t));
const uint64_t vertex_count2 = 1024;
uint64_t (*matrix2)[vertex_count2] = malloc(vertex_count2 * vertex_count2 * sizeof(uint64_t));
uint64_t (*new_matrix)[vertex_count2] = malloc(vertex_count1 * vertex_count2 * sizeof(uint64_t));
double elapsed_time = 0.0;
const uint64_t iterations = 1;
clock_t start_time;
for (uint64_t i = 0; i < iterations; i++) {
random_adjacency(vertex_count1, matrix1);
random_adjacency(vertex_count2, matrix2);
start_time = clock();
matrix_multiply_basic(vertex_count1, vertex_count1, matrix1,
vertex_count2, vertex_count2, matrix2,
new_matrix);
elapsed_time += (double)(clock() - start_time) / CLOCKS_PER_SEC;
}
printf("%lu iterations of matrix_multiply_basic took roughly %f seconds\n", iterations, elapsed_time);
printf("An iteration of matrix_multiply_basic took on average roughly %f seconds\n", elapsed_time/iterations);
free(matrix1);
free(matrix2);
free(new_matrix);
}
void test() {
const uint64_t vertex_count = 5;
uint64_t adjacency_matrix[vertex_count][vertex_count];
read_csv("csv/graph.csv", vertex_count, vertex_count, adjacency_matrix);
puts("G:");
print_matrix(vertex_count, vertex_count, adjacency_matrix);
puts("");
uint64_t distance_matrix[vertex_count][vertex_count];
calculate_distance_matrix(vertex_count, adjacency_matrix, distance_matrix);
puts("distance_matrix:");
print_matrix(vertex_count, vertex_count, distance_matrix);
puts("");
}
int main(void) {
test();
// benchmark();
}