#include #include #include // Funktion erzeugt zwei Matrizen A und B der Größe n x n mit Zufallswerten void generateRandomMatrices(int n, std::vector>& A, std::vector>& B, double min_val = 0.0, double max_val = 10.0) { // Zufallsgenerator initialisieren std::srand(static_cast(std::time(nullptr))); A.resize(n, std::vector(n)); B.resize(n, std::vector(n)); for (int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) { double r1 = static_cast(std::rand()) / RAND_MAX; // 0..1 double r2 = static_cast(std::rand()) / RAND_MAX; // 0..1 A[i][j] = min_val + r1 * (max_val - min_val); B[i][j] = min_val + r2 * (max_val - min_val); } } // Matrizenmultiplikation std::vector> matmul(const std::vector>& A, const std::vector>& B) { int n = A.size(); int m = B[0].size(); int p = B.size(); if (A[0].size() != B.size()) throw std::runtime_error("Matrixgrößen passen nicht."); std::vector> C(n, std::vector(m, 0.0)); for (int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) for (int k = 0; k < p; ++k) C[i][j] += A[i][k] * B[k][j]; return C; } int main() { int N = 500; // z.B. 500x500 std::vector> A, B; auto start = std::chrono::steady_clock::now(); generateRandomMatrices(N, A, B); auto C_serial = matmul(A, B); auto end = std::chrono::steady_clock::now(); std::chrono::duration diff = end - start; std::cout << "Took: " << diff.count() << "s\n"; return 0; } // // Created by Anke Bidlingmaier on 15.12.25.