1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#Task solution - matrix multiplication in fortran#
This repository contains the realization of the [first task](http://home.agh.edu.pl/~macwozni/fort/zadanie1.pdf) of the fortran programming language course at AGH in Cracov.
##The directory structure##
CMakeLists.txt
README.md
make_results.sh
template.gnuplot
src/
blockmath.F90
testing.F90
naivemath.F90
bettermath.F90
main.F90
dotmath.F90
bettermath2.F90
res/
dot_16
dot_8
mat_8
bett2_4
bett_4
bett2_8
block_4
naiv_8
mat_16
bett_8
naiv_4
block_8
naiv_16
mat_4
dot_4
bett_16
block_16
bett2_16
wykres4.pdf
wykres8.pdf
wykres16.pdf
###CmakeLists.txt###
This file contains CMake definitions for building fortran sources. It does not, however, define the actions of running the program, generating results, nor plotting.
###make_results.sh###
This script runs built program under different options and writes measured multiplication times in `res/{naiv,bett,dot,mat,bett2,block}_{4,8,16}` while also running gnuplot to generate their corresponding plots into `res/wykres{4,8,16}.pdf`.
###template.gnuplot###
It's the gnuplot script for generating plots from text files in `res`. In this script `[kind]` has to be replaced with actual number (for example with the help of `sed`, see `make_results.sh` for how it's done).
###src/###
This directory contains the fortran sources of the project, namely modules sources `*math.F90` and main program source `main.F90`.
###res/###
This directory contains text results of matrix multiplication time measuring (files without extension) and their corresponding plots (pdf files).
##Building##
As a prerequisite, CMake, make and a fortran compiler, either gfortran or ifort, are required (didn't want to support proprietary compiler :c but had to).
`make_results.sh` assumes an out-of-source build in `build/` has been performed.
$ mkdir build
$ cd build
$ cmake ../
$ make mull
The CMake configuration provided allows one to specify one of twosets of compiler flags. The default is RELEASE and it can be changed to DEBUG using
$ cmake .. -DCMAKE_BUILD_TYPE=DEBUG
##Running##
The executable is `mull`.
$ ./mull
Usage: mull KIND IMPLEMENTATION
where KIND is one of: 4, 8, 16
IMPLEMENTATION is one of: naiv, bett, dot, mat, bett2, block
When ran with proper arguments, it prints matrix sizes and multiplication times in columns.
Text files and plots in `res/` can be regenerated by issuing
$ ./make_results.sh
from within the main project directory (may take up to several tens of minutes).
|