#pragma once void matmul_cpu(float *A, float *B, float *C, size_t M, size_t N, size_t K); void matmul_naive(float *A, float *B, float *C, size_t M, size_t N, size_t K); void matmul_opt1(float *A, float *B, float *C, size_t M, size_t N, size_t K); void matmul_opt2(float *A, float *B, float *C, size_t M, size_t N, size_t K); void matmul_multigpu(float *A, float *B, float *C, size_t M, size_t N, size_t K); void matmul_cublas(float *A, float *B, float *C, size_t M, size_t N, size_t K); void matmul_cpu_initialize(size_t M, size_t N, size_t K); void matmul_naive_initialize(size_t M, size_t N, size_t K); void matmul_opt1_initialize(size_t M, size_t N, size_t K); void matmul_opt2_initialize(size_t M, size_t N, size_t K); void matmul_multigpu_initialize(size_t M, size_t N, size_t K); void matmul_cublas_initialize(size_t M, size_t N, size_t K); void matmul_cpu_finalize(size_t M, size_t N, size_t K); void matmul_naive_finalize(size_t M, size_t N, size_t K); void matmul_opt1_finalize(size_t M, size_t N, size_t K); void matmul_opt2_finalize(size_t M, size_t N, size_t K); void matmul_multigpu_finalize(size_t M, size_t N, size_t K); void matmul_cublas_finalize(size_t M, size_t N, size_t K);