Alright, thanks! All these is looking very positive for Julia.
On Sunday, April 27, 2014 3:36:23 PM UTC+8, Elliot Saba wrote: > > I highly suggest you read through the whole "Performance > Tips<http://julia.readthedocs.org/en/latest/manual/performance-tips/>" > page I linked to above; it has documentation on all these little features > and stuff. I did get a small improvement (~5%) by enabling SIMD extensions > on the two inner for loops, but that requires a very recent build of Julia > and is a somewhat experimental feature. Neat to have though. > -E > > > On Sun, Apr 27, 2014 at 12:14 AM, Freddy Chua <[email protected]<javascript:> > > wrote: > >> wooh, this @inbounds thing is new to me... At least it does shows that >> Julia is comparable to Java. >> >> >> On Sunday, April 27, 2014 3:04:26 PM UTC+8, Elliot Saba wrote: >> >>> Since we have made sure that our for loops have the right boundaries, we >>> can assure the compiler that we're not going to step out of the bounds of >>> an array, and surround our code in the @inbounds macro. This is not >>> something you should do unless you're certain that you'll never try to >>> access memory out of bounds, but it does get the runtime down to 0.23 >>> seconds, which is on the same order as Java. Here's the full >>> code<https://gist.github.com/staticfloat/11339342>with all the >>> modifications made. >>> -E >>> >>> >>> On Sat, Apr 26, 2014 at 11:55 PM, Freddy Chua <[email protected]> wrote: >>> >>>> Stochastic Gradient Descent is one of the most important optimisation >>>> algorithm in Machine Learning. So having it perform better than Java is >>>> important to have more widespread adoption. >>>> >>>> >>>> On Sunday, April 27, 2014 2:03:28 PM UTC+8, Freddy Chua wrote: >>>> >>>>> This code takes 60+ secs to execute on my machine. The Java equivalent >>>>> takes only 0.2 secs!!! Please tell me how to optimise the following >>>>> code.begin >>>>> >>>>> begin >>>>> N = 10000 >>>>> K = 100 >>>>> rate = 1e-2 >>>>> ITERATIONS = 1 >>>>> >>>>> # generate y >>>>> y = rand(N) >>>>> >>>>> # generate x >>>>> x = rand(K, N) >>>>> >>>>> # generate w >>>>> w = zeros(Float64, K) >>>>> >>>>> tic() >>>>> for i=1:ITERATIONS >>>>> for n=1:N >>>>> y_hat = 0.0 >>>>> for k=1:K >>>>> y_hat += w[k] * x[k,n] >>>>> end >>>>> >>>>> for k=1:K >>>>> w[k] += rate * (y[n] - y_hat) * x[k,n] >>>>> end >>>>> end >>>>> end >>>>> toc() >>>>> end >>>>> >>>>> Sorry for repeated posting, I did so to properly indent the code.. >>>>> >>>> >>> >
