I actually have a lot of experience with multicore programming. The eventual plan is actually to have DB3 utilize GPGPUs using OpenCL. The main computation cost is DNA execution, physics constraint solving, and bot vision. And the latter two are really well suited to GPGPU style coding. Which means DB3 will not only be using multiple cores but using the graphics card for computation, too. Or even something like the
Intel MIC when it's out. For DNA execution, I think it should be possible to have it compile in to CIL, which means it could be JITed and run as fast as native code. And then I could of course split up the DNA execution on to a bunch of different worker threads.
All that said, the initial version will be largely single threaded just because it doesn't make sense to put the time investment in to performance until you have a program actually running
I'll use a few different threads for things like keeping the UI response, though, so it'll still run faster on dual cores than single cores.
The super far off eventual goal is that I'll buy a bunch of GPGPU servers and run a server farm for Darwinbots for internet mode. Either that or a connected zerobot sim. And people could connect remotely and watch the sim going on from their computers. It should be possible to get a few 1 TFLOP computers by the time I'd want them, which would let Darwinbots run at real time (60-100 FPS) or faster with 1000+ bots. Which would be pretty cool.