Ah. We'll look into running several clojures in one JVM too. Thanks. On Thu, Dec 13, 2012 at 1:41 PM, Wm. Josiah Erikson <wmjos...@gmail.com>wrote:
> OK, I did something a little bit different, but I think it proves the same > thing we were shooting for. > > On a 48-way 4 x Opteron 6168 with 32GB of RAM. This is Tom's "Bowling" > benchmark: > > 1: multithreaded. Average of 10 runs: 14:00.9 > 2. singlethreaded. Average of 10 runs: 23:35.3 > 3. singlethreaded, 8 simultaneous copies. Average run time of said > concurrently running copies: 23:31.5 > > So we see a speedup of less than 2x running multithreaded in a single JVM > instance. By contrast, running 8 simultaneous copies in 8 separate JVM's > gives us a perfect 8 x speedup over running a single instance of the same > singlethreaded benchmark. This proves pretty conclusively that it's not a > hardware limitation, it seems to me.... unless the problem is that it's > trying to spawn 48 threads, and that creates contention. > > I don't think so though, because on an 8-way FX-8120 with 16GB of RAM, we > see a very similar lack of speedup going from singlethreaded to > multithreaded (and it will only be trying to use 8 threads, right?), and > then we see a much better speedup (around 4x - we're doing 8 times the work > in twice the amount of time) going to 8 concurrent copies of the same thing > in separate JVM's (even though I had to decrease RAM usage on the 8 > concurrent copies to avoid swapping, thereby possibly slowing this down a > bit): > 1. 9:00.6 > 2. 14:15.6 > 3. 27:35.1 > > We're probably getting a better speedup with the concurrent copies on the > 48-way node because of higher memory bandwidth, bigger caches (and more of > them), and more memory. > > Does this help? Should I do something else as well? I'm curious to try > running like, say 16 concurrent copies on the 48-way node.... > > > -Josiah > > On Wed, Dec 12, 2012 at 10:03 AM, Andy Fingerhut <andy.finger...@gmail.com > > wrote: > >> Lee: >> >> I believe you said that with your benchmarking code achieved good speedup >> when run as separate JVMs that were each running a single thread, even >> before making the changes to the implementation of reverse found by >> Marshall. I confirmed that on my own machine as well. >> >> Have you tried running your real application in a single thread in a JVM, >> and then run multiple JVMs in parallel, to see if there is any speedup? If >> so, that would again help determine whether it is multiple threads in a >> single JVM causing the slowdown, or something to do with the hardware or OS >> that is the limiting factor. >> >> Andy >> >> >> On Dec 11, 2012, at 4:37 PM, Lee Spector wrote: >> >> > >> > On Dec 11, 2012, at 1:06 PM, Marshall Bockrath-Vandegrift wrote: >> >> So I think if you replace your calls to `reverse` and any `conj` loops >> >> you have in your own code, you should see a perfectly reasonable >> >> speedup. >> > >> > Tantalizing, but on investigation I see that our real application >> actually does very little explicitly with reverse or conj, and I don't >> actually think that we're getting reasonable speedups (which is what led me >> to try that benchmark). So while I'm not sure of the source of the problem >> in our application I think there can be a problem even if one avoids direct >> calls to reverse and conj. Andy's recent tests also seem to confirm this. >> > >> > BTW benchmarking our real application ( >> https://github.com/lspector/Clojush) is a bit tricky because it's >> riddled with random number generator calls that can have big effects, but >> we're going to look into working around that. Recent postings re: seedable >> RNGs may help, although changing all of the RNG code may be a little >> involved because we use thread-local RNGs (to avoid contention and get good >> multicore speedups... we thought!). >> > >> > -Lee >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> > > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en