#include "graph.h" #include "matrix.h" #include #include #include #include void benchmark() { const uint64_t vertex_count1 = 1024; 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 = 10; 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(); gemm_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 gemm_basic took roughly %f seconds\n", iterations, elapsed_time); printf("An iteration of gemm_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(); }