User loginNavigation |
ImplementationThe Transactional Memory / Garbage Collection AnalogyCourtesy of my shiny new commute, I have been listing to various podcasts, including Software Engineering Radio. A while back, they had an interview with Dan Grossman on his OOPSLA 2007 paper, which I have not seen discussed here. The Transactional Memory / Garbage Collection Analogy is an essay comparing transactional memory with garbage collection based on the analogy:
Grossman presents the analogy as a word-for-word transliteration of a discussion of each of the technologies. (Hence the "fun" category.) (As an aside, Grossman does not address message-passing, but says, One point that he does make is that
The one serious weakness of the analogy, to me, is that GC does not require (much) programmer input to work, while TM does. Although some parts of the analogy are strained, there are some interesting correspondences. By Tommy McGuire at 2008-09-17 15:37 | Fun | Implementation | Parallel/Distributed | 15 comments | other blogs | 15791 reads
Google V8 JavaScript EngineYou can read the docs and download the C++ source here. V8 is supposedly the main added value of Chrome, the newly announced Google browser. Our discussion of the Chrome announcement enumerates some of the features of V8. By Ehud Lamm at 2008-09-03 01:25 | Cross language runtimes | Implementation | Javascript | 44 comments | other blogs | 27984 reads
Closures for CChris Lattner's post last week to cfe-dev, "Blocks" in Clang (aka closures), has generated a certain amount of enthusiasm, since Clang is, or will be, a compiler for C to LLVM (cf. LLVM 1.5 has been released!). The representation of closures as blocks resembles the technique used for Poletto's 'C language; cf. the related discussion on The MetaC Language. Continuation Fest 2008I had received the announcement for the Continuation Fest 2008, but then completely forgot about it. Back in mid-April, some neat stuff was going on in Tokyo:
[Edit: fixed url.] By Tommy McGuire at 2008-08-13 15:19 | General | Implementation | 4 comments | other blogs | 9904 reads
Catch me if you can: Towards type-safe, hierarchical, lightweight, polymorphic and efficient error management in OCamlCatch me if you can: Towards type-safe, hierarchical, lightweight, polymorphic and efficient error management in OCaml, by David Teller, Arnaud Spiwack, Till Varoquaux:
Exhaustively checked, user-friendly exception handling was a bit of an open problem for awhile. As the paper details, languages supported either cumbersome, exhaustively checked polymorphic exceptions, as in Haskell, or we had unchecked easily extensible monomorphic exceptions, as in ML, or we had checked, extensible exceptions using a universal type as in Java. Supporting exhaustively checked, easily extensible polymorphic exceptions seemed quite a challenge, which this paper solves using monadic error handling and nested polymorphic variants. The paper also gives a good overview of current techniques of exception checking in OCaml, ie. ocamlexc. The performance of such exceptions is understandably lower than native exceptions, given all the thunking and indirection that monads entail. The authors attempt various implementations and test their performance against native exceptions. Ultimately, monadic error management seems acceptable for actual error handling, but not for control flow as native exceptions are sometimes used in OCaml. One interesting extension is to consider how efficient the implementations would be given more sophisticated control flow operators, such as continuations, coroutines, or delimited continuations, or whether native exceptions can be salvaged using a type and effects system in place of monads. By naasking at 2008-07-11 15:16 | Functional | Implementation | Software Engineering | 12 comments | other blogs | 21589 reads
Hardware Acceleration of Matrix Multiplication on a Xilinx FPGAvia Jeff Newbern in the discussion forum comes the writeup from the winning entry in the MEMOCODE 2007 contest:
Wow! This is much cooler than the kinds of programs I write :-) This MIT/Bluespec team won the first contest at MEMOCODE 2007 and the second in MEMOCODE 2008. The results for 2008 are very interesting: The Bluespec team had the highest performance by an order of magnitude, the next fastest program was written by one guy in straight C without using the FPGA, and the rest were mostly in a hybrid of C and (V?)HDL. Does this make Bluespec the programming tool of choice for discriminating hardware hackers? Project Coverage
Pure imperative programmingTwo intensively studied intermediate representations in compiler theory are Static Single Assignment form (SSA) and CPS translations, and Richard Kelsey's 1995 paper, A Correspondence Between Continuation Passing Style and Static Single Assignment Form (.ps.gz) shows a nearly complete, exact equivalence between the two IRs. The correspondence shows how the imperatively expressed SSA can be regarded as side-effect free, and Andrew Appel has pushed this idea to claim that SSA is functional programming. This result is of clear relevance to discussions turning on "what is purity?", such as here. As an aside, the Wikipedia article Static Single Assignment form is rather good. By Charles Stewart at 2008-06-20 09:56 | Implementation | Theory | 10 comments | other blogs | 19561 reads
Parametric Higher-Order Abstract Syntax for Mechanized SemanticsParametric Higher-Order Abstract Syntax for Mechanized Semantics
I was aware of this some months ago now, but held back commenting on it at Adam's request until it had been accepted for publication, which it now apparently has. This is (one element of) Adam's continued work on LambdaTamer, his Coq-based environment for building certified compilers. There is a new version of LambdaTamer using this parametric higher-order abstract syntax approach. The new version also works in current and future versions of Coq, unlike the previous version. Finally, Adam is apparently working on a paper regarding "type-theoretic denotational semantics for higher order, impure object languages" and is post-docing with Greg Morrisett. The relationship between Adam's work and the YNot project is a bit unclear to me; perhaps either Adam or Greg could help clarify that. Update: Whoops. I got ahead of myself and neglected to notice that the paper is not actually yet available, although the new version of LambdaTamer is. So at the moment, this story is merely to note that the paper exists and to provide a link to the new LambdaTamer. My apologies to Adam and the LtU readership. 2nd Update: The paper is now available at the link, in either PostScript or PDF form. By Paul Snively at 2008-06-16 15:44 | Functional | Implementation | Type Theory | 1 comment | other blogs | 17638 reads
Automatic Generation of Peephole SuperoptimizersAutomatic Generation of Peephole Superoptimizers, Sorav Bansal and Alex Aiken, ASPLOS 2006.
It's always fun to see a method that ought to be intractable rendered tractable through a combination of cleverness and strategically applied brute force. I found their performance measurements suggestive but perplexing. Their results on their kernels are really astoundingly good, which they claim that is because they make use of the x86's SIMD instructions. But there is very little change in the SPEC benchmarks, and they subsequently suggest that their peephole optimizer catches many things that other compilers get via dataflow optimization. As a result, I don't feel like I have a clear picture of what their optimizer does and doesn't do, or where it does and doesn't overlaps with existing optimizations. But they definitely have enough to convince me that this is worth further study, so I really hope Bonsal and Aiken publish some more about this -- a tech report or journal paper with more systematic measurements and in-depth analysis would be really illuminating. |
Browse archives
Active forum topics |
Recent comments
1 week 2 days ago
1 week 3 days ago
13 weeks 3 days ago
13 weeks 4 days ago
13 weeks 5 days ago
13 weeks 5 days ago
14 weeks 3 days ago
14 weeks 3 days ago
14 weeks 3 days ago
17 weeks 4 days ago