Author's Blogs

nulstein v2 plog - DX9 performance
By jerome-muffat-meridol (Intel) Posted on 12/10/10 2
(note: this is slide 22 of the nulstein plog) The v1 of nulstein was running on DX9 and only rendered a bunch of untextured cubes, it was much simpler than this version, and it is interesting to look at its performance precisely because it is so basic. We can see three types of situations: eig...
nulstein v2 plog - rendering overview
By jerome-muffat-meridol (Intel) Posted on 11/26/10 7
(note: this is slide 20 of the nulstein plog) Once we have an up to date world, we move on to rendering it. Let's start by looking at how I attacked the problem for DX9, in the previous version of nulstein. In this context, all draw calls, all render state changes, everything needs to be submitt...
nulstein v2 plog - parallel update recap
By jerome-muffat-meridol (Intel) Posted on 11/23/10 0
(note: this is slide 19 of the nulstein plog) Long time between the last post and this one, there's been vacation followed by a long trip in the US to meet up with people doing the same kind of job as mine, share experiences, ideas and projects. People have been planting all sorts of clever idea...
nulstein v2 plog - two-stage update step-by-step
By jerome-muffat-meridol (Intel) Posted on 10/11/10 0
(note: this is slide 13-18 of the nulstein plog) Today's post is a bit awkward as the slides below are meant to work as an animated sequence... I'm going back to my sample with thousands of cubes, accompanied by thousands of lights, with a few thousands UFOs thrown in for good measure and we ar...
nulstein v2 plog - dealing with dependencies between game objects
By jerome-muffat-meridol (Intel) Posted on 10/05/10 0
note: this is slide 12 of the nulstein plog) Last time, we saw how splitting the update in a Read-Only phase and a Write-Only phase could allow us to update all entities simultaneously without worrying about contention. In the meantime, I've been a little busy and, among other things, I helped m...
nulstein v2 plog - two-phase update
By jerome-muffat-meridol (Intel) Posted on 09/24/10 1
(note: this is slide 11 of the nulstein plog) The big idea behind the update in nulstein is to split it in two phases, one that is read-only and one that is write-only : Step 1: loop on all entities, in parallel, and let them collect information Step 2: loop on all entities, in parallel, and l...
nulstein v2 plog - parallelizing at the outer loop
By jerome-muffat-meridol (Intel) Posted on 09/20/10 2
(note: this is slide 10 of the nulstein plog) The traditional approach to tuning code is to look for hot spots and squeeze them. It usually turns out to be the inner loop of some iterative process: loops or recursions. Parallelizing code is the contrary: looking for large iterations and breaking...
nulstein v2 plog - refresher on task scheduling, when the fairest is theft
By jerome-muffat-meridol (Intel) Posted on 09/16/10 2
(note: this is slide 9 of the nulstein plog) Last time, we saw it makes sense for each worker thread to have its own TODO list, so it can pick from and add to it without bothering its neighbours. We also saw that, because we can't tell how long each individual task will take to run, we need some...
nulstein v2 plog - refresher on task scheduling
By jerome-muffat-meridol (Intel) Posted on 09/13/10 6
(note: this is slide 8 of the nulstein plog) At the heart of nulstein in particular and, really, at the heart of any multicore piece of software, is a mechanism to dispatch work. Before we worry about when or how each piece of work can or can't access data, we need to figure out how to get every...
nulstein v2 plog - demoscene roots
By jerome-muffat-meridol (Intel) Posted on 09/09/10 0
(note: this is slide 7 of the nulstein plog) After seeing the demo, it is time to start over again, in more details. Let's see how this all started, I believe that beginnings are not just defining moments, they also are milestones in life: a beginning is an impulsion, the transition from potenti...