Index

Show enters and exits. Hide enters and exits.

00:45:20boyscoutLet a SyntaxError raise out unwrapped - 6e2ab63 - Evan Phoenix
00:45:21boyscoutAdd UNIXSocket.pair - eb2a569 - Evan Phoenix
00:54:29boyscoutCI: rubinius: eb2a569 successful: 3441 files, 13538 examples, 41055 expectations, 0 failures, 0 errors
02:09:07boyscoutAdd -Xjit.sync, Inliner::fixnum_le, and self recursion cuteness - 5a39cd0 - Evan Phoenix
02:18:19boyscoutCI: rubinius: 5a39cd0 successful: 3441 files, 13538 examples, 41055 expectations, 0 failures, 0 errors
07:02:30dbussinkmorning :)
07:02:59dbussinkevan: any reason for adding fixnum_le specifically?
07:02:59dbussinkor just playing with it?
07:03:13evanspeeds it up.
07:03:27evaneventually i suspect we'll have all the fixnum ops specialized into the JIT
07:03:50dbussinkevan: shouldn't be that hard to add more i guess
07:03:54dbussinkeven i could do that :P
07:06:05evanyep
07:06:10evanthey all follow the same basically template
07:06:19evanin fact, i should probably refactor them to make it simpler.
07:06:52dbussinkevan: hmm, i just ran ./bin/rbx benchmark/rubinius/numerics/bm_fixnum.rb and there Fixnum <= seems slower than the rest
07:07:22dbussinkevan: https://gist.github.com/954d7a6aba73a74201fa
07:07:30dbussinkdunno if the benchmark is correct though
07:08:11evanstrange.
07:08:20evani don't really like those benchmarks
07:08:28evanthey do too much in one execution
07:08:39evanit's easy to flood the JIT and not see any results
07:08:46evani'd pull the <= one out
07:08:48evanrun it
07:08:53evanmaybe 5 times.
07:09:17evanthen go into inline_primitives.cpp
07:09:23evanand disable finding fixnum_le
07:09:27evancompile, run again.
07:09:38evanhere, i was running a simple fib benchmark
07:09:48evanthat change took it from 0.76 to 0.47
07:12:54dbussinkevan: that's why i asked whether the benchmark is really correct or not then :)
07:13:17evanit's only good, imho, as a 30,000ft view
07:13:36evansomething to say "oh, this is interesting, i'll check this one out specificly"
07:13:41evansomething else to try
07:13:44slavayo evan
07:13:45evanthe new -Xjit.sync option
07:13:55evanthat will disable background JIT compilation
07:14:17evanso that benchmarks should actually see their execution of JIT'd code.
07:14:27evanslava: hello sir.
07:14:40slavaevan: android is going to use a tracing jit
07:14:44slavais rbx next? haha
07:14:55evanhehe
07:15:04evani consider the current impl actually similar to tracing.
07:15:32evandid you see that in that video?
07:15:36evani was going to watch it tomorrow
07:16:07dbussinkevan: this benchmark also does Fixnum#<= with a float and bignum
07:16:13dbussinkevan: maybe those suffer from the optimization?
07:16:39evancould, yes.
07:17:01evanthe JIT inlining is biased toward Fixnum/Fixnum operations
07:17:24parndtbrixen: did you have any joy with hpricot?
07:17:35evanparndt: no, and there isn't likely to be any.
07:17:45evanwe'd have to make a number of changes to hpricot
07:17:57evani'd suggest you move to nokogiri
07:18:00parndtyeah, he mentioned he was going to take a look out of interest
07:18:02dbussinkevan: does seem to be actively maintained now at http://github.com/hpricot/hpricot
07:18:13parndtevan: but I'm thinking the same thing about moving to nokogiri ;)
07:18:18evandbussink: i asked nick, he's the maintainer
07:18:26dbussinkevan: when i only do fixnum <= fixnum the difference in the benchmark goes away
07:18:30evanhe's merged some patches, but it's basically at a full standstill.
07:18:31dbussinkevan: it's not faster either though
07:18:51evandbussink: try only doing <= and try using jit.sync
07:19:04evana 1s benchmark amid a see of other code is going to be noise.
07:19:18evan100% of those benchmarks, if they're going to be done together like that
07:19:24evanshould be at minumum 10s
07:19:50dbussinkyeah, i'm also doing more operations
07:19:55evansub-2s benchmarks should only be measure done standalone in a script
07:20:00evanpreferably using -Xjit.sync as well.
07:20:13evandbussink: even if there is no change
07:20:19evanthats a reason to leave the existing code in.
07:20:24evanbecause i have observed a change.
07:20:41evanparndt: you're better off moving to nokogiri.
07:21:00evanI simply don't have the time atm to rewrite some core parts of hpricot
07:21:04evanwhich is what is required.
07:21:15parndtI think that's the general move anyway
07:21:29evanok, i'm off to bed.
07:21:31parndtseeing as i doubt why's ever going to come back
07:21:31evannite everyone.
07:21:35parndtgoodnight :)
07:21:40dbussinkevan: nite!
07:21:49dbussinkevan: btw, when are you guys heading to baltimore?
07:21:59evani get in monday evening.
07:22:06evanbrixen might get in sunday evening
07:22:10evani'm not sure off hand.
07:22:15dbussinkah ok, i'm already leaving saturday
07:24:32dbussinkevan: running only <= does see improvements :)
07:24:36dbussinkevan: with larger numbers :)
07:24:40dbussinkevan: but good night :)
13:36:26Defilerevan: so, that article you wanted me to translate yesterday
13:37:10DefilerIf I'm thinking of the same sentence you quoted, it was basically "Check out this article from 2 years ago where I pointed out that rbx has a tough time with string concatenation performance"
13:37:26Defilerbut that it has certainly improved since then
13:38:25Defilerthat 1.0 is much faster than it was two years ago, and then he quotes you talking about the efforts spent improving it
18:44:46evanslava: poke
18:45:28evanthis dalvik JIT presentation is ok, but he's talking about features of tracing JITs that a method JIT can and does have.
18:45:43evanie, detecting cold code and bailing to the interpreter
18:45:45evanetc.
19:08:41boyscoutRemove buggy self recursion calling in the JIT - 70a7948 - Evan Phoenix
19:08:41boyscoutSimplify the Class#to_s of a metaclass (rails fix) - 4158e96 - Evan Phoenix
19:08:41boyscoutAllow Modules to be dup'd, but not String - 37cd66c - Evan Phoenix
19:16:50boyscoutCI: rubinius: 37cd66c successful: 3441 files, 13538 examples, 41055 expectations, 0 failures, 0 errors
19:18:02dbussinkevan: btw, why not the same approach for jitting those fixnum ops as the float ones?
19:18:08dbussinkevan: that's abstracted a bit too
19:18:16evanno reason
19:18:18evanjust haven't yet.
19:59:31dbussinkevan: does something like this make sense? https://gist.github.com/4ff757ab22ac92c447f5
20:15:49odyiHaving issues building rubinius on Ubuntu 10.04 x86_64. Build dies with http://pastebin.com/gaSrzBEn
20:16:01odyiHaven't been able to google a solution.
20:27:13dbussinkodyi: could you try with this gist? https://gist.github.com/52d7b943328f20e58024
20:39:43odyidbussink: compile looks to going further then before. I will let you know what the results are.
20:49:23odyidbussink: compile finished but the rubyspec tests failed. The irb shell does run though.
20:52:33dbussinkodyi: which specs?
21:15:19odyidbussink: stderr and stdout from the rake showing the failed tests. http://www.cat.pdx.edu/~ody/specout http://www.cat.pdx.edu/~ody/specerr
21:26:01dbussinkodyi: are you running as root?
21:26:18dbussinkodyi: the specs assume non root in places
21:26:36dbussinkbrixen: is clean runs as root something rubyspec (should) support?
21:27:06odyidbussink: Yes I noticed on that last run. I had started to compilation work as root because I was going to test it with the puppet daemon.
21:27:33dbussinkodyi: even then you don't need to compile as root though
21:27:42dbussinkodyi: but this shouldn't hold you back testing things
21:27:55odyiYeah was just my being lazy really.
21:28:07odyiis already rsyncing to his userdir.
21:28:40boyscoutUse error state for read / write and print out the message - 23fd0d9 - Dirkjan Bussink
21:28:45dbussinkodyi: there you go
21:29:20evanyeah, never compile as root
21:29:22evanas a rule.
21:29:30dbussinkevan: did you see my gist?
21:29:34evanno
21:29:46dbussinkevan: https://gist.github.com/4ff757ab22ac92c447f5
21:30:22dbussinkevan: jit stuff for the comparisons (generalized like for float stuff)
21:33:26evandbussink: cool, looks good.
21:34:08dbussinkevan: shall i commit this?
21:34:15evansure
21:35:11odyiThanks for the patch dbussink. Interested to see if this can be used to keep my puppetmaster from having to bend over backwards to serve my 200 nodes.
21:35:42boyscoutGeneralize jit generation for fixnum comparison operations - ba653f1 - Dirkjan Bussink
21:36:44boyscoutCI: rubinius: 23fd0d9 successful: 3441 files, 13538 examples, 41055 expectations, 0 failures, 0 errors
21:37:46evandbussink: did you see any bug with not checking read/write that your commit fixed?
21:38:01dbussinkevan: odyi reported it failed to compile for him
21:38:01evanie, did you fix them for completeness or because you saw a bug
21:38:06evanoh really?
21:38:11dbussinkevan: gcc complaining that return value wasn't used
21:38:13evanman g++ is so strange.
21:38:20dbussinkevan: so it's more a completeness fix
21:38:23evancomplain, don't complain; complain, don't complain.
21:38:25evanthats fine
21:38:26evanjust curious.
21:38:37dbussinkjust providing the information ;)
21:38:42evan:)
21:38:45slavaevan: you've got contributors hacking on your jit now? congrats
21:38:47evanso what day do you get in to baltimore?
21:38:53evanslava: thanks! yeah!
21:38:56dbussinkme? saturday
21:39:01evanok
21:39:06evanslava: so, i watched the android talk
21:39:17dbussinkprobably going to hang a bit there on monday and polish my talk :)
21:39:18evani don't feel like he did his researche on the method-at-a-time JIT
21:39:42slavaheh
21:39:48evanthat being said, did you see that the traces were only a couple of bytecodes? thats weird.
21:40:04evanhis complaint about MAAT compliing cold code is wrong.
21:40:17evanor rather, can easily be wrong.
21:40:22slavawell, your jit compiles all branches
21:40:23slavaor most of them
21:40:24slavaright?
21:40:37evanyeah, but it doesn't have to
21:40:56evani could easily see that a cache was never used and instead of contiuning to compile, bail back to the interpreter and ignore the rest of that branch
21:41:23evanthereby ignoring cold code beyond cold caches
21:41:31evanhotspot does that.
21:41:37slavaah
21:41:48evan'this branch is never taken, don't bother with it, just bail back to the interpreter if we get here'
21:41:58evanI should try that actually
21:45:00evanslava: anyway, did it seem like the dalvik traces were really short?
21:45:12slavatraces are always short aren't thye?
21:45:53evani figured they be longer than 2 or 3 bytecodes
21:46:02evanwhich is what some of the stats they showed had them at
21:46:02slavamaybe its because they were just examples?
21:46:08evancould be.
21:46:16evansince tehy said that they don't do method inlining
21:46:27evanthat tells me that their traces don't go between methods
21:47:02slavaits the opposite
21:47:05slavatraces don't have subroutine calls
21:47:07slavaeverything is inlined
21:47:28evanright, but i think that hitting a invoke instruction must terminate a trace
21:47:39evanor the trace contains a call itself
21:47:46evanbecause they said they don't inline methods.
21:48:04evani could be wrong, maybe their slides are just confusing.
21:50:59evanrunning the specs, there are 1159 cold/frozen caches seen by the JIT
21:51:11evanmeaning inline caches that have never been used
21:51:32evanlet me print out how many caches are seen total
21:55:31evanwow
21:55:40evanonly 3339 caches seen
21:55:48evanso a lot of them are cold.
21:56:04evani really should bail back to the interpreter rather than keep compiling them.
21:56:26slavayeah
23:55:46brixenevan: what version of gcc do you use on snow leopard
23:55:50brixen?
23:56:01evani686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5659)
23:56:08brixenhmm, ok
23:56:15evan4.0 is available too
23:56:19evanas g++-4.0
23:56:29brixenand you are using the prebuilt for snow leopard?
23:57:04brixenor your own llvm src build?
23:57:23evanprebuilt.
23:57:25brixenk
23:57:40evani have a seperate clone that I test LLVM with
23:57:50evani don't use my own normally because I want to see what everyone else does
23:57:51brixenhm, ok
23:58:43evanwhy?
23:58:48brixensec..
23:58:50evani'm prepping 1.0.1
23:58:50brixenbuild issue
23:58:52evanbtw.
23:58:55brixenah ok
23:59:01evanif you have something
23:59:02evanspeak now.
23:59:18brixenk
23:59:45brixenjvoorhis will have a gist for you
23:59:55evanI await his gist.