ffevotte / GFlops.jl

Estimate the absolute performance of a piece of Julia code

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GFlops.jl

Lifecycle Build Status codecov.io

When code performance is an issue, it is sometimes useful to get absolute performance measurements in order to objectivise what is "slow" or "fast". GFlops.jl leverages the power of Cassette.jl to automatically count the number of floating-point operations in a piece of code. When combined with the accuracy of BenchmarkTools, this allows for easy and absolute performance measurements.

Example use

julia> using GFlops

julia> x = rand(1000);

julia> @count_ops sum($x)
Flop Counter:
 add32: 0
 sub32: 0
 mul32: 0
 div32: 0
 add64: 999
 sub64: 0
 mul64: 0
 div64: 0


julia> @gflops sum($x);
  10.03 GFlops,  19.15% peak  (9.99e+02 flop, 9.96e-08 s)

Installation

This package is registered and can therefore be simply be installed with

pkg> add GFlops

Caveat

GFlops.jl does not see what happens outside the realm of Julia code. It especially does not see operations performed in external libraries such as BLAS calls:

julia> using LinearAlgebra

julia> @count_ops dot($x, $x)
Flop Counter:
 add32: 0
 sub32: 0
 mul32: 0
 div32: 0
 add64: 0
 sub64: 0
 mul64: 0
 div64: 0

This is a known issue; we'll try and find a way to circumvent the problem.

About

Estimate the absolute performance of a piece of Julia code

License:Other


Languages

Language:Julia 97.8%Language:Shell 2.2%