-
Notifications
You must be signed in to change notification settings - Fork 67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Using AcuteBenchmark system #5
Comments
It could be nice to clean code up, and set up automated performance testing so I don't accidentally cause regressions. Any chance you can support a way of defining GFLOPS as a function of size? I'd like to be able to present performance in terms of GFLOPS (billion floating point operations per second). It can also give you a rough idea of how well the CPU is being utilized. For example, if a CPU with avx512 runs at 3.6GHz while performing avx512 operations (configurable in the bios): julia> GHz = 3.6;
julia> fma_per_clock = 2;
julia> dflop_per_fma = 16;
julia> GHz * fma_per_clock * dflop_per_fma
115.2 which tells you that anything short of |
@chriselrod There is this https://github.com/triscale-innov/GFlops.jl package. Does this do what you want? If so I can integrate it, into AcuteBenchmark If not, do you have an example code of what you want? |
Here is an example, although that function should be called That said, your idea of using GFLops.jl would be much cooler and more convenient. |
GFlops.jl returns an incorrect result for the broadcasted functions. What should we do? Can we calculate the gflops for a scalar call and then multiply it by the dimension? I did it in https://github.com/aminya/AcuteBenchmark.jl/blob/a6b5c0a4591513d06af764bd38fd1558c946f797/src/benchmarks.jl#L197 for example |
That's actually what I'm not sure what to do about vector operations. Would you like me to add explicit support for counting Until now, I did not do anything, mostly for lack of use cases that would guide the design of the API. But I'm open to any suggestion if you know what kind of features you'd like to see in |
Hopefully this should be fixed as soon as Cassette releases a new version (see JuliaLabs/Cassette.jl#171). In the meantime, you could either use Julia 1.3 or locally |
Okay, that sounds great.
I would personally find SIMDPirates and LoopVectorization support very convenient! |
I created a package for benchmarking functions called AcuteBenchmark.
https://github.com/aminya/AcuteBenchmark.jl
I particularly made it for IntelVectorMath (VML)
If you want we can switch the benchmarking system to AcuteBenchmark. It is very easy to use. It automatically generates random vectors based on the limits and the size given and then benchmarks and plots the result.
Other than the Acutebenchmark doc, there is a fully working example available here: https://github.com/JuliaMath/VML.jl/blob/AcuteBenchmark/benchmark/benchmark.jl
The text was updated successfully, but these errors were encountered: