#include "graph.h" #include "matrix.h" #include #include #include #include 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(); }