From d4260e552e80c8d8b4395f349f1f48bb779dc2bc Mon Sep 17 00:00:00 2001 From: MirruK Date: Sun, 7 Jun 2026 22:03:12 +0300 Subject: [PATCH] mirek-kudinoff: Implemented optimized matrix multiplication --- .gitignore | 2 + CMakeLists.txt | 9 +- README.md | 8 ++ main.cpp | 321 ++++++++++++++++++++++++++++++++++--------------- report.pdf | Bin 0 -> 138648 bytes report.typ | 35 ++++++ timings.csv | 19 +++ 7 files changed, 292 insertions(+), 102 deletions(-) create mode 100644 .gitignore create mode 100644 report.pdf create mode 100644 report.typ create mode 100644 timings.csv diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3a1ad18 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +build/ +data/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 9b04fd0..156eaeb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,10 +2,12 @@ cmake_minimum_required(VERSION 3.10) project(MatrixMultiplication) -set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + find_package(OpenMP REQUIRED) if(OpenMP_CXX_FOUND) @@ -17,9 +19,10 @@ if(APPLE) endif() -add_executable(matmul main_ans.cpp) +add_executable(matmul main.cpp) +target_compile_options(matmul PRIVATE -g -O3) if(OpenMP_CXX_FOUND) target_link_libraries(matmul PUBLIC OpenMP::OpenMP_CXX) -endif() \ No newline at end of file +endif() diff --git a/README.md b/README.md index 51c7f2a..b2432bd 100644 --- a/README.md +++ b/README.md @@ -235,3 +235,11 @@ git push origin student-name - Use small test cases to debug your blocked and parallel implementations. Good luck, and enjoy optimizing your matrix multiplication! + +## Report + +The table of results is in `timings.csv` and also `report.pdf`, +please read report.pdf, it has a table and graph of the results. + +`report.typ` has the plaintext report before compilation. It depends on +my personal assignment template so it is not of much use. diff --git a/main.cpp b/main.cpp index 65bf108..c92e7a8 100644 --- a/main.cpp +++ b/main.cpp @@ -1,114 +1,237 @@ -#include +#include +#include +#include #include -#include +#include +#include #include -#include - -void naive_matmul(float *C, float *A, float *B, uint32_t m, uint32_t n, uint32_t p) { - //TODO : Implement naive matrix multiplication -} - -void blocked_matmul(float *C, float *A, float *B, uint32_t m, uint32_t n, uint32_t p, uint32_t block_size) { - // TODO: Implement blocked matrix multiplication - // A is m x n, B is n x p, C is m x p - // Use block_size to divide matrices into submatrices -} - -void parallel_matmul(float *C, float *A, float *B, uint32_t m, uint32_t n, uint32_t p) { - // TODO: Implement parallel matrix multiplication using OpenMP - // A is m x n, B is n x p, C is m x p -} +#include +#include +#include -bool validate_result(const std::string &result_file, const std::string &reference_file) { - //TODO : Implement result validation +void naive_matmul(float *C, float *A, float *B, uint32_t m, uint32_t n, + uint32_t p) { + for (int i = 0; i < m; i++) { + for (int j = 0; j < p; j++) { + for (int k = 0; k < n; k++) { + C[i * p + j] += A[i * n + k] * B[k * p + j]; + } + } + } } -int main(int argc, char *argv[]) { - if (argc != 2) { - std::cerr << "Usage: " << argv[0] << " " << std::endl; - return 1; +void blocked_matmul(float *C, float *A, float *B, uint32_t m, uint32_t n, + uint32_t p, uint32_t block_size) { + for (int ii = 0; ii < m; ii += block_size) { + for (int jj = 0; jj < p; jj += block_size) { + for (int kk = 0; kk < n; kk += block_size) { + // Process block: C[ii:ii+block_size, jj:jj+block_size] += + // A[ii:ii+block_size, kk:kk+block_size] * B[kk:kk+block_size, + // jj:jj+block_size] + for (int i = ii; i < std::min(ii + block_size, m); i++) { + for (int j = jj; j < std::min(jj + block_size, p); j++) { + for (int k = kk; k < std::min(kk + block_size, n); k++) { + C[i * p + j] += A[i * n + k] * B[k * p + j]; + } + } + } + } } + } +} - int case_number = std::atoi(argv[1]); - if (case_number < 0 || case_number > 9) { - std::cerr << "Case number must be between 0 and 9" << std::endl; - return 1; +void parallel_matmul(float *C, float *A, float *B, uint32_t m, uint32_t n, + uint32_t p) { +#pragma omp parallel for + for (int i = 0; i < m; i++) { + for (int j = 0; j < p; j++) { + for (int k = 0; k < n; k++) { + C[i * p + j] += A[i * n + k] * B[k * p + j]; + } } + } +} - // Construct file paths - std::string folder = "data/" + std::to_string(case_number) + "/"; - std::string input0_file = folder + "input0.raw"; - std::string input1_file = folder + "input1.raw"; - std::string result_file = folder + "result.raw"; - std::string reference_file = folder + "output.raw"; - - // TODO Read input0.raw (matrix A) - - - // TODO Read input1.raw (matrix B) - - - // Allocate memory for result matrices - float *C_naive = new float[m * p]; - float *C_blocked = new float[m * p]; - float *C_parallel = new float[m * p]; - - // Measure performance of naive_matmul - double start_time = omp_get_wtime(); - naive_matmul(C_naive, A, B, m, n, p); - double naive_time = omp_get_wtime() - start_time; - - // TODO Write naive result to file - - - // Validate naive result - bool naive_correct = validate_result(result_file, reference_file); - if (!naive_correct) { - std::cerr << "Naive result validation failed for case " << case_number << std::endl; +bool validate_result(const std::string &result_file, + const std::string &reference_file) { + std::ifstream res_file(result_file); + std::ifstream ref_file(reference_file); + + int res_dimsM, ref_dimsM; + int res_dimsN, ref_dimsN; + float curr_res, curr_ref; + + res_file >> res_dimsM; + ref_file >> ref_dimsM; + res_file >> res_dimsN; + ref_file >> ref_dimsN; + if (res_dimsM != ref_dimsM || res_dimsN != ref_dimsN) { + return false; + } + int M = res_dimsM; + int N = res_dimsN; + const int total = M * N; + for (int i = 0; i < total; ++i) { + res_file >> curr_res; + ref_file >> curr_ref; + if (curr_res != curr_ref) { + std::cout << "Got: " << curr_res << " Expected:" << curr_ref + << " at index = " << i << std::endl; + return false; } + } + return true; +} - // Measure performance of blocked_matmul (use block_size = 32 as default) - start_time = omp_get_wtime(); - blocked_matmul(C_blocked, A, B, m, n, p, 32); - double blocked_time = omp_get_wtime() - start_time; - - // TODO Write blocked result to file - - - // Validate blocked result - bool blocked_correct = validate_result(result_file, reference_file); - if (!blocked_correct) { - std::cerr << "Blocked result validation failed for case " << case_number << std::endl; +void write_float_matrix(const std::string filename, const float *data, int M, + int N) { + std::ofstream file(filename); + std::string result; + file << M << " " << N << "\n"; + std::stringstream ss; + for (int i = 0; i < M; ++i) { + for (int j = 0; j < N; ++j) { + // setting the float precision explicitly to be 2 decimals to match input + // file format + file << std::fixed << std::setprecision(2) << data[i * N + j]; + // Add whitespaces as long as we have not hit a new row of the matrix + if (j < N - 1) + file << " "; } + file << "\n"; + } + file.close(); +} - // Measure performance of parallel_matmul - start_time = omp_get_wtime(); - parallel_matmul(C_parallel, A, B, m, n, p); - double parallel_time = omp_get_wtime() - start_time; - - // TODO Write parallel result to file - - - // Validate parallel result - bool parallel_correct = validate_result(result_file, reference_file); - if (!parallel_correct) { - std::cerr << "Parallel result validation failed for case " << case_number << std::endl; +std::pair read_float_matrix(const std::string filename, + float **data_ptr) { + std::ifstream file(filename); + int M, N; + file >> M; + file >> N; + float *data = (float *)calloc(M * N, sizeof(float)); + + const int total = M * N; + for (int i = 0; i < total; ++i) { + // the insanity of c++... + // the overloaded >> operator implicitly skips all types of whitespace. + // Oh, and since the type of data is float* it correctly converts to float + if (!(file >> data[i])) { + throw std::runtime_error("Parse error or unexpected EOF at element " + + std::to_string(i)); } + } + *data_ptr = data; + file.close(); + return {M, N}; +} - // Print performance results - std::cout << "Case " << case_number << " (" << m << "x" << n << "x" << p << "):\n"; - std::cout << "Naive time: " << naive_time << " seconds\n"; - std::cout << "Blocked time: " << blocked_time << " seconds\n"; - std::cout << "Parallel time: " << parallel_time << " seconds\n"; - std::cout << "Blocked speedup: " << (naive_time / blocked_time) << "x\n"; - std::cout << "Parallel speedup: " << (naive_time / parallel_time) << "x\n"; - - // Clean up - delete[] A; - delete[] B; - delete[] C_naive; - delete[] C_blocked; - delete[] C_parallel; - - return 0; -} \ No newline at end of file +int main(int argc, char *argv[]) { + if (argc != 2) { + std::cerr << "Usage: " << argv[0] << " " << std::endl; + return 1; + } + + int case_number = std::atoi(argv[1]); + if (case_number < 0 || case_number > 9) { + std::cerr << "Case number must be between 0 and 9" << std::endl; + return 1; + } + + // Construct file paths + std::string folder = "data/" + std::to_string(case_number) + "/"; + std::string input0_file = folder + "input0.raw"; + std::string input1_file = folder + "input1.raw"; + std::string result_file = folder + "result.raw"; + std::string reference_file = folder + "output.raw"; + + float *data_ptr; + auto A_size = read_float_matrix(input0_file, &data_ptr); + float *A = data_ptr; + auto B_size = read_float_matrix(input1_file, &data_ptr); + float *B = data_ptr; + int m = A_size.first; + int n = A_size.second; + int p = B_size.second; + + // Allocate memory for result matrices + // NOTE: Use calloc to zero init memory and eliminate any problems that comes from + // using += in the matmul implementation + float *C_naive = (float *)calloc(m * p, sizeof(float)); + float *C_blocked = (float *)calloc(m * p, sizeof(float)); + float *C_parallel = (float *)calloc(m * p, sizeof(float)); + + // Measure performance of naive_matmul + double start_time = omp_get_wtime(); + naive_matmul(C_naive, A, B, m, n, p); + double naive_time = omp_get_wtime() - start_time; + + write_float_matrix(result_file, C_naive, m, p); + + // Validate naive result + bool naive_correct = validate_result(result_file, reference_file); + if (!naive_correct) { + std::cerr << "Naive result validation failed for case " << case_number + << std::endl; + } + + // Measure performance of blocked_matmul (use block_size = 32 as default) + start_time = omp_get_wtime(); + blocked_matmul(C_blocked, A, B, m, n, p, 32); + double blocked_time = omp_get_wtime() - start_time; + + write_float_matrix(result_file, C_blocked, m, p); + + // Validate blocked result + bool blocked_correct = validate_result(result_file, reference_file); + if (!blocked_correct) { + std::cerr << "Blocked result validation failed for case " << case_number + << std::endl; + } + + // Measure performance of parallel_matmul + start_time = omp_get_wtime(); + parallel_matmul(C_parallel, A, B, m, n, p); + double parallel_time = omp_get_wtime() - start_time; + + // TODO Write parallel result to file + write_float_matrix(result_file, C_parallel, m, p); + + // Validate parallel result + bool parallel_correct = validate_result(result_file, reference_file); + if (!parallel_correct) { + std::cerr << "Parallel result validation failed for case " << case_number + << std::endl; + } + + // Print performance results + std::cout << "Case " << case_number << " (" << m << "x" << n << "x" << p + << "):\n"; + std::cout << std::fixed << std::setprecision(8) + << "Naive time: " << naive_time << " seconds\n"; + std::cout << std::fixed << std::setprecision(8) + << "Blocked time: " << blocked_time << " seconds\n"; + std::cout << std::fixed << std::setprecision(8) + << "Parallel time: " << parallel_time << " seconds\n"; + std::cout << std::fixed << std::setprecision(8) + << "Blocked speedup: " << (naive_time / blocked_time) << "x\n"; + std::cout << std::fixed << std::setprecision(8) + << "Parallel speedup: " << (naive_time / parallel_time) << "x\n"; + + // Append timing results to CSV + std::ofstream csv_file("timings.csv", std::ios::app); + csv_file << std::fixed << naive_time << ";" << blocked_time << ";" + << parallel_time << "\n"; + csv_file.close(); + + // Clean up + // NOTE: I use calloc so free must be used, I think it is + // UB to use delete on malloced memory + free(A); + free(B); + free(C_naive); + free(C_blocked); + free(C_parallel); + + return 0; +} diff --git a/report.pdf b/report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c63a1e6874327c92c8c34802ddb675fda0d547ee GIT binary patch literal 138648 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⪑5Q!YsDQKIWa}*nNO*(v1>!uYg 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�IFCZWn|E9pi{Jwkwh)r`H9j2GZ8_^E|Hn9Lq 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 conf( + title: [Parallel Programming - Assignment 4], + authors: "Mirek Kudinoff (2102812)", + doc, + ) + +== Results + +#figure( + image("graph1.png", width: 80%), + caption: [ + Graph plotting case number vs time taken to run each variant of matmul + ], +) + + +== Results as a table (times are in seconds) + +#let results = csv("timings.csv", delimiter: ";") + +#table( +columns: 4, +..results.flatten()) + +CSV with results obtained by running `for num in $(seq 9); ./build/matmul $num end` in fish shell, +the added code at the end appends results to a file called timings.csv. It is then used to create the +graph and the table above. + +I think the reason that blocked implementation does not consistently show an improvement has to +do with cache size and the fact that the smaller matrix inputs might fit into cache in such a way +that the naive implementation is not negatively affected. diff --git a/timings.csv b/timings.csv new file mode 100644 index 0000000..a92803b --- /dev/null +++ b/timings.csv @@ -0,0 +1,19 @@ +Input Size;Naive;Blocked;Parallel +128x64x128;0.000663;0.000619;0.002903 +100x128x56;0.000668;0.000542;0.002990 +128x64x128;0.000685;0.000632;0.002343 +32x128x32;0.000183;0.000146;0.002642 +200x100x256;0.005250;0.004530;0.001293 +256x256x256;0.017633;0.016888;0.003996 +256x300x256;0.022895;0.019400;0.004624 +64x128x64;0.000612;0.000294;0.000343 +256x256x257;0.012911;0.009770;0.002916 + + + + + + + + +