PyCOMPSs Matrix Multiplication, out-of-core using files
**Name:** Matrix multiplication with Files
**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. 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.
# Execution instructions
Usage:
```
runcompss --lang=python src/matmul_files.py numberOfBlocks blockSize
```
where:
* numberOfBlocks: Number of blocks inside each matrix
* blockSize: Size of each block
# Execution Examples
```
runcompss --lang=python src/matmul_files.py 4 4
runcompss src/matmul_files.py 4 4
python -m pycompss src/matmul_files.py 4 4
```
# Build
No build is required
- Publisher
- [<#ROCrate::Organization https://ror.org/05sd8tv96 @properties={"@id"=>"https://ror.org/05sd8tv96", "@type"=>"Organization", "name"=>"Barcelona Supercomputing Center"}>]
- License
- Apache-2.0
Contents
-
matmul_files.py
Size: 1948
Format: text/plain
-
complete_graph.svg
Size: 337112
Format: [["image/svg+xml", <#ROCrate::ContextualEntity https://www.nationalarchives.gov.uk/PRONOM/fmt/92 @properties={"@id"=>"https://www.nationalarchives.gov.uk/PRONOM/fmt/92", "@type"=>"WebSite", "name"=>"Scalable Vector Graphics"}>]]
-
__init__.py
Size: 0
Format: text/plain
-
matmul_tasks.py
Size: 1627
Format: text/plain
-
App_Profile.json
Size: 250
Format: ["application/json", <#ROCrate::ContextualEntity https://www.nationalarchives.gov.uk/PRONOM/fmt/817 @properties={"@id"=>"https://www.nationalarchives.gov.uk/PRONOM/fmt/817", "@type"=>"WebSite", "name"=>"JSON Data Interchange Format"}>]
-
compss_command_line_arguments.txt
Size: 25
Format: text/plain
-
README
Size: 1429
-
pom.xml
Size: 4414
-
ro-crate-info.yaml
Size: 2061
-
A.0.0
Size: 16384
-
A.0.1
Size: 16384
-
A.0.2
Size: 16384
-
A.0.3
Size: 16384
-
A.0.4
Size: 16384
-
A.0.5
Size: 16384
-
A.0.6
Size: 16384
-
A.0.7
Size: 16384
-
A.1.0
Size: 16384
-
A.1.1
Size: 16384
-
A.1.2
Size: 16384
-
A.1.3
Size: 16384
-
A.1.4
Size: 16384
-
A.1.5
Size: 16384
-
A.1.6
Size: 16384
-
A.1.7
Size: 16384
-
A.2.0
Size: 16384
-
A.2.1
Size: 16384
-
A.2.2
Size: 16384
-
A.2.3
Size: 16384
-
A.2.4
Size: 16384
-
A.2.5
Size: 16384
-
A.2.6
Size: 16384
-
A.2.7
Size: 16384
-
A.3.0
Size: 16384
-
A.3.1
Size: 16384
-
A.3.2
Size: 16384
-
A.3.3
Size: 16384
-
A.3.4
Size: 16384
-
A.3.5
Size: 16384
-
A.3.6
Size: 16384
-
A.3.7
Size: 16384
-
A.4.0
Size: 16384
-
A.4.1
Size: 16384
-
A.4.2
Size: 16384
-
A.4.3
Size: 16384
-
A.4.4
Size: 16384
-
A.4.5
Size: 16384
-
A.4.6
Size: 16384
-
A.4.7
Size: 16384
-
A.5.0
Size: 16384
-
A.5.1
Size: 16384
-
A.5.2
Size: 16384
-
A.5.3
Size: 16384
-
A.5.4
Size: 16384
-
A.5.5
Size: 16384
-
A.5.6
Size: 16384
-
A.5.7
Size: 16384
-
A.6.0
Size: 16384
-
A.6.1
Size: 16384
-
A.6.2
Size: 16384
-
A.6.3
Size: 16384
-
A.6.4
Size: 16384
-
A.6.5
Size: 16384
-
A.6.6
Size: 16384
-
A.6.7
Size: 16384
-
A.7.0
Size: 16384
-
A.7.1
Size: 16384
-
A.7.2
Size: 16384
-
A.7.3
Size: 16384
-
A.7.4
Size: 16384
-
A.7.5
Size: 16384
-
A.7.6
Size: 16384
-
A.7.7
Size: 16384
-
B.0.0
Size: 16384
-
B.0.1
Size: 16384
-
B.0.2
Size: 16384
-
B.0.3
Size: 16384
-
B.0.4
Size: 16384
-
B.0.5
Size: 16384
-
B.0.6
Size: 16384
-
B.0.7
Size: 16384
-
B.1.0
Size: 16384
-
B.1.1
Size: 16384
-
B.1.2
Size: 16384
-
B.1.3
Size: 16384
-
B.1.4
Size: 16384
-
B.1.5
Size: 16384
-
B.1.6
Size: 16384
-
B.1.7
Size: 16384
-
B.2.0
Size: 16384
-
B.2.1
Size: 16384
-
B.2.2
Size: 16384
-
B.2.3
Size: 16384
-
B.2.4
Size: 16384
-
B.2.5
Size: 16384
-
B.2.6
Size: 16384
-
B.2.7
Size: 16384
-
B.3.0
Size: 16384
-
B.3.1
Size: 16384
-
B.3.2
Size: 16384
-
B.3.3
Size: 16384
-
B.3.4
Size: 16384
-
B.3.5
Size: 16384
-
B.3.6
Size: 16384
-
B.3.7
Size: 16384
-
B.4.0
Size: 16384
-
B.4.1
Size: 16384
-
B.4.2
Size: 16384
-
B.4.3
Size: 16384
-
B.4.4
Size: 16384
-
B.4.5
Size: 16384
-
B.4.6
Size: 16384
-
B.4.7
Size: 16384
-
B.5.0
Size: 16384
-
B.5.1
Size: 16384
-
B.5.2
Size: 16384
-
B.5.3
Size: 16384
-
B.5.4
Size: 16384
-
B.5.5
Size: 16384
-
B.5.6
Size: 16384
-
B.5.7
Size: 16384
-
B.6.0
Size: 16384
-
B.6.1
Size: 16384
-
B.6.2
Size: 16384
-
B.6.3
Size: 16384
-
B.6.4
Size: 16384
-
B.6.5
Size: 16384
-
B.6.6
Size: 16384
-
B.6.7
Size: 16384
-
B.7.0
Size: 16384
-
B.7.1
Size: 16384
-
B.7.2
Size: 16384
-
B.7.3
Size: 16384
-
B.7.4
Size: 16384
-
B.7.5
Size: 16384
-
B.7.6
Size: 16384
-
B.7.7
Size: 16384
-
C.0.0
Size: 28672
-
C.0.1
Size: 28672
-
C.0.2
Size: 28672
-
C.0.3
Size: 28672
-
C.0.4
Size: 28672
-
C.0.5
Size: 28672
-
C.0.6
Size: 28672
-
C.0.7
Size: 28672
-
C.1.0
Size: 28672
-
C.1.1
Size: 28672
-
C.1.2
Size: 28672
-
C.1.3
Size: 28672
-
C.1.4
Size: 28672
-
C.1.5
Size: 28672
-
C.1.6
Size: 28672
-
C.1.7
Size: 28672
-
C.2.0
Size: 28672
-
C.2.1
Size: 28672
-
C.2.2
Size: 28672
-
C.2.3
Size: 28672
-
C.2.4
Size: 28672
-
C.2.5
Size: 28672
-
C.2.6
Size: 28672
-
C.2.7
Size: 28672
-
C.3.0
Size: 28672
-
C.3.1
Size: 28672
-
C.3.2
Size: 28672
-
C.3.3
Size: 28672
-
C.3.4
Size: 28672
-
C.3.5
Size: 28672
-
C.3.6
Size: 28672
-
C.3.7
Size: 28672
-
C.4.0
Size: 28672
-
C.4.1
Size: 28672
-
C.4.2
Size: 28672
-
C.4.3
Size: 28672
-
C.4.4
Size: 28672
-
C.4.5
Size: 28672
-
C.4.6
Size: 28672
-
C.4.7
Size: 28672
-
C.5.0
Size: 28672
-
C.5.1
Size: 28672
-
C.5.2
Size: 28672
-
C.5.3
Size: 28672
-
C.5.4
Size: 28672
-
C.5.5
Size: 28672
-
C.5.6
Size: 28672
-
C.5.7
Size: 28672
-
C.6.0
Size: 28672
-
C.6.1
Size: 28672
-
C.6.2
Size: 28672
-
C.6.3
Size: 28672
-
C.6.4
Size: 28672
-
C.6.5
Size: 28672
-
C.6.6
Size: 28672
-
C.6.7
Size: 28672
-
C.7.0
Size: 28672
-
C.7.1
Size: 28672
-
C.7.2
Size: 28672
-
C.7.3
Size: 28672
-
C.7.4
Size: 28672
-
C.7.5
Size: 28672
-
C.7.6
Size: 28672
-
C.7.7
Size: 28672