Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Talk 7: Spenser Bauman #7

Open
rrnewton opened this issue Aug 20, 2015 · 62 comments
Open

Talk 7: Spenser Bauman #7

rrnewton opened this issue Aug 20, 2015 · 62 comments

Comments

@rrnewton
Copy link
Contributor

Practice talk -- 23:10 total time.

@ezyang
Copy link

ezyang commented Aug 21, 2015

"we could go the other direction": took me a moment to figure out what you meant here (this is the contract slide)

@cgswords
Copy link

  • What does for/sum do?
  • Remove 'background' slide. Put something better up there.

@cfbolz
Copy link

cfbolz commented Aug 21, 2015

Liked the motivation and introductory examples

@rrnewton
Copy link
Contributor Author

CEK machine slide rides the bottom of the slide closely -- it looks like a bit was cut off on our projector and you may have the same problem on other projectors.

@cgswords
Copy link

All of these slides, I think, with single words in the middle, should go away.

The CEK machine code is... lengthy. I don't think the full reduction semantics adds a ton.

@rrnewton
Copy link
Contributor Author

my 2 cents: I personally don't mind the one word slides... reminds of Matt Might's (and Lawrence Lessig's) minimal style.

@jasonhemann
Copy link

Also, Steve Jobs.

@cgswords
Copy link

Yeah, Jobs was my thought.

E: Spenser should just get a turtleneck?

@jasonhemann
Copy link

Some of the larger words seemed to cast a shadow behind them. If it's an artifact of the projector, then c'est la vie. If it's an on-purpose thing, then less shadow would be less distracting.

@ezyang
Copy link

ezyang commented Aug 21, 2015

Would me nice if there was some early capsule slide summarizing what interesting new things Pycket does, as opposed to existing JIT systems for other things. Obviously you need to setup some background but I'm still waiting!

@rrnewton
Copy link
Contributor Author

In the optimized dot code do we need to see all the other args to jump and label? Did you say what they are?

@cgswords
Copy link

I'd swap these bleeding reds for another color; at least something a little more subdued? Might have a bad projector at ICFP :/

@rrnewton
Copy link
Contributor Author

@jasonhemann -- yeah that's a projector thing -- look on the TV screen instead.

@ezyang
Copy link

ezyang commented Aug 21, 2015

(Interpreter-JIT Code-C Code) So, the diagram is confusing: the down arrows seem to be compile, but the leftright are "mode switching"?

@cfbolz
Copy link

cfbolz commented Aug 21, 2015

maybe call f and g something sensible, like loop and myadd

@cgswords
Copy link

Could you change the f/g to, say, the vector example from earlier? Something more concrete?

@jasonhemann
Copy link

It's a shame there's not a meaningful example that's no more complicated.

@ezyang
Copy link

ezyang commented Aug 21, 2015

It's hard to say what the "essential difficulty" of the example is, compared to Python

@cgswords
Copy link

"This method is easy to defeat" sounds like you're trying to prevent malicious behavior, not optimize normal code. Which you go back on with the contract thing, so maybe a better way to say this?

@ezyang
Copy link

ezyang commented Aug 21, 2015

I guess the essential difficulty is that we are not writing loops of imperative code, our loops are recursive calls of functions. (OK, finally got to this in "The Callgraph" slide)

@rrnewton
Copy link
Contributor Author

I thought there was supposed to be something about supporting more features than python -- call/cc and contracts. But I don't think that was emphasized yet.

@cfbolz
Copy link

cfbolz commented Aug 21, 2015

@ezyang yes

@ezyang
Copy link

ezyang commented Aug 21, 2015

Would be good if this was made clear earlier :)

@cfbolz
Copy link

cfbolz commented Aug 21, 2015

+1

@cfbolz
Copy link

cfbolz commented Aug 21, 2015

I wonder whether the whole two-state part is necessary in the talk. I think just describing the callgraph approach is enough, because it's intuitive and satisfying.

@cgswords
Copy link

Mentioning it in passing might be worthwhile, but yes, it seems the talk would stand fine without it (especially if it's a strategy typical to other rpython programs)

@cfbolz
Copy link

cfbolz commented Aug 21, 2015

no, it's not a common technique in rpython (most languages there are imperative and it's completely obvious where the loops are), but it's not a new technique in the tracing space.

@rrnewton
Copy link
Contributor Author

"Data structure Specialization" slide - at 16:30 minutes atm

@ezyang
Copy link

ezyang commented Aug 21, 2015

[Bolz 2013] want to list all authors right?

@cfbolz
Copy link

cfbolz commented Aug 21, 2015

In the FloatVectorStrategy picture I wonder whether the 2 should be 2.0, to make it clear that you can't really have ints in there. The paper may have the same problem, but too late for that.

@cfbolz
Copy link

cfbolz commented Aug 21, 2015

@rrnewton actually your talk reminded me a lot of the strategies approach: switch between different representations of a data structure depending on how the data structure is used.

@ezyang
Copy link

ezyang commented Aug 21, 2015

Shootout Benchmarks slide: the changing y-axis scale is confusing.

@rrnewton
Copy link
Contributor Author

