Wednesday, December 18, 2013

This was my second time at PLDI and while I didn't have a talk this time around, I had a wonderful time connecting with friends and also building new collaborations.  

For example, I was able to chat with researchers of UW on the potential of an approximate computing workshop and express my support. And, just as of late, we found out that they have been able to make that possible.  I was also able to coordinate two visits to Microsoft Research within that week as a result of conversations I had in the "hallway" sessions.

As to the PLDI technical track, I particularly enjoyed Verifying Higher-order Programs with the Dijkstra Monad. I also enjoyed myself at the joint SRC and main track poster session. At the poster session,  I had great discussion with both the authors of Static Analysis for Probabilistic Programs: Inferring Whole Program Properties from Finitely Many Paths (main track) and Uncertain: Uncertain data as a first-order type  (SRC).

Until next year,
Mike

Tuesday, December 10, 2013

Reflecting on PLDI

This was my first time attending PLDI, and it was an extraordinary experience that I hope to be able to repeat again soon. I had a great time connecting with people and meeting new faces in between sessions and over dinner.

The sessions that left the biggest impact on me were toward the end of the program, possibly because my mind was much more relaxed after my SRC presentation:

  • Static Analysis for Probabilistic Programs: Inferring Whole Program Properties from Finitely Many Paths
  • A General Constraint-centric Scheduling Framework for Spatial Architectures
  • Halide: A Language and Compiler for Optimizing Parallelism, Locality and Recomputation in Image Processing Pipelines

Overall, the atmosphere was really inspiring and I gained a totally new perspective on a number of things. Hope to see everyone next year!

Thursday, December 5, 2013

I was presenting a paper about a static analysis to infer memory  ownership properties for C libraries at ISMM this year, co-located with PLDI.  Overall, I enjoyed the conference. Presenting is always fun, as is putting faces to all of the names you read about.  I just want to cover a few papers that stood out for me (in roughly chronological order):

One of my favorite papers was presented early: Scalable Variable and Data Type Detection in a Binary Rewriter (http://dl.acm.org/citation.cfm?id=2462165).  This work takes (stripped) x86 binaries and converts them into the LLVM IR with reasonable precision.  As the title hints, they recover many complex types, which is both impressive and necessary for many tools.  My own work is on the LLVM IR and having a tool like this would be very useful to let me apply my work to a wider range of inputs.  Not having perfect accuracy would probably be fine for many of my purposes, so this was an especially exciting piece of work for me.

Being mostly a software person, I learned a bit about different types of hardware, specifically memory that  deteriorates (http://dl.acm.org/citation.cfm?doid=2462156.2462171).

On the last day of PLDI, I was actually torn between the two post-lunch sessions.  I actually wanted to see all of the presentations from both sessions (one session was about Monads and FRP, while the other was about alias analysis).  Being a mostly functional programmer, I decided to go to the Monads and FRP session. I couldn't digest the whole thing during the presentation, but Monadic Abstract Interpreters (http://dl.acm.org/citation.cfm?id=2491979) seemed very elegant.  I'd like to spend some more time on that paper soon, actually.  That said, I was more immediately excited about Asynchronous Functional Reactive Programming for GUIs, otherwise known
as Elm (http://elm-lang.org/).  I've been vaguely familiar with FRP for a while, but this was a good presentation introducing it and actually demonstrating how to use it.  I find that most of the discussions of FRP assume you are already an expert, rendering them somewhat unapproachable.  I'm not directly interested in Elm itself, but I would very much like to try out an FRP library or two in Haskell.  A side project I am working on now should afford me the opportunity soon.

On the ISMM.  I am not really an expert on memory management, but I am interested in the topic, obviously.  I found myself nodding along with the keynote, which basically argued that sequential consistency (i.e., what most programmers who are not computer architects or compiler writers expect) does not need to be prohibitively expensive.  Maybe we will actually see sequential consistency in the wild one day.

My favorite paper in ISMM (besides mine, of course) was Control Theory for Principled Heap Sizing.  I know nothing about control theory and I have never implemented a garbage collector myself (though, like everyone, I have all sorts of opinions about what makes a good garbage collector).  I am not really qualified to evaluate the approach or results in the paper, but I really liked the connection between a well-known problem in Computer Science and a field of mathematics that I have never really seen before.  It makes a lot of sense to look to other fields for inspiration, especially since the programming languages and compiler communities do not often focus on this type of modeling.

Monday, July 15, 2013

Experience at PLDI'13

This was my first time to attend PLDI. I presented a paper entitled Steal Tree: Low-Overhead Tracing of Work Stealing Schedulers For me, attending PLDI and presenting my paper was a great experience and I felt the reception and atmosphere at PLDI was great. The poster that I presented along with my paper was a great addition; during the session many researchers approached me and I was able to explain the work in a personalized way.


Wednesday, July 10, 2013

PLDI Done.

Another great visit to PLDI.

I gave my talk in the morning of the first day.  I can't say how much that relaxed me for the rest of the conference.  It was great to talk with people between sessions or over dinner or drinks later in the evening.

I thought these talks were great,
  • Max Schäefer's talk Dynamic Determinacy Analysis [paper].
  • Sebastian Burckhardt's talk It's alive! continuous feedback in UI programming [paper].
  • Sriram Sankaranarayanan's talk Static analysis for probabilistic programs: inferring whole program properties from finitely many paths [paper].
  • Santosh Nagarakate's talk Formal verification of SSA-based optimizations for LLVM [paper].
  • Abhishek Udupa's talk TRANSIT: specifying protocols with concolic snippets [paper].
  •  
After talking about verified software with some very smart people, I'm inspired to learn Coq.  Good times.

Thursday, June 27, 2013

PLDI Wrap-Up

PLDI was awesome. I attended all three days of PLDI, most of the TAPAS and PASTE workshops, and a little bit of SOAP. I gave two talks on day two of PLDI; both went fairly well, which I was pleased about. I also gave a low-key lightning talk at PASTE, which was fun. Highlights from the week are numerous, but included:

- Fred Schneider's keynote on programming languages and security. I liked his way of thinking about security as pushing around trust. I think this is a very useful way to view things and it served as an excellent lens for explaining advances in security during his talk.

- Max Schaefer's "Dynamic Determinacy Analysis" talk. The talk was very-well presented and contained some clever ideas. The idea of a sound dynamic analysis seems crazy, but their trick of making the facts collected from the dynamic analysis so specific that they must be sound is quite nice. Looking forward to a careful reading of this paper.

- Xin Zhang's "Finding Optimum Abstractions in Parametric Dataflow Analysis" talk. I am only beginning to understand this work, but the idea of analyzing counterexample trace with a meta-analysis that contains predicates about the limitations of the abstraction in addition to the usual predicates about the property is cool. I'm hopeful that I can use some of these tricks in Thresher once I understand their work better.

- The poster session. Although my poster was in an out-of-the-way part of the conference room, I had an excellent group of visitors who were very patient and thoughtful. I got some good questions and feedback and really enjoyed being able to share my work one-on-one with some folks I had never met.

- Ranjit Jhala's PASTE keynote "Rebooting Type Systems With SMT". Although I am fairly familiar with the "liquid types" line of work, it was neat to see the essence of the work distilled into a short (hour-ish) talk. I'm always excited to see what these UCSD guys will come up with next.

All in all, PLDI was a great experience and I hope to be back next year!

Tuesday, June 25, 2013

Jacob Brock - PLDI Conclusion

I had a great time at the conference.  I caught the last day of PLDI on Wednesday, and then attended ISMM on Thursday and MSPC on Friday.  Here are a few of the presentations I found most interesting:

  • Quipper: A Scalable Quantum Programming Language (Green, et al.)
    • This work addresses the problem of forming a practical language for quantum computation, since the hardware interface is much different that in traditional computers.  After formulating the language, Green, et al. implement seven of the 45 quantum algorithms reported in S. Jordan's "Quantum Zoo".
  • Elephant Tracks: Portable Production of Complete and Precise GC Traces (Ricci, et al.)
    • Elephant Tracks produces traces of events related to garbage collection (such as object birth and death times) for Java programs.  It has already been a useful tool for Li, et al. of the University of Rochester (who presented at MSPC).
  • Introducing Kernel-Level Page Reuse for High Performance Computing (Valat, et al.)
    • Valat, et al. discovered that page zeroing is responsible for up to 40% of the page fault cost at operating system level.  To manage this cost, they proposed to use memory pools for each process so that free pages would be reused by the same process, allowing for less page zeroing.  For memory hungry parallel applications they managed to improve performance by up to 66%.
In addition, I had some good conversations that may help with my own research on cache sharing.  Elliot Moss recommended I look at his work on program profiling for GC to help me predict per-program cache usage, and Matt Davis shared some of his unpublished work and thoughts on cache optimization with me.

I am grateful for the opportunity to attend the conference!

Jake Brock