What could you do with a 'many-core' CPU
Larrabee is a coming Intel CPU that will have 16/24/32 real cores on one chip linked by high bandwidth ring bus.
It will have 32KB each of data and instruction L1 cache and 256KB L2 (per core). Each core can do hyperthreading and also access the main memory space
pretty much the same way that your dual/quad cpus do now.
It will be used initailly for graphics (they added very wide SIMD ALUs for pixel processing) but the cores are general purpose CPUs (you can run an OS on it) and can be used for other (supercomputer) type uses.
I have been considering what game uses something like this would have (obviously it could be used for physics) for both client and server.
AI requires alot of CPU resources, so its logical to try to apply many-core
to it. Such a CPU could simultaneously run many AI of the kind games currently use (FSM logic for behavior).
Larrabee is supposed to have very high bus bandwidth but trying to keep 32 cores going in a random data intensive application will probably not work efficiently. Minimizing data/code transfers using a VM that fits in 32k would alleviate the problem some (there is supposed to be special instruction to effect cache residency in Larrabee). Bytecode 'code' is more compact making it easier to fit in caches.
How small a VM could you make so that it fits in the L1 cache, yet still be useful for game scripting?? What features would you need in the VM to do all the common operations done in typical scripted logic ????
The CPU cores are not locked into a limited 'shader' operating mode instead can access the entire main memory when needed (prefereably not most of the time).
Could you do A* on non-trivial maps (fit in 256KB...) at least up to a certain size, but what size is that ????
For more heavyweight AI I think the random nature of access to much larger data sets would choke this kind of CPU (might even choke a quad..) But the games simulated have many simpler AIs which could be done (think of the MMORPG game servers who have to limit the NPCs leaving a pretty but largely unpopulated world). Better AI needs to be done for the 'significant' objects, but there
is plenty of 'dumber' objects that could be added to the simulation in larger numbers (including control of effects/mechanism/projectiles) which bottleneck
game servers today.
Having 'many-core' CPUs become common is years off. Similar issues do apply to 8-core CPUs, which Intel is planning to have in your consumer grade computers soon (look how fast quad-cores came into the mainstream).
--------------------------------------------[size="1"]Ratings are Opinion, not Fact
I have a quad core but mostly I just read the internet.
--- krez ([email="krez_AT_optonline_DOT_net"]krez_AT_optonline_DOT_net[/email])
http://www.go-parallel.com/?cid=DDJ_welcome
--------------------------------------------[size="1"]Ratings are Opinion, not Fact
Hmm I remember when legos were legos....
http://lejos.sourceforge.net/
Anyway one problem with trying to decide which features you want for your VM (and the language that will use it) is you see another feature that would be 'good' to have and after a while its grown more than you would want it too.
Specificly for game script for FSM based AI you would want switch statements for making the states work (I suppose you could do it with pointers to multiple 'state' functions ...)
Others:
Simple Arrays (or lists)
function calls (with params)
structs
for loops
sleep/wake mechanism
message passing
strings
...
All of course to fit in a 32KB L1 instruction cache
---------------------------------------------------------------------
tiny basic .... (you are old if you remember this)
http://www.ddj.com/web-development/184406381;jsessionid=ORHLR4KCGR13YQSNDLPSKH0CJUNN2JVN?_requestid=231442
http://lejos.sourceforge.net/
Anyway one problem with trying to decide which features you want for your VM (and the language that will use it) is you see another feature that would be 'good' to have and after a while its grown more than you would want it too.
Specificly for game script for FSM based AI you would want switch statements for making the states work (I suppose you could do it with pointers to multiple 'state' functions ...)
Others:
Simple Arrays (or lists)
function calls (with params)
structs
for loops
sleep/wake mechanism
message passing
strings
...
All of course to fit in a 32KB L1 instruction cache
---------------------------------------------------------------------
tiny basic .... (you are old if you remember this)
http://www.ddj.com/web-development/184406381;jsessionid=ORHLR4KCGR13YQSNDLPSKH0CJUNN2JVN?_requestid=231442
--------------------------------------------[size="1"]Ratings are Opinion, not Fact
FYI, Looks like not only is there a session on multi-threading in the AI Summit at GDC, there will be another one in the main conference.
Dave Mark - President and Lead Designer of Intrinsic Algorithm LLC
Professional consultant on game AI, mathematical modeling, simulation modeling
Co-founder and 10 year advisor of the GDC AI Summit
Author of the book, Behavioral Mathematics for Game AI
Blogs I write:
IA News - What's happening at IA | IA on AI - AI news and notes | Post-Play'em - Observations on AI of games I play
"Reducing the world to mathematical equations!"
Quote: Original post by krezThat's a great line. When we have 32 cores as standard I'm adapting it and stealing it as my signature.
I have a quad core but mostly I just read the internet.
www.simulatedmedicine.com - medical simulation software
Looking to find experienced Ogre & shader developers/artists. PM me or contact through website with a contact email address if interested.
I use multi-core machines to accelerate some parts of my data mining programs. I give a brief overview here:
Parallel Programming: A First Look (Nov-16-2008)
The basic idea of parallel programming is, after all, breaking up work to spread among multiple processors to speed things up. The trick is writing software to marry the problems you face with the particular parallel hardware you've got.
-Predictor
Data Mining in MATLAB
Parallel Programming: A First Look (Nov-16-2008)
The basic idea of parallel programming is, after all, breaking up work to spread among multiple processors to speed things up. The trick is writing software to marry the problems you face with the particular parallel hardware you've got.
-Predictor
Data Mining in MATLAB
It's amazing that individuals now will have access to as much computational power as was reserved for nations once, a small super computer on their desktop. If you throw in the GPUs and distributed computational systems like Seti@home and Folding@home, the access to computational power is enormous.
-ddn
-ddn
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement