Sobol.jl
Sobol.jl copied to clipboard
benchmark/compare against Burkardt's implementation
It would be interesting to compare against this implementation, both for correctness and performance.
@Ken-B, if you feel like taking a crack at this, it would be much appreciated.
That's quite a challenge for me, as I've never compiled c++ before. However, with the help of Google I've compiled his code and the example runs. Now I'm trying to build Cxx.jl. I'll keep you posted if any results. Fingers crossed!
Oh, if it's a bother for you, I can do it myself at some point; I was just thinking of calling/benchmarking it in C++, not in Julia. But I thought you might enjoy taking a crack at it.
No bother, it's a welcome challenge. I wanted before to check out Cxx.jl and this seems like a perfect opportunity. Im just saying that it's uncharted territory for me so I don't know if I'll manage.
Cxx.jl requires llvm-svn or llvm 3.7.0, but I keep getting build errors on my mac. I've tried different versions of xcode. Where could I go to get help on that?
I don't think I would be able to manage this soon.
I ran a little test using this C++ benchmark program. I benchmarked the Julia code using
function nth(s, n)
x = Vector{Float64}(ndims(s))
for i = 1:n
next!(s, x)
end
return x
end
to compute the n-th element of a Sobol sequence.
The good news is that the answers match ours in all the cases I tried, and the performance is within a factor of 2.
The bad news is that we are up to 2x slower, so we are leaving some performance on the table. (Note that the C++ code is returning single-precision vectors, whereas we are returning double precision; this is a slight advantage, but I doubt it explains most of the difference.)