forked from victorlei/smop
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMatlabBench.m
More file actions
59 lines (45 loc) · 2.3 KB
/
MatlabBench.m
File metadata and controls
59 lines (45 loc) · 2.3 KB
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
function [ mRunTime,tRunTime ] = MatlabBench( operationMode )
allFunctions = {@MatrixGeneration, @MatrixAddition,@MatrixMultiplication,...
@MatrixQuadraticForm, @MatrixReductions, @ElementWiseOperations, @MatrixExp,...
@MatrixSqrt, @Svd, @Eig,@CholDec, @MatInv, @LinearSystem, @LeastSquares,...
@CalcDistanceMatrix, @KMeans};
allFunctionsString = {'Matrix Generation', 'Matrix Addition', 'Matrix Multiplication',...
'Matrix Quadratic Form', 'Matrix Reductions', 'Element Wise Operations',...
'Matrix Exponential', 'Matrix Square Root', 'SVD', 'Eigen Decomposition',...
'Cholesky Decomposition', 'Matrix Inversion','Linear System Solution',...
'Linear Least Squares', 'Squared Distance Matrix', 'K-Means Run Time'};
numFun = length(allFunctions);
if(operationMode == 1) % Partial Benchmark
vMatrixSize = csvread(fullfile('Inputs', 'vMatrixSizePartial.csv'));
numIterations = csvread(fullfile('Inputs', 'numIterationsPartial.csv'));
elseif(operationMode == 2) % Full Benchmark
vMatrixSize = csvread(fullfile('Inputs', 'vMatrixSizeFull.csv'));
numIterations = csvread(fullfile('Inputs','numIterationsFull.csv'));
elseif(operationMode == 0) % Test Benchmark
vMatrixSize = 2;
numIterations = 1;
end
vTestIdx=1:numFun; % change this to do different tests
cRunTimeFunctions = allFunctions(vTestIdx);
cFunctionString = allFunctionsString(vTestIdx);
mRunTime = zeros(length(vMatrixSize), length(cRunTimeFunctions), numIterations);
cRunTime= cell(length(allFunctions)+1,length(vMatrixSize)+1); % a table containing all the information
cRunTime{1,1}="FunctionName\\MatrixSize";
for ii = 1:length(vMatrixSize)
matrixSize = vMatrixSize(ii);
mX = randn(matrixSize, matrixSize);
mY = randn(matrixSize, matrixSize);
disp(['Matrix Size - ', num2str(matrixSize)]);
for jj = 1:length(cRunTimeFunctions)
disp(['Processing ', num2str(cFunctionString{jj}), ' Matrix Size ', num2str(matrixSize)]);
for kk = 1:numIterations
fun=@() cRunTimeFunctions{jj}(matrixSize, mX, mY);
mRunTime(ii, jj, kk) = timeit(fun)*1e6; % computes median of bench times
end
cRunTime{jj+1,1}=num2str(cFunctionString{jj});
cRunTime{1,ii+1}=matrixSize;
cRunTime{jj+1,ii+1}=mean(mRunTime(ii, jj,:));
end
end
tRunTime=cell2table(cRunTime);
end