Kautenja / fast-cpu-transpose

A parallel, recursive, and cache-oblivious Matrix initialization and transposition method

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fast CPU Transpose

Build Status

Completed for Lab 3 of COMP7300, Advanced Computer Architecture, at Auburn University.

Usage

Compilation

The code uses threads with -pthread flag. The usage of the -Ofast flag enables all compile-time optimizations.

cc -Ofast -pthread <code_file> -o <output_executable>
Example
cc -Ofast -pthread rowwise.c -o rowwise

Test Automation

The 5 test runs are automated with a shell script. Make sure the permissions are set correctly first by executing the following from the top level of the project:

chmod 0755 ./run.sh

A test can be executed using the following command from the top level:

./run.sh <code file name>

This will route the shell output to a file in the build directory called <code file name>.out. Note that the .c IS NOT included in this command.

Example

To run the default provided code (adjusted for 7 tests):

./run.sh myInitializeMatrix

rowwise.c

contains the code for row-wise initialization and transpose. To compile and run the row-wise initialization (and optimized transposition):

mkdir -p build
cc -Ofast -pthread rowwise.c -o build/rowwise
./build/rowwise

To compile and run the 5 consecutive tests saving the output to a file:

./run.sh rowwise

columnwise.c

contains the code for column-wsie intialization and transpose. To compile and run the column-wise initialization (and optimized transposition):

mkdir -p build
cc -Ofast -pthread columnwise.c -o build/columnwise
./build/columnwise

To compile and run the 5 consecutive tests saving the output to a file:

./run.sh columnwise

About

A parallel, recursive, and cache-oblivious Matrix initialization and transposition method

License:MIT License


Languages

Language:Jupyter Notebook 94.5%Language:C 3.7%Language:Python 1.2%Language:Makefile 0.3%Language:TeX 0.2%Language:Shell 0.0%