"Shootout Becnhmarks" -- it doesn't say how many benchmarks this is taking the geomean over. Is this the same set that was on the previous slide? I wasn't paying good enough attention.

@cfbolz
Copy link

cfbolz commented Aug 21, 2015

@ezyang agreed, very confusing

@cgswords
Copy link

I think that was the 20-minute mark, we just got to contracts / chaperones

@cgswords
Copy link

Yeah changing the axes units for time comparison seems odd / confusing.

@rrnewton
Copy link
Contributor Author

I would nix "For reference".. it's great that it's 2X faster for all benchmarks though ;-).

@ezyang
Copy link

ezyang commented Aug 21, 2015

I missed why in "Benchmark: Contracts" there's a gap in the graph

@jasonhemann
Copy link

What's the gap in the middle about? For a second I thought it was a benchmark they both go really fast at.

@cgswords
Copy link

Thank you after the takeaways, not before.

@samth
Copy link

samth commented Aug 21, 2015

  • Take the victory lap about how it actually is fast on those examples.
  • Need to clarify what you're saying on the CEK slide.
  • Too much discussion of how meta-tracing works -- we just need to say that it does.
  • Figure out how you will indicate things on the screen when you aren't next to it.
  • Make sure to have citations w/ real author lists.
  • Using the term "recover performance" is not great.
  • Unboxing doesn't just help with numeric benchmarks.
  • Spend less time on the strategies slide.
  • Don't say "thank you" before the conclusions.

@ezyang
Copy link

ezyang commented Aug 21, 2015

"Virtually eliminate": but in the previous graph you did have a slow down when it was unspecialized?

@samth
Copy link

samth commented Aug 21, 2015

Total time: 23:10

@rrnewton
Copy link
Contributor Author

Oops, on the Y axis front... on "Benchmarks: Contracts" I lost track of what "slowdown" was -- percent or times?

@eholk
Copy link

eholk commented Aug 21, 2015

I like how you explained what the two graphs were showing on the shootouts benchmark. I wasn't sure what you meant by "despecialization" at first, but then it was clear.

End with "Thank you," not thank you and then a summary. Thank you serves as a clear signal to the audience to applaud.

@rrnewton
Copy link
Contributor Author

From Andre: how much of racket is implemented?

Spenser: covering FFI would be hard. Covered X/Y functions.

@cfbolz
Copy link

cfbolz commented Aug 21, 2015

from @rrnewton: why is this harder than PyPy? Python has lambda etc.

@ezyang
Copy link

ezyang commented Aug 21, 2015

samth's restatement of the Q (what does Pycket have which is novel); I would also ask, if you use a lot of lambdas in Python, would it slow down?

@samth
Copy link

samth commented Aug 21, 2015

Ryan: what's here that's not in python.

Need to sell the work much harder in response to this question.

@rrnewton
Copy link
Contributor Author

me: what do you give me over python?

spenser: get typed racket, macro system, ... racket may be easier to optimize...

Sam: rephrasing, what technology is here that's not in JITs for other languages (python, lua, Java, etc).

Spenser: here we apply this to a language without explicit loops.

LuaJit will detect any back-edge in a branch as a loop. (Does that then cover function calls? I guess so.)

@cfbolz
Copy link

cfbolz commented Aug 21, 2015

the part of the answer that's missing: Python does not do tail call optimization, so recursive functions in PyPy will not be compiled to loops.

@cgswords
Copy link

Ken is proposing

  • extra background: explain back edges, etc.
  • use pictures for the call graphs to help with the motivation / explanation
  • show expressions evaluated in a call graph
  • make a call graph example for the continuation discussion
  • make these graphs correspond to the code examples: which 'left parens' correspond to which nodes, etc.
  • which criteria give rise to which results on the examples

@cfbolz
Copy link

cfbolz commented Aug 21, 2015

could somebody write down Ken's question? I can't hear it on the microphone

@rrnewton
Copy link
Contributor Author

He's saying something about visualizing the callgraph... but I missed part of it because I went to get snacks ;-).

@cgswords
Copy link

I'm editing them into the comment above

@samth
Copy link

samth commented Aug 21, 2015

Feedback: @ccshan: had trouble understanding notions of loops. Terminology such as "back edge" confusing. Be more pictorial about the callgraph. append example has cycle in callgraph in CPS.

@cgswords
Copy link

@rrnewton wants to know "Which technology is new" -- and what about call/cc and contract optimizations? Hammering home that novelty is good.

@samth
Copy link

samth commented Aug 21, 2015

Feedback: @rrnewton: Hinted at the novelty of CEK. Also emphasize novelty of call/cc and contracts.

@vollmerm
Copy link

On the comparison with other Scheme compilers: is this an apples to apples comparison? Like, checking for fixnum overflow, checking bounds on vector references, etc? This is a bit tricky with Scheme compilers, since they don't agree on much.

@samth
Copy link

samth commented Aug 21, 2015

@vollmerm Yes, it basically is. Pycket doesn't handle Ctrl-C quite as well as the others, which is a little unfair, but that's it. Fixnums/vectors/etc are all the same.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants