Open aminya opened 5 years ago
@RoyiAvital I added the default Julia benchmark, and I requested my pull again.
@RoyiAvital If you have trouble merging my pull request because it is very different than your master run these commands to replace my version with your master. (from this https://stackoverflow.com/questions/27449334/force-overwrite-on-master-from-a-pull-request) First take a backup:
git checkout RoyiBackup
Now replace
git checkout master
git fetch https://github.com/aminya/MatlabJuliaMatrixOperationsBenchmark
git checkout pr-branch
git push -f origin fork/pr-branch:master
@RoyiAvital do you have any problems that prevent you from merging?
Hi,
As I wrote, I will evaluate the PR once I have access to Julia with MKL.
Also, I wouldn't use timeit()
on MATLAB as I wrote.
Anyhow, you have a great benchmark on your on. You can test it and it will be perfect.
As I wrote, I will evaluate the PR once I have access to Julia with MKL.
I have referenced your issue in my pull request to MKL.jl and the new issue I created.
Also, I wouldn't use
timeit()
on MATLAB as I wrote.
I can contact MATLAB's support to get their recommendation, otherwise, I can write a custom function to replace timeit()
.
Anyhow, you have a great benchmark on your on. You can test it and it will be perfect.
Well, the point of me updating this repository was to replace the misleading old figures. I am developing some parallel projects to provide a Julia package that provides native Julia functions replicating MATLAB's functions (such as for image processing). And, I plan to add the benchmark of those to this repository. If you think, you can not evaluate all the upcoming benchmarks, please give me write access, or I should think about deforking my repository.
I don't find my figures misleading. They were accurate to the data I received on my machine and they can be reproduced given the system configuration mentioned.
I don't want to use MKL.jl
. I am waiting (It might not happen ever) for Julia with MKL out of the box.
Regarding timeit()
no need to write your own function.
On my benchmark I'd like to stay with my own measurement method of timing each iteration and having array of timings to work on (Minimum, Maximum, Mean and Median).
The way I see it, it is great you forked my work and you can take it from there to the path you find appropriate. Keep doing it. I'm interested to see the effect of integrating MKL into Julia. I hope you'll be able to use more advanced flags of MKL as well later on.
I don't find my figures misleading. They were accurate to the data I received on my machine and they can be reproduced given the system configuration mentioned.
Yes, I am not saying the data are manipulated. Sorry if I meant that. But the figures are misleading.
First, you should use loglog
plots when you are comparing two curves that are very near to each other because now the difference when matrix size is less than 1000 is not visible because the x distance between matrix size is taking all the space. (see AnalyszeRunTimeResults.m ). This can be fixed easily just by replacing loglog
with plot
Second, for Julia+SIMD, only 3 functions made use of @simd
and multi-threading in Julia. However, in your figures, you have included Julia+SIMD for all the functions, and they have a different result than Julia even if they have not used @simd
! This shows that tiq
toc
method you used for benchmarking in Julia is not accurate at all and has a lot of noise even for the same function.
Regarding
timeit()
no need to write your own function. On my benchmark I'd like to stay with my own measurement method of timing each iteration and having array of timings to work on (Minimum, Maximum, Mean and Median).
Well, this is not a severe problem. It can be replaced easily. However, I calculated the mean of multiple iterations of running timeit
.
The way I see it, it is great you forked my work and you can take it from there to the path you find appropriate. Keep doing it.
I will create another repository to ease my workflow (starting with my forked one). However, I will keep this pull request so you can merge it later.
Julia Main (JuliaMain-JuliaBench-JuliaBenchSIMD):
Julia Analyzer (AnalyszeRunTimeResults-AnalysisJuliaPlotter):
Matlab Main (MatlabMain-MatlabBench):
Matlab Analyzer (AnalyszeRunTimeResults):