Recent Posts

Pages: 1 ... 8 9 [10]
Suggestions / Re: GPGPU acceleration?
« Last post by Botsareus on April 28, 2017, 06:03:33 AM »
We need better designed hardware is what we need.  :P
Suggestions / Re: GPGPU acceleration?
« Last post by Numsgil on April 28, 2017, 05:58:10 AM »
Problem is GPUs only benefit when they can do the same operation (add, multiply, etc.) in parallel.  Even if you put the DNA on the GPUs somehow, you still can't execute more than one DNA program at a time.

It's a problem of SIMD vs. MIMD.  GPUs need SIMD to overcome the additional cost of transferring the data to/from the GPU and starting up a processing batch, but most of Darwinbots is either SISD or MIMD.  The DNA execution is MIMD, certainly.  The physics has passes of MIMD but then everything bottlenecks in places through a SISD section.  In that sort of problem, CPUs are still king.
Darwinbots3 / Re: Bot testbed
« Last post by Botsareus on April 28, 2017, 05:50:19 AM »
I like the idea of using multiples for memory range, basing it from days in year aka about 360 is not a bad idea. However, we need to consider what other values stuff will return and incorporate the prime numbers from these into it. That is why I prefer to go with large ranges with stuff like this. In my experiments I always go with longs actually even though I do not need them.
Darwinbots3 / Re: Bot testbed
« Last post by Billy on April 27, 2017, 06:56:20 PM »
Mine is more concise though!

I think it was when I was fiddling with the number on the last line that is now 30, I can't seem to reproduce it now unfortunately.
Suggestions / Re: GPGPU acceleration?
« Last post by Billy on April 27, 2017, 06:40:37 PM »
Couldn't kernels read tokenised DNA code from one buffer, memlocs from another, and interpret the DNA? Writing the new memloc values to a third buffer, perhaps. There is a lot of branching, which would reduce the benefit from SIMD processors, but maybe this could be reduced by grouping similar bots. Most bots spend the vast majority of their time doing one thing, from my experience (at least in evosims), like searching or spinning, so this might just work.
Darwinbots3 / Re: Bot testbed
« Last post by Numsgil on April 27, 2017, 05:29:36 PM »
Looks good but I think shadowgod still has you beat :)

If you can figure out under which circumstances it bugs out that would be good.  It's possible it's a bug in the program that I should fix.
Suggestions / Re: GPGPU acceleration?
« Last post by Numsgil on April 27, 2017, 05:16:27 PM »
Executing the DNA isn't really well suited for GPUs, unfortunately, since each bot has to run its own DNA on its own data.  Getting the physics to execute on GPUs is possible in principle but rarely done in practice.  Probably only shots are really suited for GPU calculations, but we just don't have enough shots in a typical sim to outweigh the upfront CPU cost of transferring things to/from the GPU.
Suggestions / GPGPU acceleration?
« Last post by Billy on April 27, 2017, 10:04:56 AM »
I know it's pain to get working, but a simulation with many bots seems like an ideal problem for opencl or similar. One job for each bot, and perhaps even grouping similar bots into warps for SIMD execution on Nvidia chips. You wouldn't necessarily have to move much data between main memory and GPU memory if you don't need to observe the simulation in real time.

I've only dabbled with GPU programming though (circle detection in images), so maybe it's not as well suited as it seems. I am aware that it would take a lot of effort to port all of the DB simulation code to opencl, what with the physics, DNA interpretation, reproduction mutation... Maybe I'll try making something similar from scratch over the summer, specifically geared towards GPGPU execution.
Darwinbots3 / Re: Bot testbed
« Last post by Billy on April 27, 2017, 09:44:36 AM »
Nice work, Nums! Took you long enough :P

Here's a quick 'swimmer' I threw together:

Code: [Select]
const myage 360
{ *myage 1 add myage store } call
//{ 0 myage store } call
*numspindles { dup *numspindles 2 div sub abs     *myage *numspindles 2 div mod sub abs 30 mul 100 swap sub 1000 add   swap store } loop

Sometimes it bugs out and you have to uncomment the line and recomment it to make it work.
I suspect PHP.
Though, I'm just too out of touch with web programming and haven't ever properly done PHP. You'd have to check really.

If we get a proper web programmer down here, it'd be nice to have an internet page where we can see what's happening on an internet sim.
Pages: 1 ... 8 9 [10]