黒木玄
2018-01-20
次のベンチマークを JuliaPro v.0.6.2.1 (Open BLAS 版)とその MKL 版で実行してみました.
手順:
JuliaPro personal 版を2種類インストールする(通常版(Open BLAS版)とMKL版).
https://github.com/RoyiAvital/MatlabJuliaMatrixOperationsBenchmark の Clone or download から ZIP ファイルをダウンロードして, このファイルが置いてあるディレクトリ以下の openblas, mkl という名のディレクトリに展開する.
openblas 以下で JuliaPro の通常版の julia で JuliaMatrixBenchmark.jl を実行する.
mkl 以下で JuliaPro の MKL 版の julia で JuliaMatrixBenchmark.jl を実行する.
どちらの実行にも数十分かかる. それぞれのディレクトリに RunTimeJulia000{1,2,3}.csv というファイルができていることを確認する.
このノートブックを実行する.
注意: 実行したベンチマークは11ヶ月前に書かれたベンチマークのためのコードなので現在では不適切である可能性がある. 実際, K-Meansのテストを失敗しているように見える. 誰かもっと完全なベンチマークテストを実行して欲しいと思う.
using PyPlot
function plot_RunTimeJulia!(openblas, mkl, testname, matrixsize)
plot(matrixsize, openblas, label="Open BLAS")
plot(matrixsize, mkl, label="MKL", ls="--")
xlabel("matrix size")
ylabel("run time [sec]")
grid(ls=":")
legend()
title("$testname")
end
function plot_RunTimeJulia(CSVfilename, cFunctionString, MatrixSize)
L = length(cFunctionString)
M = length(MatrixSize)
openblas = readcsv("openblas/$CSVfilename")
mkl = readcsv("mkl/$CSVfilename")
@assert size(openblas) == (M, L)
@assert size(mkl) == (M, L)
k = 3
l = div(L+k-1, k)
figure(figsize=(3k, 3l))
for j in 1:L
subplot(l, k, j)
plot_RunTimeJulia!(openblas[:,j], mkl[:,j], cFunctionString[j], MatrixSize)
end
tight_layout()
end
plot_RunTimeJulia (generic function with 1 method)
CSVfilename = "RunTimeJulia0001.csv"
MatrixSize = [2,5,10,20,50,100,200,300,500,750,1000,2000,3000,4000]
cFunctionString = [
"Matrix Generation",
"Matrix Addition",
"Matrix Multiplication",
"Matrix Quadratic Form",
"Matrix Reductions",
"Element Wise Operations"
]
plot_RunTimeJulia(CSVfilename, cFunctionString, MatrixSize)
CSVfilename = "RunTimeJulia0002.csv"
MatrixSize = [2,5,10,20,50,100,200,300,500,750,1000,2000,3000,4000]
cFunctionString = [
"Matrix Exponential",
"Matrix Square Root",
"SVD",
"Eigen Decomposition",
"Cholesky Decomposition",
"Matrix Inversion"
]
plot_RunTimeJulia(CSVfilename, cFunctionString, MatrixSize)
CSVfilename = "RunTimeJulia0003.csv"
MatrixSize = [2,5,10,20,50,100,200,300,500,750,1000,2000,3000,4000]
cFunctionString = [
"Linear System Solution",
"Linear Least Squares",
"Squared Distance Matrix",
"K-Means"
]
plot_RunTimeJulia(CSVfilename, cFunctionString, MatrixSize)
K-Means のテストは失敗しているように見える.