CARMA
Communication-Avoiding Recursive Matrix Multiply
Install / Use
/learn @dose78/CARMAREADME
Overview
CARMA is our communication-optimal parallel recursive rectangular matrix multiplication algorithm. We use Cilk Plus for the parallelism, and MKL for the base-case multiplication. Research in progress: paper, poster.
Setup
Define all parameters at the top of run.sh.
Usage
./run.sh
Then check data.csv (or whichever output file you specified) for the results.
Notes
- To maintain simplicity, we don't handle the case where the largest dimension is not divisible by two. Therefore, to be safe, please only use multipes of sufficiently large powers of two.
- The most interesting results are generated by "dot-product-like" dimensions, for example m = n = 64, k = 2^20 (we are multiplying an m x k matrix by a k x n matrix, and the result is m x n).
- For faster trials, ensure that the correctness test at the bottom of
data_gathereris commented.
Requirements
You must have Intel Parallel Studio XE installed, which will provide Cilk Plus and MKL.
Authors
David Eliahu, Omer Spillinger
Mentors/Supervisors
Professor Armando Fox, Professor James Demmel, Benjamin Lipshitz, Oded Schwartz, Shoaib Kamil
