Cliff Click - April 3rd, 2008
... the current (and future!) crop of machines. "Yeah, yeah, yeah," I hear you say, "tell me something new". Instead I'm going to tell you something olde.
Cliff Click - March 7th, 2008
I ran across this article, http://www.javaspecialists.eu/archive/Issue157.htmland since Heinz is a friend I thought I'd try to figure out what's going on. Here's what I came up with: There are 3 or 4 conflicting effects and which one dominates at any point in time "depends". All of the effects can be removed with some care.
Cliff Click - February 12th, 2008
Been busy this month getting talks together.
Cliff Click - January 12th, 2008
I Hate Makfiles....
Cliff Click - January 7th, 2008
I went to the winter meeting of DaCapo, a small group of senior academics and industrial scientists mostly focussed on GC & Memory-related issues (but with fairly wide interests). Much of the work is not yet published; work-in-progress stuff (lack of rigorous experiments, or badly broken implementations, or Big-Ideas-No-Code state, etc). So I won't repeat what I saw here directly, contact the authors directly if you're interested in something. The DaCapo
Cliff Click - December 12th, 2007
I've been busy at work, but it's been awhile so I've got a collection of odds-n-ends I've been meaning to write up: Bandwidth: 70Gb/sec A 768-way Azul (7280 box) gets 70Gb/sec of throughput as measured with a multi-threaded pure Java version of the infamous STREAM benchmark. Not official (since it's neither C nor FORTRAN!), so don't quote me on this but it does put our gear in the top-20 highest-bandwidth supercomputers.
Cliff Click - November 6th, 2007
There's this evil bit of the JDK involving NIO, where deep in the inner loop of a per-byte copy there's a virtual call: ByteBuffer bb = ...;for( int i=0; i<N; i++ ) buf[i] = bb.get(i); No problemo, the JIT will inline the single target, right?Suppose the abstract class ByteBuffer has a single implementing class called DirectByteBuffer (via the abstract class MappedByteBuffer). Then the JVM can prove that any ByteBuffer must be an instance of a DirectByteBuffer (please pardon my not-quite-exact translation to java-pseudo-code):
Cliff Click - September 13th, 2007
I like the notion of using arrays to hold collections (efficiency (really cool paper), ease of access), but how do you incrementally migrate a collection from one array to another without blocking? By it's nature, you can't atomically update the entire array at one go. By the nature of concurrency, there can always be a 'late arriving writer' who wants to update the old array and isn't aware that a migration is in progress. If you let the
Cliff Click - August 30th, 2007
Came across this surprise while working on a customer app.
Cliff Click - August 19th, 2007
One of the more exciting trends in multi-core memory is the idea of Transactional Memory: memory which commits all of it's state-changes atomically or not at all! This idea is very powerful for coding concurrent algorithms, as it means a whole set of updates happen atomically. Azul Systems felt this idea had so much merit that we included some Hardware Transactional Memory (HTM) support (as opposed to