Efficiency concerning thread granularity

Posted by MaelmDev on Game Development See other posts from Game Development or by MaelmDev
Published on 2012-12-11T19:34:40Z Indexed on 2012/12/11 23:15 UTC
Read the original article Hit count: 310

Lately, I've been thinking of ways to use multithreading to improve the speed of different parts of a game engine. What confuses me is the appropriate granularity of threads, especially when dealing with single-instruction-multiple-data (SIMD) tasks.

Let's use line-of-sight detection as an example. Each AI actor must be able to detect objects of interest around them and mark them. There are three basic ways to go about this with multithreading:

  1. Don't use threading at all.
  2. Create a thread for each actor.
  3. Create a thread for each actor-object combination.

Option 1 is obviously going to be the least efficient method. However, choosing between the next two options is more difficult. Only using one thread per actor is still running through every object in series instead of in parallel. However, are CPU's able to create and join threads in the granularity posed in Option 3 efficiently? It seems like that many calls to the OS could be really slow, and varying enormously between different hardware.

© Game Development or respective owner

Related posts about engine

Related posts about architecture