**Workflow Type:**COMPSs

**Name:** Matrix Multiplication

**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.

N and M have been hardcoded to 6 and 8 respectively.

# Execution instructions

Usage:

```
runcompss --classpath=application_sources/jar/matmul.jar matmul.files.Matmul inputFolder/ outputFolder/
```

where:

- inputFolder: folder where input files are located
- outputFolder: folder where output files are located

# Build

## Option 1: Native java

```
javac src/main/java/matmul/*/*.java
cd src/main/java/; jar cf matmul.jar matmul/
cd ../../../; mv src/main/java/matmul.jar jar/
```

## Option 2: Maven

```
mvn clean package
```

## Version History

#### COMPSs 3.3.1 (earliest) Created 2nd Aug 2024 at 08:24 by Raül Sirvent

Executed with COMPSs 3.3.1 in a macOS laptop, with data persistence enabled

Frozen

`COMPSs-3.3.1`

`73d0521`

##### Creator

##### Submitter

*Java COMPSs Matrix Multiplication, out-of-core using files, reproducible example, data persistence True*. WorkflowHub. https://doi.org/10.48546/WORKFLOWHUB.WORKFLOW.1086.1

**Views:** 356
**Downloads:** 91

**Created**: 2nd Aug 2024 at 08:24

None

**Total size:**383 KB