**Name:** Matrix multiplication with Files, reproducibility example **Contact Person**: support-compss@bsc.es **Access Level**: public **License Agreement**: Apache2 **Platform**: COMPSs # Description Matrix multiplication is a binary operation that takes a pair of matrices and produces another matrix. If A is an n×m matrix and B is an m×p matrix, the result AB of their multiplication is an n×p matrix defined only if the number of columns m in A is equal to the number of rows m in B. When multiplying A and B, the elements of the rows in A are multiplied with corresponding columns in B. In this implementation, A and B are square matrices (same number of rows and columns), and so it is the result matrix C. Each matrix is divided in N blocks of M doubles (N hardcoded to 2, and M hardcoded to 8). The multiplication of two blocks is done by a multiply task method with a simple three-nested-loop implementation. When executed with COMPSs, the main program generates N^3^ tasks arranged as N^2^ chains of N tasks in the dependency graph. # Reproducibility To reproduce the exact results of this example, follow the instructions at the [Workflow Provenance section at COMPSs User Manual](https://compss-doc.readthedocs.io/en/stable/Sections/05_Tools/04_Workflow_Provenance.html) # Execution instructions Usage: ``` runcompss --lang=python src/matmul_files.py inputs_folder/ outputs_folder/ ``` where: * inputs_folder/: Folder where A and B matrices are located * outputs_folder/: Folder with the resulting C matrix # Execution Examples ``` runcompss --lang=python src/matmul_files.py inputs/ outputs/ runcompss src/matmul_files.py inputs/ outputs/ python -m pycompss src/matmul_files.py inputs/ outputs/ ``` # Build No build is required