wonks / ICFP_rehearsal_feedback

Temporary repository to collect feedback.
1 stars 2 forks source link

Talk 7: Spenser Bauman #7

Open rrnewton opened 8 years ago

rrnewton commented 8 years ago

Practice talk -- 23:10 total time.

ezyang commented 8 years ago

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

cgswords commented 8 years ago
cfbolz commented 8 years ago

Liked the motivation and introductory examples

rrnewton commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

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

jasonhemann commented 8 years ago

Also, Steve Jobs.

cgswords commented 8 years ago

Yeah, Jobs was my thought.

E: Spenser should just get a turtleneck?

jasonhemann commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

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

rrnewton commented 8 years ago

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

ezyang commented 8 years ago

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

cfbolz commented 8 years ago

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

cgswords commented 8 years ago

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

jasonhemann commented 8 years ago

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

ezyang commented 8 years ago

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

cgswords commented 8 years ago

"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 commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

@ezyang yes

ezyang commented 8 years ago

Would be good if this was made clear earlier :)

cfbolz commented 8 years ago

+1

cfbolz commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

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

ezyang commented 8 years ago

[Bolz 2013] want to list all authors right?

cfbolz commented 8 years ago

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.

rrnewton commented 8 years ago

For all the static-language fans that will be in the audience -- which of these goodies do they not achieve for free in a static language? Some of the contract checking? Bounds checking? A concrete example of this would be nice...

cgswords commented 8 years ago

More numbers or something on the axis of the benchmark might be nice? A faint grid maybe?

cfbolz commented 8 years ago

@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 commented 8 years ago

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

rrnewton commented 8 years ago

"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 commented 8 years ago

@ezyang agreed, very confusing

cgswords commented 8 years ago

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

cgswords commented 8 years ago

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

rrnewton commented 8 years ago

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

ezyang commented 8 years ago

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

jasonhemann commented 8 years ago

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

cgswords commented 8 years ago

Thank you after the takeaways, not before.

samth commented 8 years ago
ezyang commented 8 years ago

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

samth commented 8 years ago

Total time: 23:10

rrnewton commented 8 years ago

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

eholk commented 8 years ago

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 commented 8 years ago

From Andre: how much of racket is implemented?

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

cfbolz commented 8 years ago

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

ezyang commented 8 years ago

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?