From ed7b00d2ef347c2fd513ebd3cb8bbecb4ab8d681 Mon Sep 17 00:00:00 2001 From: Simon Byrne Date: Wed, 19 Nov 2014 17:55:10 +0000 Subject: [PATCH] fix performance tests for gamma --- perf/samplers.jl | 22 +++++++++++++++------- src/samplers/gamma.jl | 4 ++-- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/perf/samplers.jl b/perf/samplers.jl index e13fa319d..9c97b9374 100644 --- a/perf/samplers.jl +++ b/perf/samplers.jl @@ -87,15 +87,22 @@ benchmark_exponential() = ( ## gamma -import Distributions: GammaRmathSampler, GammaMTSampler +import Distributions: GammaRmathSampler, GammaGDSampler, GammaGSSampler, + GammaMTSampler, GammaIPSampler getname(::Type{GammaRmathSampler}) = "rmath" +getname(::Type{GammaGDSampler}) = "GD" +getname(::Type{GammaGSSampler}) = "GS" getname(::Type{GammaMTSampler}) = "MT" +getname(::Type{GammaIPSampler}) = "IP" -benchmark_gamma() = ( - make_procs(GammaRmathSampler, GammaMTSampler), - "(α, scale)", [(α, 1.0) for α in [0.5, 1.0, 2.0, 5.0, 20.0]]) +benchmark_gamma_hi() = ( + make_procs(GammaRmathSampler, GammaMTSampler, GammaGDSampler), + "Dist", [(Gamma(α, 1.0),) for α in [1.5, 2.0, 3.0, 5.0, 20.0]]) +benchmark_gamma_lo() = ( + make_procs(GammaRmathSampler, GammaGSSampler, GammaIPSampler), + "Dist", [(Gamma(α, 1.0),) for α in [0.1, 0.5, 0.9]]) ### main @@ -103,7 +110,7 @@ const dnames = ["categorical", "binomial", "poisson", "exponential", - "gamma"] + "gamma_hi","gamma_lo"] function printhelp() println("Require exactly one argument. Usage:") @@ -141,10 +148,11 @@ function do_benchmark(dname; verbose::Int=2) dname == "binomial" ? benchmark_binomial() : dname == "poisson" ? benchmark_poisson() : dname == "exponential" ? benchmark_exponential() : - dname == "gamma" ? benchmark_gamma() : + dname == "gamma_hi" ? benchmark_gamma_hi() : + dname == "gamma_lo" ? benchmark_gamma_lo() : error("benchmarking function for $dname has not been implemented.") - r = run(procs, cfgs; duration=0.2, verbose=verbose) + r = run(procs, cfgs; duration=0.5, verbose=verbose) println() show(r; unit=:mps, cfghead=cfghead) end diff --git a/src/samplers/gamma.jl b/src/samplers/gamma.jl index 875260d4f..f3062542b 100644 --- a/src/samplers/gamma.jl +++ b/src/samplers/gamma.jl @@ -220,7 +220,7 @@ end function GammaIPSampler{S<:Sampleable}(d::Gamma,::Type{S}) GammaIPSampler(Gamma(1.0+d.shape,d.scale), -1.0/d.shape) end -GammaIPSampler(d::Gamma) = GammaIPSampler(d,GammaGDSampler) +GammaIPSampler(d::Gamma) = GammaIPSampler(d,GammaMTSampler) function rand(s::GammaIPSampler) x = rand(s.s) @@ -231,7 +231,7 @@ end # function sampler(d::Gamma) # if d.shape < 1.0 # # TODO: d.shape = 0.5 : use scaled chisq -# GammaIPSampler(d,GammaGDSampler) +# GammaIPSampler(d) # elseif d.shape == 1.0 # Exponential(d.scale) # else